# Table of Contents
- [Unknown](#unknown)
- [Guide e risorse per sviluppatori - Creare Videogiochi](#guide-e-risorse-per-sviluppatori-creare-videogiochi)
- [Lista Giochi Indie - Creare Videogiochi](#lista-giochi-indie-creare-videogiochi)
- [Risorse Esterne - Creare Videogiochi](#risorse-esterne-creare-videogiochi)
- [Plastic SCM Archivi - Creare Videogiochi](#plastic-scm-archivi-creare-videogiochi)
- [iOS Archivi - Creare Videogiochi](#ios-archivi-creare-videogiochi)
- [Tutto quello che c'è da sapere su Kickstarter - Creare Videogiochi](#tutto-quello-che-c-da-sapere-su-kickstarter-creare-videogiochi)
- [Android Archivi - Creare Videogiochi](#android-archivi-creare-videogiochi)
- [Realtà Virtuale Archivi - Creare Videogiochi](#realt-virtuale-archivi-creare-videogiochi)
- [Social Media Archivi - Creare Videogiochi](#social-media-archivi-creare-videogiochi)
- [Steam Archivi - Creare Videogiochi](#steam-archivi-creare-videogiochi)
- [Curiosità Archivi - Creare Videogiochi](#curiosit-archivi-creare-videogiochi)
- [Glossario Archivi - Creare Videogiochi](#glossario-archivi-creare-videogiochi)
- [Libri e eBook per sviluppatori - Creare Videogiochi](#libri-e-ebook-per-sviluppatori-creare-videogiochi)
- [Risoluzione di errori Archivi - Creare Videogiochi](#risoluzione-di-errori-archivi-creare-videogiochi)
- [Marketing per sviluppatori indie - Creare Videogiochi](#marketing-per-sviluppatori-indie-creare-videogiochi)
- [Redazione Archivi - Creare Videogiochi](#redazione-archivi-creare-videogiochi)
- [Risorse Archivi - Creare Videogiochi](#risorse-archivi-creare-videogiochi)
- [Guide Archivi - Creare Videogiochi](#guide-archivi-creare-videogiochi)
- [Guide e tutorials in italiano per sviluppare videogiochi in Unity - Creare Videogiochi](#guide-e-tutorials-in-italiano-per-sviluppare-videogiochi-in-unity-creare-videogiochi)
- [Daniele Ferla, Autore presso Creare Videogiochi](#daniele-ferla-autore-presso-creare-videogiochi)
- [Footer Default - Creare Videogiochi](#footer-default-creare-videogiochi)
- [Perchè usare Mathf.Lerp in Unity - Creare Videogiochi](#perch-usare-mathf-lerp-in-unity-creare-videogiochi)
- [Password persa ‹ Creare Videogiochi — WordPress](#password-persa-creare-videogiochi-wordpress)
- [Perchè usare Time.deltaTime in Unity - Creare Videogiochi](#perch-usare-time-deltatime-in-unity-creare-videogiochi)
- [Differenze prestazionali tra InvokeRepeating e StartCoroutine in Unity - Creare Videogiochi](#differenze-prestazionali-tra-invokerepeating-e-startcoroutine-in-unity-creare-videogiochi)
- [Abilitare l’autocomplete(intellisense) per Visual Studio in Unity 3D - Creare Videogiochi](#abilitare-l-autocomplete-intellisense-per-visual-studio-in-unity-3d-creare-videogiochi)
- [Awake e Start di Unity spiegati facile - Creare Videogiochi](#awake-e-start-di-unity-spiegati-facile-creare-videogiochi)
- [Come registrare un video, una sequenza o una GIF del Game Mode di Unity - Creare Videogiochi](#come-registrare-un-video-una-sequenza-o-una-gif-del-game-mode-di-unity-creare-videogiochi)
- [Come risolvere l'errore "Failed to load window layout" in Unity - Creare Videogiochi](#come-risolvere-l-errore-failed-to-load-window-layout-in-unity-creare-videogiochi)
- [Come risolvere l'errore "TLS Allocator ALLOC_TEMP_THREAD, underlying allocator ALLOC_TEMP_THREAD has unfreed allocations" in Unity - Creare Videogiochi](#come-risolvere-l-errore-tls-allocator-alloc-temp-thread-underlying-allocator-alloc-temp-thread-has-unfreed-allocations-in-unity-creare-videogiochi)
- [Nasce il portale 'Creare Videogiochi' - Creare Videogiochi](#nasce-il-portale-creare-videogiochi-creare-videogiochi)
- [Nebbia volumetrica semplice in Unity - Creare Videogiochi](#nebbia-volumetrica-semplice-in-unity-creare-videogiochi)
- [Game Development Patterns with Unity 2021 - Creare Videogiochi](#game-development-patterns-with-unity-2021-creare-videogiochi)
- [Impostare la RemoteLoadPath dinamicamente da script in Addressables di Unity - Creare Videogiochi](#impostare-la-remoteloadpath-dinamicamente-da-script-in-addressables-di-unity-creare-videogiochi)
- [UNYC# - Unity e C# da zero - Creare Videogiochi](#unyc-unity-e-c-da-zero-creare-videogiochi)
- [Realtà aumentata per il marketing - Metodi disruptive e phygital experience per unire il mondo fisico e digitale - Creare Videogiochi](#realt-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale-creare-videogiochi)
- [Lavorare con i videogiochi - Creare Videogiochi](#lavorare-con-i-videogiochi-creare-videogiochi)
- [Scopri i videogiochi con i Promessi sposi (e viceversa) - Creare Videogiochi](#scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa-creare-videogiochi)
- [Esempio di struttura della cartella di progetto in Unity - Creare Videogiochi](#esempio-di-struttura-della-cartella-di-progetto-in-unity-creare-videogiochi)
- [Corrosione dei bordi - Add-On Blender GRATUITO - Creare Videogiochi](#corrosione-dei-bordi-add-on-blender-gratuito-creare-videogiochi)
- [Game hero. Viaggio nelle storie dei videogiocatori - Creare Videogiochi](#game-hero-viaggio-nelle-storie-dei-videogiocatori-creare-videogiochi)
- [Programmare con Unity 3D - Creare Videogiochi](#programmare-con-unity-3d-creare-videogiochi)
- [Unity Tutorial: Verso la creazione di un videogioco - Creare Videogiochi](#unity-tutorial-verso-la-creazione-di-un-videogioco-creare-videogiochi)
- [Giocarsi. Gaming e gamification in contesti professionali - Creare Videogiochi](#giocarsi-gaming-e-gamification-in-contesti-professionali-creare-videogiochi)
- [Odin - Inspector and Serializer - Creare Videogiochi](#odin-inspector-and-serializer-creare-videogiochi)
- [UModeler - Model your World - Creare Videogiochi](#umodeler-model-your-world-creare-videogiochi)
- [Polaris 2021 - Low Poly & Mesh Terrain Editor - Creare Videogiochi](#polaris-2021-low-poly-mesh-terrain-editor-creare-videogiochi)
- [Graphy - Ultimate FPS Counter - Stats Monitor & Debugger - Creare Videogiochi](#graphy-ultimate-fps-counter-stats-monitor-debugger-creare-videogiochi)
- [5 canali Youtube che devi seguire se sviluppi in GameMaker Studio - Creare Videogiochi](#5-canali-youtube-che-devi-seguire-se-sviluppi-in-gamemaker-studio-creare-videogiochi)
- [Cosa è una IP - Creare Videogiochi](#cosa-una-ip-creare-videogiochi)
- [Come creare una roccia low-poly in Blender - Creare Videogiochi](#come-creare-una-roccia-low-poly-in-blender-creare-videogiochi)
- [Come risolvere l'errore 'Building - Failed to write file: sharedassets0.assets" durante la compilazione di Unity - Creare Videogiochi](#come-risolvere-l-errore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity-creare-videogiochi)
- [Cosa è il Voxel - Creare Videogiochi](#cosa-il-voxel-creare-videogiochi)
- [Ottenere il nome della tabella e la chiave di un componente LocalizeStringEvent e cambiarne la referenza in Unity - Creare Videogiochi](#ottenere-il-nome-della-tabella-e-la-chiave-di-un-componente-localizestringevent-e-cambiarne-la-referenza-in-unity-creare-videogiochi)
- [Come risolvere l'errore "an error occured running the unity content on this page. see your browser javascript console for more info" in Unity per WebGL - Creare Videogiochi](#come-risolvere-l-errore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl-creare-videogiochi)
- [Chi è l'Hardcore Gamer - Creare Videogiochi](#chi-l-hardcore-gamer-creare-videogiochi)
- [Come risolvere l'errore di "istanza non trovata" per il debug in Visual Studio di un progetto Unity - Creare Videogiochi](#come-risolvere-l-errore-di-istanza-non-trovata-per-il-debug-in-visual-studio-di-un-progetto-unity-creare-videogiochi)
- [Chiedi a Iwata - In italiano - Creare Videogiochi](#chiedi-a-iwata-in-italiano-creare-videogiochi)
- [Cosa è un Postmortem - Creare Videogiochi](#cosa-un-postmortem-creare-videogiochi)
- [Riprodurre filmati con Video Player nella build WebGL di Unity - Creare Videogiochi](#riprodurre-filmati-con-video-player-nella-build-webgl-di-unity-creare-videogiochi)
- [GAMEDEV: 10 Steps to Making Your First Game Successful - Creare Videogiochi](#gamedev-10-steps-to-making-your-first-game-successful-creare-videogiochi)
- [5 canali Youtube che devi seguire se modelli in Blender - Creare Videogiochi](#5-canali-youtube-che-devi-seguire-se-modelli-in-blender-creare-videogiochi)
- [Chi è il Casual Gamer - Creare Videogiochi](#chi-il-casual-gamer-creare-videogiochi)
- [Game Feel: A Game Designer's Guide to Virtual Sensation - Creare Videogiochi](#game-feel-a-game-designer-s-guide-to-virtual-sensation-creare-videogiochi)
- [Final IK - Cinematica inversa - Creare Videogiochi](#final-ik-cinematica-inversa-creare-videogiochi)
- [Realtime in Game Log Console - Creare Videogiochi](#realtime-in-game-log-console-creare-videogiochi)
- [Il Mixed Mode delle luci di Unity - Creare Videogiochi](#il-mixed-mode-delle-luci-di-unity-creare-videogiochi)
- [Cosa è la Cinematica Inversa (IK) - Creare Videogiochi](#cosa-la-cinematica-inversa-ik-creare-videogiochi)
- [Fullscreen Editor - Sviluppare direttamente a schermo intero - Creare Videogiochi](#fullscreen-editor-sviluppare-direttamente-a-schermo-intero-creare-videogiochi)
- [Ruler 2D: Align, Guides & Grid: Estensione per allineare elementi 2D Unity - Creare Videogiochi](#ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity-creare-videogiochi)
- [AVPro Video - Gestione alternativa dei video - Creare Videogiochi](#avpro-video-gestione-alternativa-dei-video-creare-videogiochi)
- [DOTween Pro - Animazioni su path e sequenze - Creare Videogiochi](#dotween-pro-animazioni-su-path-e-sequenze-creare-videogiochi)
- [Dialogue System for Unity - Gestione dei dialoghi - Creare Videogiochi](#dialogue-system-for-unity-gestione-dei-dialoghi-creare-videogiochi)
- [PUN 2 - Unity Multiplayer Networking - Creare Videogiochi](#pun-2-unity-multiplayer-networking-creare-videogiochi)
- [Gaia Pro 2021 - Terrain & Scene Generator - Creare Videogiochi](#gaia-pro-2021-terrain-scene-generator-creare-videogiochi)
- [Come risolvere l'errore "ConvexHullLib::cleanupVertices: Less than four valid vertices were found" in Unity - Creare Videogiochi](#come-risolvere-l-errore-convexhulllib-cleanupvertices-less-than-four-valid-vertices-were-found-in-unity-creare-videogiochi)
- [Rewired - Gestione delle periferiche di input per Unity - Creare Videogiochi](#rewired-gestione-delle-periferiche-di-input-per-unity-creare-videogiochi)
- [Ottimizzare l'uso e la scrittura delle Coroutine di Unity attraverso le Action - Creare Videogiochi](#ottimizzare-l-uso-e-la-scrittura-delle-coroutine-di-unity-attraverso-le-action-creare-videogiochi)
- [Flat Kit: Toon Shading and Water - Creare Videogiochi](#flat-kit-toon-shading-and-water-creare-videogiochi)
- [Come fare il backup di un progetto Unity e risparmiare spazio - Creare Videogiochi](#come-fare-il-backup-di-un-progetto-unity-e-risparmiare-spazio-creare-videogiochi)
- [Come risolvere il warning 'This Tween has been killed and is now invalid' di DOTWeen in Unity - Creare Videogiochi](#come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity-creare-videogiochi)
- [Come risolvere il blocco "Hold on - ProjectBrowser.OnGui.repaint" all'avvio di Unity - Creare Videogiochi](#come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-all-avvio-di-unity-creare-videogiochi)
- [Hashtag da seguire e utilizzare sui social se sei uno sviluppatore di videogames indie - Creare Videogiochi](#hashtag-da-seguire-e-utilizzare-sui-social-se-sei-uno-sviluppatore-di-videogames-indie-creare-videogiochi)
- [Come risolvere l'errore "unable to find jar in the system path unity" in Unity per Android - Creare Videogiochi](#come-risolvere-l-errore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android-creare-videogiochi)
- [TopDown Engine - Motore grafico per giochi dall'alto - Creare Videogiochi](#topdown-engine-motore-grafico-per-giochi-dall-alto-creare-videogiochi)
- [Scrivere un file su disco al termine di una build Unity con la funzione OnPostprocessBuild - Creare Videogiochi](#scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild-creare-videogiochi)
- [Creare un timer con possibilità di pausa in Unity - Creare Videogiochi](#creare-un-timer-con-possibilit-di-pausa-in-unity-creare-videogiochi)
- [Come risolvere il problema della preview non visualizzata dei prefab di Unity - Creare Videogiochi](#come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity-creare-videogiochi)
- [Scollegare una copia di un progetto Unity da Plastic SCM - Creare Videogiochi](#scollegare-una-copia-di-un-progetto-unity-da-plastic-scm-creare-videogiochi)
- [Calcolare le proprietà di una camera ortogonale di Unity affinché visualizzi sempre specifici oggetti in scena - Creare Videogiochi](#calcolare-le-propriet-di-una-camera-ortogonale-di-unity-affinch-visualizzi-sempre-specifici-oggetti-in-scena-creare-videogiochi)
- [Android Archivi - Pagina 2 di 2 - Creare Videogiochi](#android-archivi-pagina-2-di-2-creare-videogiochi)
- [Campagna Kickstarter di successo: il giorno perfetto di lancio - Creare Videogiochi](#campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio-creare-videogiochi)
- [Campagna Kickstarter di successo: 5 cose da NON fare - Creare Videogiochi](#campagna-kickstarter-di-successo-5-cose-da-non-fare-creare-videogiochi)
- [Visualizzare caratteri cirillici in Unity - Creare Videogiochi](#visualizzare-caratteri-cirillici-in-unity-creare-videogiochi)
- [7 consigli per costruire una community da sfruttare nel lancio di un videogioco indie su Kickstarter - Creare Videogiochi](#7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter-creare-videogiochi)
- [Decompilare un gioco Unity per recuperare asset perduti - Creare Videogiochi](#decompilare-un-gioco-unity-per-recuperare-asset-perduti-creare-videogiochi)
- [Come testare una build di Unity per Linux in Windows - Creare Videogiochi](#come-testare-una-build-di-unity-per-linux-in-windows-creare-videogiochi)
- [Campagna Kickstarter di successo: 8 cose da fare - Creare Videogiochi](#campagna-kickstarter-di-successo-8-cose-da-fare-creare-videogiochi)
- [Come risolvere l'errore "Questa release non è conforme al requisito dei 64 bit di Google Play" in Google Play Console per Unity - Creare Videogiochi](#come-risolvere-l-errore-questa-release-non-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity-creare-videogiochi)
- [Cosa è l'HD-2D - Creare Videogiochi](#cosa-l-hd-2d-creare-videogiochi)
- [Riconoscere a colpo d'occhio quando si è in Editmode o in Playmode di Unity - Creare Videogiochi](#riconoscere-a-colpo-d-occhio-quando-si-in-editmode-o-in-playmode-di-unity-creare-videogiochi)
- [Impostare la risoluzione grafica in stile 'retro' 8bit in Unity - Creare Videogiochi](#impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity-creare-videogiochi)
- [Serializzare oggetti in Unity con Newtonsoft.Json - Alternativa a JsonUtility - Creare Videogiochi](#serializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility-creare-videogiochi)
- [Mettere in pausa il PlayMode di Unity con un unico tasto - Creare Videogiochi](#mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto-creare-videogiochi)
- [Come risolvere l'errore "Failed to present D3D11 swapchain due to device reset/removed" in Unity - Creare Videogiochi](#come-risolvere-l-errore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity-creare-videogiochi)
- [Evitare eventi di doppie collisioni tra padre e figli in Unity - Creare Videogiochi](#evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity-creare-videogiochi)
- [Evitare problemi di Scattering dovuti alla distanza dall'origine in Unity - Creare Videogiochi](#evitare-problemi-di-scattering-dovuti-alla-distanza-dall-origine-in-unity-creare-videogiochi)
- [Quali sono i migliori asset Unity per videogiochi del 2024 presenti sullo store? - Creare Videogiochi](#quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store-creare-videogiochi)
- [Caricare da un .arr le icone per le notifiche Android in Unity - Creare Videogiochi](#caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity-creare-videogiochi)
- [Creare screenshot pronti per la pubblicazione sui social networks in Unity - Creare Videogiochi](#creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity-creare-videogiochi)
- [Perchè usare i Layer invece che i tag nel sistema di collisioni di Unity - Creare Videogiochi](#perch-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity-creare-videogiochi)
- [Subreddit di Reddit che dovresti seguire se sei uno sviluppatore di videogiochi indie - Creare Videogiochi](#subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie-creare-videogiochi)
- [Come contribuiscono i Collider tra padre e figli agli eventi di collisione in Unity - Creare Videogiochi](#come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity-creare-videogiochi)
- [Risolvere l'errore "I pacchetti del Negozio e quelli di Devcomp corrispondono" durante la pubblicazione di Steam - Creare Videogiochi](#risolvere-l-errore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam-creare-videogiochi)
- [Risoluzione di errori Archivi - Pagina 2 di 2 - Creare Videogiochi](#risoluzione-di-errori-archivi-pagina-2-di-2-creare-videogiochi)
- [Come evitare che AudioClip identici riprodotti nello stesso istante distorcano il volume finale in Unity - Creare Videogiochi](#come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity-creare-videogiochi)
- [Come sviluppare per Oculus Quest 2 con Unity - Creare Videogiochi](#come-sviluppare-per-oculus-quest-2-con-unity-creare-videogiochi)
- [Eseguire la vibrazione del gamepad in un progetto Unity tramite Rewired - Creare Videogiochi](#eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired-creare-videogiochi)
- [Lista dei migliori Asset Unity per videogiochi indie del 2022 - Unity Asset Store - Creare Videogiochi](#lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store-creare-videogiochi)
- [Come configurare un progetto Unity per una build Android - Creare Videogiochi](#come-configurare-un-progetto-unity-per-una-build-android-creare-videogiochi)
- [Inviare notifiche push per iOS e Android in Unity - Creare Videogiochi](#inviare-notifiche-push-per-ios-e-android-in-unity-creare-videogiochi)
- [Le migliori librerie gratuite per lo sviluppo di videogiochi multiplayer in Unity - Creare Videogiochi](#le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity-creare-videogiochi)
- [Visualizzare e selezionare oggetti Cast Shadow = Shadow Only nell'editor di Unity - Creare Videogiochi](#visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nell-editor-di-unity-creare-videogiochi)
- [Cancellare la cache locale per testare correttamente gli Addressables di Unity - Creare Videogiochi](#cancellare-la-cache-locale-per-testare-correttamente-gli-addressables-di-unity-creare-videogiochi)
- [Sviluppare una app XR per Meta Quest 3 in Unity - Creare Videogiochi](#sviluppare-una-app-xr-per-meta-quest-3-in-unity-creare-videogiochi)
- [Raccolta 2023 dei migliori Asset di Unity per sviluppare videogames – Unity Asset Store - Creare Videogiochi](#raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store-creare-videogiochi)
- [Rinominare un progetto Unity - Creare Videogiochi](#rinominare-un-progetto-unity-creare-videogiochi)
- [Pubblicare una build Unity tramite SteamPipeGUI di Steamworks SDK - Creare Videogiochi](#pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk-creare-videogiochi)
- [Creare un archivio di risorse grafiche .aar per un progetto Unity con Android Studio - Creare Videogiochi](#creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio-creare-videogiochi)
- [Configurare BepInEx e Unity Explorer per il debug di un gioco creato con Unity - Creare Videogiochi](#configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity-creare-videogiochi)
- [Le esperienze in VR per Meta Quest 3/3S che dovresti far provare a tuo padre e tua madre di oltre 60 anni (e non solo) - Creare Videogiochi](#le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo-creare-videogiochi)
- [Sors Adversa - Creare Videogiochi](#sors-adversa-creare-videogiochi)
- [Come risolvere l’errore 'RenderTexture.Create failed depth/stencil format unsupported - D32 SFloat S8 UInt (94)' per Android in Unity - Creare Videogiochi](#come-risolvere-l-errore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity-creare-videogiochi)
- [Il Singleton Pattern in Unity - Creare Videogiochi](#il-singleton-pattern-in-unity-creare-videogiochi)
- [Visualizzare un Interstitial ADS di Unity Level Play Ads Mediation - Creare Videogiochi](#visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation-creare-videogiochi)
- [Aggiornare i files di Unity di un progetto Xcode per iOS - Creare Videogiochi](#aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios-creare-videogiochi)
- [VR Developer - Creare Videogiochi](#vr-developer-creare-videogiochi)
- [Realtà Virtuale e Realtà Aumentata - Creare Videogiochi](#realt-virtuale-e-realt-aumentata-creare-videogiochi)
- [Cosa è il Coyote Time - Creare Videogiochi](#cosa-il-coyote-time-creare-videogiochi)
- [Come sviluppare una app non-game per iOS e Android in Unity - Creare Videogiochi](#come-sviluppare-una-app-non-game-per-ios-e-android-in-unity-creare-videogiochi)
- [Unity. Guida pratica per sviluppare applicazioni di realtà virtuale e aumentata - Creare Videogiochi](#unity-guida-pratica-per-sviluppare-applicazioni-di-realt-virtuale-e-aumentata-creare-videogiochi)
- [Hellpath - Creare Videogiochi](#hellpath-creare-videogiochi)
- [Configurare un progetto Unity esistente per Unity DevOps Version Control (ex Plastic SCM) - Creare Videogiochi](#configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm-creare-videogiochi)
- [Creare una applicazione trasparente che gira sul Desktop di Windows in Unity - Creare Videogiochi](#creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity-creare-videogiochi)
- [Dimensioni delle immagini da pubblicare nel negozio di Steam - Creare Videogiochi](#dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam-creare-videogiochi)
- [Kickstarter vs Indiegogo: quale piattaforma di crowdfunding scegliere per un gioco indie - Creare Videogiochi](#kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie-creare-videogiochi)
- [Canali Telegram che dovresti seguire se sei uno sviluppatore Unity di videogiochi indie - Creare Videogiochi](#canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie-creare-videogiochi)
- [Come risolvere l'errore "Command PhaseScriptExecution failed with a nonzero exit code" durante la compilazione con XCode - Creare Videogiochi](#come-risolvere-l-errore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode-creare-videogiochi)
- [Aprire nativamente file GLTF e GLB in Unity (con supporto a compressione DRACO) - Creare Videogiochi](#aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco-creare-videogiochi)
- [Disabilitare l'oscuramento dello schermo per inattività su dispositivi Android/iOS in giochi sviluppati con Unity - Creare Videogiochi](#disabilitare-l-oscuramento-dello-schermo-per-inattivit-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity-creare-videogiochi)
- [La MEGA-Guida italiana all'uso degli Addressables in Unity - Creare Videogiochi](#la-mega-guida-italiana-all-uso-degli-addressables-in-unity-creare-videogiochi)
- [Usare AdsMediation LevelPlay (ex ironSource) di Unity per gestire gli annunci in-game su Android - Creare Videogiochi](#usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android-creare-videogiochi)
- [Configurare una app Android che legge file Excel in Unity - Creare Videogiochi](#configurare-una-app-android-che-legge-file-excel-in-unity-creare-videogiochi)
- [Alcune cose che dovresti sapere se utilizzi Unity 3D per sviluppare videogiochi - Creare Videogiochi](#alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi-creare-videogiochi)
- [Cubettiny - Creare Videogiochi](#cubettiny-creare-videogiochi)
- [I giochi Meta Quest 3 che dovresti giocare almeno una volta - Creare Videogiochi](#i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta-creare-videogiochi)
- [I migliori asset Unity per sviluppatori indie presenti sull'Asset Store nel 2025 - Creare Videogiochi](#i-migliori-asset-unity-per-sviluppatori-indie-presenti-sull-asset-store-nel-2025-creare-videogiochi)
- [Redazione Archivi - Pagina 2 di 2 - Creare Videogiochi](#redazione-archivi-pagina-2-di-2-creare-videogiochi)
- [Raccolta dei migliori asset di Unity, divisi per anno - Creare Videogiochi](#raccolta-dei-migliori-asset-di-unity-divisi-per-anno-creare-videogiochi)
- [Unity 6 Shaders and Effects Cookbook - 5° edizione - Creare Videogiochi](#unity-6-shaders-and-effects-cookbook-5-edizione-creare-videogiochi)
- [9 canali Youtube che devi seguire se sei uno sviluppatore indie - Creare Videogiochi](#9-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie-creare-videogiochi)
- [Asset e componenti indispensabili per lo sviluppo di una app non-game per Android con Unity - Creare Videogiochi](#asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity-creare-videogiochi)
- [Libri e eBook per sviluppatori - Pagina 2 di 2 - Creare Videogiochi](#libri-e-ebook-per-sviluppatori-pagina-2-di-2-creare-videogiochi)
- [Marketing per sviluppatori indie- Pagina 2 di 2 - Creare Videogiochi](#marketing-per-sviluppatori-indie-pagina-2-di-2-creare-videogiochi)
- [I videogiochi indie su Steam che dovresti tenere d'occhio - Creare Videogiochi](#i-videogiochi-indie-su-steam-che-dovresti-tenere-d-occhio-creare-videogiochi)
- [Come risolvere l'errore "CommandInvokationFailure: Gradle build failed" in Unity - Creare Videogiochi](#come-risolvere-l-errore-commandinvokationfailure-gradle-build-failed-in-unity-creare-videogiochi)
- [Cosa è il Power Creep - Creare Videogiochi](#cosa-il-power-creep-creare-videogiochi)
- [Raccolta 2026 dei migliori asset Unity per creatori di videogiochi che puoi trovare sull'Asset Store - Creare Videogiochi](#raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sull-asset-store-creare-videogiochi)
- [Cosa è il Recovery Design - Creare Videogiochi](#cosa-il-recovery-design-creare-videogiochi)
- [Daniele Ferla, Autore presso Creare Videogiochi - Pagina 2 di 16](#daniele-ferla-autore-presso-creare-videogiochi-pagina-2-di-16)
- [Come creare mappe PBR per videogames con Materialize (software gratuito) - Creare Videogiochi](#come-creare-mappe-pbr-per-videogames-con-materialize-software-gratuito-creare-videogiochi)
- [15 canali Youtube che devi seguire se sviluppi in Unity - Creare Videogiochi](#15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity-creare-videogiochi)
- [Organizzare la gerarchia in Unity - Creare Videogiochi](#organizzare-la-gerarchia-in-unity-creare-videogiochi)
- [Estensioni di Google Chrome per la gestione di Steam - Creare Videogiochi](#estensioni-di-google-chrome-per-la-gestione-di-steam-creare-videogiochi)
- [Lista degli Shoot'em Up (shmup) a scorrimento con visuale isometrica - Creare Videogiochi](#lista-degli-shoot-em-up-shmup-a-scorrimento-con-visuale-isometrica-creare-videogiochi)
- [19+ film, serie e miniserie da vedere se vuoi avviare una startup - Creare Videogiochi](#19-film-serie-e-miniserie-da-vedere-se-vuoi-avviare-una-startup-creare-videogiochi)
- [Differenze tra le pipeline di Unity (Built-in, URP e HDRP) - Creare Videogiochi](#differenze-tra-le-pipeline-di-unity-built-in-urp-e-hdrp-creare-videogiochi)
- [Reimportare un modello 3D in Unity senza perdere materiali, referenze ed impostazioni - Creare Videogiochi](#reimportare-un-modello-3d-in-unity-senza-perdere-materiali-referenze-ed-impostazioni-creare-videogiochi)
- [Come abilitare la vibrazione sul XBox Gamepad (cablato o wireless) in Windows - Creare Videogiochi](#come-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows-creare-videogiochi)
- [GGWG: Goose Game Without Goose - Creare Videogiochi](#ggwg-goose-game-without-goose-creare-videogiochi)
- [Risorse Archivi - Pagina 3 di 3 - Creare Videogiochi](#risorse-archivi-pagina-3-di-3-creare-videogiochi)
- [Cosa è il 2.5D - Creare Videogiochi](#cosa-il-2-5d-creare-videogiochi)
- [Risorse Archivi - Pagina 2 di 3 - Creare Videogiochi](#risorse-archivi-pagina-2-di-3-creare-videogiochi)
- [Compilare un videogioco realizzato in Unity per la pubblicazione su Microsoft Store - Creare Videogiochi](#compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store-creare-videogiochi)
- [Daniele Ferla, Autore presso Creare Videogiochi - Pagina 16 di 16](#daniele-ferla-autore-presso-creare-videogiochi-pagina-16-di-16)
- [Guide Archivi - Pagina 2 di 7 - Creare Videogiochi](#guide-archivi-pagina-2-di-7-creare-videogiochi)
- [Guide Archivi - Pagina 3 di 7 - Creare Videogiochi](#guide-archivi-pagina-3-di-7-creare-videogiochi)
- [Daniele Ferla, Autore presso Creare Videogiochi - Pagina 3 di 16](#daniele-ferla-autore-presso-creare-videogiochi-pagina-3-di-16)
- [Guide e tutorials in italiano per sviluppare videogiochi in Unity - Creare Videogiochi](#guide-e-tutorials-in-italiano-per-sviluppare-videogiochi-in-unity-creare-videogiochi)
- [Guide e tutorials in italiano per sviluppare videogiochi in Unity - Creare Videogiochi](#guide-e-tutorials-in-italiano-per-sviluppare-videogiochi-in-unity-creare-videogiochi)
- [Tutti gli ebook free gratuiti rilasciati da Unity - Creare Videogiochi](#tutti-gli-ebook-free-gratuiti-rilasciati-da-unity-creare-videogiochi)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
---
# Unknown
2D GAME ART, ANIMATION, AND LIGHTING FOR ARTISTS UNITY FOR GAMES E-BOOK Contents Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Project.setup:.2D.rendering... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 The.art.for.your.game. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Choose.the.perspective.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Parallel projections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Resolution.of.your.assets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Level.design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 White boxing with basic sprites . . . . . . . . . . . . . . . . . . . . .32 2D.Animation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Reskinning characters . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56 General 2D animation rules . . . . . . . . . . . . . . . . . . . . . . . .56 Creating the skeleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Sprite Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 Weights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62 Skins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67 2D.Lights. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 Freeform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 Sprite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 Parametric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 Point/Spot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 Preparing sprites for 2D lighting . . . . . . . . . . . . . . . . . . . .80 Normal map painting techniques . . . . . . . . . . . . . . . . . . . .80 How to paint normal maps onto sprites . . . . . . . . . . . . . .82 Painting the Mask Map . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 Setting Fresnel light . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 2D Tilemap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88 2D Sprite Shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89 2D PSD Importer for animated characters . . . . . . . . . . . .90 Advanced.visual.effects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92 Main Module properties . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Emission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Color over Lifetime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Size Over Lifetime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Rotation Over Lifetime . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Noise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Renderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96 Randomized particles . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96 Using the Shader Graph . . . . . . . . . . . . . . . . . . . . . . . . . . .97 Reflections and refractions . . . . . . . . . . . . . . . . . . . . . . .105 Post-processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 Local Volumes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112 Bloom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Chromatic Aberration . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Color Grading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 Lens Distortion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 Vignette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 Film Grain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 Panini Projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 4.of.119.| unity .com© 2022 Unity Technologies Introduction 2D games evoke nostalgia for people who grew up playing them in the 1980s and ’90s . But as made-with-Unity titles such as Cuphead, Hollow Knight, Among Us, Skul: The Hero Slayer, and the Ori series show, there is no limit to how innovative today’s 2D games can be . The evolution of hardware, graphics, and game development software makes it possible to create 2D games with real-time lights, high-resolution textures, and an almost unlimited sprite count . The flatness of 2D graphics frees artists to create cartoonish and fantastical art that looks great on any device . This is our biggest, most comprehensive 2D game development guide . It’s intended for developers and artists with intermediate Unity experience who want to make a commercial 2D game, whether they work independently or with a team . This guide was written with input from Unity 2D experts to help up-and-coming creators understand the key decisions they should make at the start of a project and get the most out of the Unity 2D toolset . Topics covered include setting up your project, round-tripping between Unity and your digital content creation (DCC) software, sprite creation, and layer sorting for level design, camera setup, animation, lights, and visual effects, plus many optimization tips along the way . Even if you are new to Unity, you’ll find plenty of useful tips and practices in the guide . However, we suggest you start with the beginner tutorials and courses available for free at Unity Learn . We hope you enjoy this guide and wish you the best of luck with your game development . The future is bright for 2D creators . Some beautiful 2D games made with Unity – clockwise from top left: Ori and the Will of the Wisps, by Moon Studios Cuphead, by Studio MDHR MegaSphere, by AK Games Hollow Knight by Team Cherry 5.of.119.| unity .com© 2022 Unity Technologies Author Jarek Majewski is a professional 2D artist and self-taught Unity developer with extensive C# scripting skills . He has created art for iOS, Xbox Indie Live, and Nintendo Switch games . His game Ultimate Action Hero, currently in development, placed second in the 2019 Unity 2D Challenge . Jarek was the art director for Dragon Crashers, a 2D demo project developed together with 2D experts from Unity . The demo project uses the 2D features available in Unity 2020 LTS . Jarek worked closely with numerous Unity experts and employees to write this definitive guide to creating 2D games . Unity contributors Eduardo Oriz led the production of this guide . He is a senior content marketing manager at Unity with many years of experience working with Unity development teams, including the 2D tools team, and a broad understanding of what Unity offers to game developers and studios . Rus Scammell is the product manager on Unity’s 2D development team . Rus has over 15 years’ experience in game and software development . He uses his extensive knowledge of games technology to ensure that Unity 2D tools and workflows are accessible to artists, programmers, and game designers . Andy Touch is a senior content developer at Unity who has worked on many projects, including Lost Crypt and Dragon Crashers . Ever since he downloaded Unity, added 3D physics to 100 cubes and watched them bounce around, Andy has been addicted to experimenting with game technology . Before joining Unity, Andy taught game development to university students . Finally, thanks to supporting contributors, including copywriters, editors, and graphic designers, and the countless others at Unity who helped to produce, refine, and share this guide . Please note that the tips and workflows in this e-book are based on the 2D toolset in the Unity 2020 LTS version, however . . . . using new versions of Unity, including Unity 2021 LTS . 6.of.119.| unity .com© 2022 Unity Technologies Project.setup:. 2D.rendering.. Unity provides three render pipelines: the Built-In Render Pipeline and two Scriptable Render Pipelines (SRPs) . The two SRPs are the Universal Render Pipeline (URP) and the High Definition Render Pipeline (HDRP) . URP applies to all platforms, while HDRP is designed to be used in games targeting high-end PCs and consoles . URP is used in this book because it provides a graphics pipeline for 2D Lighting, allowing you to create 2D lights and lighting effects, including Freeform, Sprite, Spot, and Global . The URP is also compatible with the Shader Graph, post- processing effects, and the camera stacking feature . To use the 2D Renderer, you’ll first need to install the 2D Project template from the Unity Hub and the URP . The 2D template comes with several project settings that are optimized for a 2D game: —The images are imported as Sprites and set to Sprite mode —The Scene view is set to 2D —The default scene does not include a light —The camera’s default position is at 0, 0, –10 —The camera is set to Orthographic —In the Lighting window settings: —All Global Illumination is disabled —Skybox material is set to none —Ambient Source is set to Color 7.of.119.| unity .com© 2022 Unity Technologies Choose.2D.packages.from.the.Package.Manager If you have used Unity before, you know that many features are available as modular packages . You can see which versions of each package are available via Window.>.Package.Manager in the Editor . You can install, remove, disable, or update packages for each project here as well . The packages included in the 2D Template are 2D Animation, 2D Pixel Perfect, 2D PSD Importer, and 2D SpriteShape . Next, you will need to install the URP through the Package Manager . The Unity Hub window Install URP from the Package Manager 8.of.119.| unity .com© 2022 Unity Technologies Create.a.new.URP.Asset To use the URP, create a URP Asset and assign the asset in the Graphics settings . Right-click in the Project window (or click in the Assets menu in the Toolbar), and choose Assets.>.Create.>.Rendering.>.Universal.Render.Pipeline.>. Pipeline.Asset.(Forward.Renderer) . A Renderer Asset is created at the same time as a URP Asset, and you will need to replace this with the 2D Renderer Asset . To replace it, right-click in the Project window or click in the Assets menu, then choose Assets.>.Create.>. Rendering.>.Universal.Render.Pipeline.>.2D.Renderer . Assign.the.2D.Renderer Click on the URP Asset, and, in the Inspector, assign the 2D Renderer Asset to the Renderer.List ..Click on the circular button at the right end of the field to select it from the list . Creating a URP asset Setting a new renderer in the Inspector view for the URP asset 9.of.119.| unity .com© 2022 Unity Technologies Now that you have the URP and 2D Renderer Assets lined up, assign the 2D Renderer to the Scriptable Render Pipeline Settings in the project . Open the Project Settings window (Edit.>.Projects.Settings), go to the Graphics section, and assign the Pipeline Asset here . The 2D Renderer is now set up and ready to go . You can also adjust the rendering settings by switching to the Quality category in Project settings . Read more about rendering settings here . Note: If you start a new project in Unity 2021 or later, the 2D template, called 2D (URP), comes with the 2D Renderer already set up, so you won’t have to complete these steps . Assign the Universal Render Pipeline Assets in Project Settings 10.of.119.| unity .com© 2022 Unity Technologies The.art.for.your.game During the art concept phase, you’ll need to make many decisions that will impact the technical side of your project . In game design, it’s a common practice to mock up a screenshot or series of images to show the game’s art style, action, and UI . Mockups are a quick way to determine if the concept is viable and get a sense of how the final game would look . You can also explore multiple art directions with simple thumbnail mockups . These mockups would have simplified shapes and focus more on the overall look, camera angle, object sizes, color palette, and contrast . Using thumbnails is a great way to present different approaches to the team for testing and iteration . A few things to consider when making a mockup: —What will be the camera angle and perspective of your game? —What will be the size of the player character in relation to the screen size of your target platform? —Does your art style fit the target platform, theme, and audience? For example, will this style appeal to casual gamers, young players, strategy fans, and so on? —How does the art style fit with the overall graphics approach? —If the gameplay requires fast reaction times, then it’s a good idea to make elements such as the player character, enemies, and projectiles visible against the background at first glance . —Mobile games should be brighter and have higher contrast to be visible in the sunlight and smaller screens . —What are the size, position, and visibility of GUI elements? Testing ideas by drawing simple thumbnails 11.of.119.| unity .com© 2022 Unity Technologies Technical considerations There are also important technical questions to consider in the mockup stage . These include: .—Animation:.What elements will you animate with skeletal animation? Which ones will have frame-by-frame animation or be animated with a shader? .—Environment:.Will you create it with Tilemap or Sprite Shapes? Or, do you want to place platform sprites in the scene manually? You can paint your mockup to mimic the look of these tools so that you can use the mockups directly in your game . .—Sorting:.Plan your sprite sorting by grouping mockup layers similarly to how you anticipate the sorting will be done in Unity . It might take some time, but you’ll avoid having to sort through potentially thousands of sprites later in production . .—Lighting:.Will your sprites be lit with lighting and shadows painted onto them or with real-time lighting? One tip is to paint images with no lighting, then add shadows and lights on separate layers in your image-editing software . That way, you can always change the look of the lighting later in production if necessary . Take the time in this stage to create assets that are as close as possible to what they will look like in the final game . This allows you to move from concept to game production more quickly . A comparison of the original concept art and the final version of Dragon Crashers . You can read about the process for creating the art for the demo in this blog post . 12.of.119.| unity .com© 2022 Unity Technologies Choose.the. perspective. There are different perspectives, or views, available for a 2D game . The umbrella term for perspective options is graphical projection, which refers to a method of casting a 3D world onto a 2D plane . You can see the different perspectives illustrated here . Parallel.projections With these types of projections, the lines that are parallel in the 3D world are also parallel when projected onto a 2D surface . Additionally, they have no vanishing points, which means objects are the same size no matter their distance from the camera . This is useful in games because you don’t have to scale your assets or draw them in different sizes . Image from Wikipedia This diagram illustrates how Orthographic projection works . Note that all the projection rays from the camera are parallel to one another and perpendicular to the image plane . 13.of.119.| unity .com© 2022 Unity Technologies In Orthographic projection, the rays are perpendicular (orthogonal) to the image plane, while in oblique projection, rays intersect with the projection plane at an oblique angle to produce the projected image . There are two subcategories of Orthographic projection: primary and axonometric . Primary.projection In primary projection, there is one dimension perpendicular to the view plane . Since all the lines in this dimension are parallel, it’s not visible in the final projection . This kind of projection is the easiest to draw because you need to draw only two dimensions . Games will use one of two types of primary projections, side view or top-down . Side view is used in platformers, shooters, and Metroidvania-style games . The X and Y axis of the 3D world are drawn on the screen with the Z axis omitted . Game artists tend to scale down distant objects visible in the background to provide a sense of depth . In top-down perspective, the camera aims down, perpendicular to the ground . There aren’t many true top-down games, and this perspective is often confused with ¾ or isometric projections . Top-down works best for shooters, but it’s not the most interesting view from which to view human characters . Side view perspective in the 1991 version of Sonic The Hedgehog™ by Sega Top-down perspective in Alien Breed™ by Team17, released in 1992 for the Amiga 14.of.119.| unity .com© 2022 Unity Technologies Axonometric.projection In axonometric projection, the 3D world is rotated around one or more axes to show multiple sides of objects . There are three main types of axonometric projection . Isometric.projection: This projection is the most elegant of the three options . The angle between any two of the three coordinate axes is at 120 degrees, and the X and Y lines are each at a 30-degree angle from the horizontal axis . Most of the old games referred to as isometric are in fact dimetric . Isometric projection angles don’t look great in pixel art, which is why there aren’t many games with true isometric projection . Dimetric.projection:.This perspective uses projection where two angles are identical, with the X and Y lines angled at 26 .6 degrees . Dimetric has been the most common option because it looked better on the older hardware, where the lines formed a clear 2:1 pixel ratio . You can use this projection to show more or less of the top surface . Isometric, dimetric and trimetric projection 15.of.119.| unity .com© 2022 Unity Technologies Trimetric.projection:.With this projection, each angle is different . Three-quarter.(¾).projection This projection is often confused with top-down . In 3/4 projection, the camera tilts slightly on the X axis to reveal a partial view of the front of objects and characters . Oblique.projection In oblique projection, rays intersect with the projection plane at an oblique angle to produce the projected image . The most common oblique projection variant is the cabinet projection, which is often used in beat ’em up games . ¾ projection in The Legend of Zelda: A Link to the Past, released in 1991 by Nintendo Oblique projection view in Streets of Rage: Mega Drive, released in 1991 by Sega Trimetric projection in Crystal Castles by Atari, released in 1983 16.of.119.| unity .com© 2022 Unity Technologies Perspective projection Perspective projection uses vanishing points to replicate the way objects farther away appear smaller . A vanishing point is a point on the plane of a perspective drawing where the two-dimensional projections or drawings of mutually parallel lines in three-dimensional space appear to converge . Depending on the number of vanishing points, you can have one- , two- or three-point perspectives . With the advent of 3D graphics, these projections are less common in 2D games, although they still work well for adventure games or games with static backgrounds . How do you choose the correct perspective for your project? Does gameplay determine the art style or vice versa? In most cases, developers choose an art style and camera projection based on assumptions made when the idea for their game crystallizes . It will be a decision based on many criteria, including: —Gameplay and genre —Target platform —Scene readability – for example choosing a higher camera angle for better visibility of character and enemy units —Budget – top-down and isometric games can require more character animations for multiple angles and more advanced coding —Target audience You can also base your game on an art style . For example, imagine a game based on ancient Egyptian hieroglyphs . In this case, the art theme will determine some camera and gameplay rules, namely, that it must be a side-view game with a primary perspective . If you’re new to 2D development or on a tight budget, it’s better to choose one of the primary projections: top-down or side-view . They’re easier to both draw and code . With only two dimensions visible, you have less to worry about, and it’s easier to set up sprite sorting in these views . Remember, in the end, your projection doesn’t need to be 100% accurate and follow all the real-world rules strictly, as is the case in 3D space . The most important thing is that it needs to look good and enhance the gameplay . Perspective projection, where the projection rays are coming from the center of the projection camera . 17.of.119.| unity .com© 2022 Unity Technologies Resolution.of. your.assets Unity’s 2D tools have evolved from an editor built initially for 3D games . As a result, there are some unique features . For example, 2D sprites in the Scene aren’t bound tightly to screen resolution . Sprites in Unity are textures drawn onto a mesh and are easily scalable . The camera in 2D games is also scalable and can zoom in and out as you want . Therefore, creating 2D content in Unity requires a different approach to that of working in traditional raster graphics software such as Adobe Photoshop, Affinity Photo by Serif, GIMP, or Krita . In these conventional apps, you have a specific document canvas size available with a set resolution, and all layers are bound to this resolution . There is a 1:1 ratio between the pixel size of each layer and the document pixel size . In Unity, however, screen and asset resolution are independent of each other, so you need to calculate the resolution of your sprites . You start with your target platforms because the capabilities of the hardware determine the maximum resolution you can set . For mobile devices, the resolution range is broad, but a safe assumption is 1920x1080, since this will allow you to target devices from low- to high-end . For PCs, the majority of desktop gamers use full HD (1920x1080), while only 2% have 4K screens, according to a survey from Steam . For laptops specifically, there are a lot of users who play games at lower resolutions such as 1366x768 . You might also want to consider supporting ultra-wide screens, making sure you test screen ratios like 21:9 to ensure the camera won’t display unwanted areas of your level . When drawing game assets, the pixel size is consistent, and the image looks great because it’s always constrained to the pixel grid . However, in Unity, the sprites can have a different resolution . The camera zoom level will also affect the final look . 18.of.119.| unity .com© 2022 Unity Technologies For consoles, 4K is more common because of the high adoption rate of 4K TVs . The Nintendo Switch offers 1280x720 resolution in handheld mode and up to 1920x1080 when connected to an external screen via HDMI . As you can see, the resolution range can be very broad . If you are looking to support a particular device, this comprehensive article can help you find the proper target resolution . To target full HD or 4K, keep a couple of best practices in mind (these rules don’t apply to pixel art): —Paint art in the highest resolution for your target devices —Stick to one resolution for all assets, and scale down later if necessary to support lower-end devices Don’t scale up raster art because it can result in pixelation and blurriness, lowering visual quality . Always start from the highest resolution supported, then scale the art’s resolution down when exporting from a graphics application . You’ll find out more on how to do this in the section on working between DCC tools and Unity, or you can try using Variant Sprite Atlas scaling . One helpful trick is drawing your art at twice the size you need, then scaling it to 50% when you export to Unity . This technique will make your sprites look polished and crisp, and brush lines won’t look so shaky . Don’t overdo it on the details, since the art will be scaled down . This is a good trick for hiding the small imperfections resulting from hand-drawn art . Of course, if you want a hand- drawn visual style for your game, then don’t try this . One you’ve chosen the resolution, test the look of your art in the Game view to see how it will appear on target devices . To keep it simple, calculate sprite resolution in Orthographic view instead of perspective . Set their scale to 1,1,1 and Z depth to 0 for easy visualization . You can easily preview how the game looks at different ratios and resolutions in Game view . 19.of.119.| unity .com© 2022 Unity Technologies Use the Unity grid and units to maintain consistent placement and appearance of your sprites, as well as to calculate camera zoom and object sizes . A Unity unit is visualized by the grid in the Scene view . Assume that 1 Unity unit is equal to 1 meter . Set your base sizes first, and keep them consistent across your game . Start with the size of your player character . Keep the height of the player character between 0 .5 and 2 units . If you’re using Tilemap, set the tile size to 1 unit . Characters and objects that are too small or large compared to other visual elements in a game will lead to strange transform numbers and issues with physics calculations . Once you’ve established the sizes of your base objects in the main scene (Player character, enemies, collectibles, level hazards), choose your zoom level by setting the size property of the orthographic camera . After that, check the camera size value . When you multiply this value by 2, you’ll get the camera vertical size in Unity units . Unity’s Grid in the Scene View The size of the orthographic camera is expressed in units that express the vertical size of the camera from the center to the top . 20.of.119.| unity .com© 2022 Unity Technologies If the camera size equals 5, its height is equal to 10 units . For example, if you target 4K resolution, then the screen (or camera) height is 2160 pixels . With a simple calculation, you can determine how many pixels per unit (PPU) your art needs: 2160.:.10.=.216. Max.Vertical.Resolution.:.(Orthographic.Camera.Size.\*2).=.Sprites.PPU So every sprite in your game needs to have around 216 PPU to look good at a native 4K resolution . That’s a simple example . If you want your camera to zoom in and out, you’ll need to account for that . If you set the maximum zoom percentage to size 3 in Orthographic view, the PPU needs to be 360 (2160 : (3 \*2)) . If you’re using skeletal animation, set the resolution of sprites slightly higher than the suggested PPU . Doing this is necessary because the meshes of the skeleton are rotated, stretched, and warped, sometimes to extremes, which can produce results that look bad . Aim for a lower resolution when the camera is zoomed in . Tip:.When you set the PPU value of your game, apply a grid in your graphics software for reference . This is useful when using Tilemap because you will have the tile size in pixels and can to snap to a grid . Setting the PPU for a sprite 21.of.119.| unity .com© 2022 Unity Technologies You don’t have to be strict with these numbers . Often, you can save memory by using a slightly lower sprite resolution than suggested . Cut out elements that aren’t essential, such as background sprites . Also, test your game on devices to check how it looks . In many cases, the benefits of using high-resolution assets aren’t apparent . Instead, you can allocate this drawing time and device memory to other, more essential game elements like the main characters, visual effects, or UI . On mobile devices, game size is crucial, so check which assets can be scaled down and keep memory limitations in mind . Read more about 2D asset resolution in this blog post . Sprite Atlas The Unity Sprite Atlas feature has two main advantages . Pack.multiple.sprites.into.one.texture.to.reduce.draw.calls:.Each mesh with different materials or textures is drawn on the screen separately . Every sprite (which is a mesh) you put on the screen adds to the rendering time and can reduce a game’s framerate . Use Sprite Atlas to consolidate several Textures into a single, combined Texture . Unity can then call this single Texture to issue a single draw call instead of multiple ones . The packed Textures are accessed all at once, resulting in smaller performance overhead . Scale.down.sprites.depending.on.device.type:.In Unity, it’s efficient to scale an entire Sprite Atlas instead of individual sprites and assign the scaled atlas to different devices . To build a new Sprite Atlas, right-click in the Project window (or select the Assets menu in the toolbar), and choose Create.>.2D.>.Sprite.Atlas . Be sure to give it a descriptive name . Then, in the Objects for Packing option, select the sprites you want to include, or include the entire folder . The Include in Build option should be checked by default . You now have your first Sprite Atlas . Setting the grid in Affinity Photo to match your game’s PPU 22.of.119.| unity .com© 2022 Unity Technologies Variant Sprite Atlas Use a Variant Sprite Atlas to scale down sprites for specific devices . Create a Master Sprite Atlas as above, then change its Type to Variant in the Inspector (see the image below) . A Variant Sprite Atlas doesn’t contain sprites itself . It relies on a Master Sprite Atlas, which you can choose in the Master Atlas field . Scale this atlas and all its sprites by choosing a value in the Scale Value field, between the range of 0 .1 to 1 . A Sprite Atlas in Unity 23.of.119.| unity .com© 2022 Unity Technologies In a project that includes both a Master and a Variant Sprite Atlas, if both have the option Include in Build checked, the Texture used by mutual Sprites can come from either Sprite Atlas (refer to Scenario 3 in the Resolving different Sprite Atlas scenarios section of Unity documentation) . To automatically load Sprite Textures from the Variant Atlas instead of the Master Atlas, enable Include in Build for the Variant Atlas only, and disable it for the Master Atlas . The build then automatically loads the Variant Sprite Atlas instead of the Master Atlas at runtime . Drawing in vector apps Art created in vector-based software such as Adobe Illustrator or Affinity Designer by Serif is not constrained by resolution . This is a significant advantage because you can change the size of your art assets at any time, without worrying about incorrect resolution settings . You will still need to export your vector-based art to Unity as a PNG file . It’s the same export workflow as that for raster or pixel art . Setting up a Variant Sprite Atlas Vector art made in Affinity Designer – the left side of this illustration shows the vector view in the app, and the right shows the pixel view after export . 24.of.119.| unity .com© 2022 Unity Technologies Working between DCC tools and Unity You do a great deal of work on your art before moving it into Unity . You work hard to make all the characters, elements, props, and background art as beautiful and true to your vision as can be – so it’s only natural that you want to get it all into Unity as quickly as possible . Avoid exporting each layer one-by-one as a PNG file because this will take a long time . Instead, follow these tips for exporting your game sprites efficiently from different graphics software . From.Adobe.Photoshop Export and save layers as individual files using a variety of formats, including PSD, BMP, JPEG, PDF, Targa, and TIFF . Layers are automatically named as they are saved – set options to control the generation of names . To export layers as files, do the following: 1 . From the menu, select File.>.Export.>.Export.Layers.To.Files . Getting ready to export from Adobe Photoshop 25.of.119.| unity .com© 2022 Unity Technologies 2 . Under Destination, in the Export Layers To Files dialog box, click Browse to select a destination for the exported files . By default, the generated files are saved in the sample folder as the source file . 3 . If you want your sprites to have a common file name prefix, enter it in the text field–for example, tile\_wood01 .png, tile\_bricks01 .png, and so on . 4 . To export the layers only visible in the Layers panel, select Visible Layers Only . 5 . Choose PNG-24 as a File Type . You don’t need to include an ICC profile, so uncheck that . 6 . Check the Transparency and Trim Layers options in the PNG options section, and uncheck Interlaced . 7 . Click Run, and after a short wait, the sprites should export to the folder you specified . 8 . Use these steps to export a limited amount of layers quickly . Note that all layers are exported separately . This method does not take layer groups into account, so if you have a character or object that consists of multiple layers, merge them before exporting . Let’s look at how to export sprites with multiple layers from Photoshop . It requires more setup, but this approach allows greater control over the exported images . To start, you’ll need the names of the layers or layer groups from which you want to generate sprites . For example, the image below shows a sprite of a barrel consisting of a normal map and mask map . Each sprite is in a separate folder that has been saved as a PNG file . The Export Layers to Files dialog box 26.of.119.| unity .com© 2022 Unity Technologies Select File.>.Generate.>.Image.Assets from the menu . Photoshop will create a folder as a PSD file and export all the layers or groups saved as PNG files . If you haven’t saved a PSD file yet, it will create a folder on your desktop . A benefit of this method is that if you change any layer or folder which is marked for export, the image asset will be exported in the background automatically . Specify the folder for every sprite by adding its name and a slash before the layer name . In this case, to group all three barrel sprites into one folder, you would add “barrel/” before the layer names . To change the sprite’s size, add the specified dimensions or scale in percent before the layer name, for example, “50% barrel/barrel .png” or “80 x 160 barrel/ barrel .png” . When specifying dimensions, Photoshop will use pixels as the default unit . A sprite with both a normal map and a mask map Exporting multiple layers of the same sprite from Photoshop 27.of.119.| unity .com© 2022 Unity Technologies Exporting.from.Affinity.Photo.or.Affinity.Designer Both Affinity Photo and Affinity Designer provide a dedicated mode for exporting, called Export Persona . Let’s go through the steps for using it . Switch to Export Persona by clicking its icon in the top left of the application toolbar, as seen in the image below . To export a sprite, create a slice from a layer or layer group . Switch to the Layers tab on the right, select a layer to export, and click the Create Slice button . Switch to the Slices tab, select the slices to export, and be sure that the Export preset is set to Single PNG for all the slices, as seen in the following image . Export Persona in Affinity Photo Set the Export present to Single PNG in Affinity Photo 28.of.119.| unity .com© 2022 Unity Technologies Click Export Slice, and choose a destination folder when prompted . You can save time by exporting the sprites directly to the Assets folder in your Unity project . After choosing a destination folder, the Continuous option becomes available, which allows you to export slices whenever you change a layer . To have better control over the exported sprites, set the export options manually for every splice by clicking the arrow icon to the left of the slice name . Choose a subfolder for your sprite in the Path section . In this example, all of the barrel sprites are in the “barrel” subfolder . PNG is the file format, and resolution scaling is set at 1x, which means no scaling, so the sprites are exported at 100% their size . You can also output multiple sizes at once by clicking the “+” button . For multiplatform games, choose additional sizes for your sprites that can be used when building your project for other devices . For example, choose 2x for scaling to get “Retina” sprites . Another “+” button on the bottom of the expanded window allows you to add additional file formats if you want to export JPG files alongside the PNG sprites . Setting export options for sprites 29.of.119.| unity .com© 2022 Unity Technologies Exporting.from.Krita Be sure to save your document, and select Tools.>.Scripts.>.Export.Layers ..In the pop-up window, select the Initial directory . This will be where sprite files are exported . In Export options, check the Adjust export size option to layer content . This will crop layers to their size, leaving no empty pixels padding . There are a couple of optional settings: —Group as layer: This option will export groups rather than individual layers, a good choice for when your sprites consist of multiple layers . Note that the exporter will only check for the highest groups in the hierarchy, so your sprites cannot be grouped in another group . —Ignore invisible layers: This is handy when you want to exclude some sprites from exporting by turning off their visibility . Choose PNG as Image extensions, click OK, and the sprites will be exported to the your selected folder . Export Options window in Affinity appsExporting sprites from Krita 30.of.119.| unity .com© 2022 Unity Technologies Import Photoshop PSD files into Unity Exporting to PNG file format is the most convenient workflow for sprites, but you can also import PSD files directly into Unity . By default, this will flatten the PSD layers into one image . This method is convenient to use for background art sprites . Edit and paint layers, and, when you save the file, the changes will be instantly visible in the Editor . Then you will have your PSD source file directly in the Unity project, and the file can be included in source control . Unity’s 2D PSD Importer package gives you the option of importing layers as separate sprites . This package was designed for use with 2D animation, but you can use it to import multiple regular sprites contained in one PSD file . You can also make frame-by-frame animations . Find more on how to use this package in the 2D Animation section or this blog post . A multi-layer Photoshop file imported in Unity 31.of.119.| unity .com© 2022 Unity Technologies Level.design There are many ways to prototype levels, so choose the methods that suit your creative style and workflow best . Sketching out ideas on paper will probably always be popular because it’s simple, direct, portable, and cheap . See how Super Mario levels were designed in 1985 . This was the best way to design levels for many years, and it’s still very useful . However, now you can test ideas earlier and more vigorously by sketching them out in Unity . Let’s look at the tools available . White boxing White boxing, a well-known term from 3D level design, involves placing plain white cubes to test out level design ideas quickly . The reason designers white box is to map out ideas for game flow without any distracting details . This method can also be applied to 2D graphics by using 2D geometric figures or other prototyping tools . In white boxing, the focus should be on only the things the player will interact with, such as the ground, enemies, level hazards, and pickups . All of these things can be made from the simplest forms, then color-coded to distinguish between them more easily . For example, enemies and other hazards could be colored red, pickups green, switches blue, and so on . Start with the collision/interaction layer, which includes the ground, walls, and platforms that the player jumps on . Level design in Super Mario; image from the Nintendo YouTube channel 32.of.119.| unity .com© 2022 Unity Technologies White.boxing.with.basic.sprites Start with the default 2D assets available in Unity, which come in simple geometric shapes . Right-click in the Project window (or click on the Assets menu in the toolbar), and choose Assets.>.Create.>.2D.>.Sprites . All of the shapes come with predefined collision shapes, so you only need to add a Polygon Collider 2D component to a sprite shape to make it be affected by gravity or collisions . The selected sprites will be created in the folder that’s currently opened in the Project window . Use different shapes for different purposes . For example, use a capsule for your player, circles for pickups, hexagons for enemies, and squares for the ground or walls . Tint each category of sprite a different color with the color property available in the Sprite Renderer . For sprites to use 2D Physics collisions, add a corresponding Collider 2D component that will match the object’s overall shape along with a 2D Rigidbody . Choose the Dynamic body type for the Rigidbody to react to gravity, forces, or collision . For precise placement, snap the sprites to the grid by holding down Ctrl as you move them . This will move them in 0 .25-unit increments . All the sprites available in the Sprite Creator 33.of.119.| unity .com© 2022 Unity Technologies 2D Sprite Shape 2D Sprite Shape is a tool that allows you to create paths and tile sprites along them . These paths work similarly to the well-known pen tool used in graphics software . They are Bézier curves that can be edited directly in the scene and optionally closed and filled with tiling texture . Sprite Shape is a handy prototyping feature in Unity because it makes it efficient to create and edit new sprite shapes . If you choose to create your 2D project with the 2D Template, then Sprite Shape is installed by default . Otherwise, you can install it using the Package Manager . To make a new Sprite Shape, click on the GameObject menu, 2D.Object.>. Sprite.Shape, and select either Open or Closed Shape . Linear and Continuous Sprite Shape objects Creating a Sprite Shape 34.of.119.| unity .com© 2022 Unity Technologies To modify the Sprite Shape, select it, then click the Edit button in the Inspector . Left-click on any part of the Sprite Shape to add or delete points with the delete key . By selecting a point, you can change its mode by selecting one of the three Tangent Mode buttons: .—Linear: Creates no curve, with straight lines on both sides of the points .—Continuous: Creates a curve around the point with handles that face opposite directions .—Broken:.Creates a curve around the point with handles that can move independently Modifying a Sprite Shape in the Inspector window 35.of.119.| unity .com© 2022 Unity Technologies You can also select how the corners around the points look . The snapping tool is another useful option that snaps the points to the grid . Add a Polygon Collider 2D Component for physics . The default properties should be sufficient for prototyping purposes . By following these steps, you can create Sprite Shapes that can interact with one another and be easily modified through their Inspectors . Tilemaps The Tilemap feature is great for quick prototyping . Tilemap offers a way to create a game world using small sprites, called tiles, placed on a grid . Instead of laying out a game world that is one big image, you can split it into brick-like chunks that are repeated through a whole level . Tilemaps can help save on memory and CPU power because tiles that are not visible on the screen can be disabled . A brush tool makes it efficient to paint them on a grid, and they can also be scripted to use some painting rules . They come with automatic collision generation for efficient testing and editing . Adding a Polygon Collider 2D Component 36.of.119.| unity .com© 2022 Unity Technologies The 2D Tilemap Editor is installed with the 2D Project Template or from the Package Manager . Installing the 2D Tilemap Extras package provides reusable 2D and Tilemap editor scripts that you can use for your own projects, and these can also serve as a base for creating custom brushes and tiles . Get the package by enabling Preview Packages in Project Settings (Edit.>.Project.Settings) . In the Package Manager, turn on the Enable Preview Packages option located in the Advanced Settings box . A visual representation of the background and sprite tiles of a retro 8-bit game that are loaded into VRAM . The console cleanly keeps backgrounds and sprites loaded on separate pages . View Preview Packages in the Package Manager 37.of.119.| unity .com© 2022 Unity Technologies Install samples, along with the 2D Tilemap Extras to see examples using the scripts that come with the package . You can read more about the Scriptable Brushes and Scriptable Tiles included in the package in the Unity documentation . Once both packages are installed, open the Tile Palette window via Window.>. 2D.>.Tile.Palette . This window will hold all the tiles and tools to help you paint or edit Tilemaps . Create a new Palette by clicking the Create New Palette button . A dropdown window with options will appear . Give the palette a name, set its options, click Create, and save it to a selected folder . Tile Palette window with a palette loaded Creating a new palette 38.of.119.| unity .com© 2022 Unity Technologies Now, add tiles to the palette . Drag a sprite, texture, or Tile Asset into the Palette window . Use one of the simple Sprite Shapes you created earlier, and place it in the empty part of the window . Choose a file in which to create the asset . You should now see your sprite in the grid of the palette . Now, create a Tilemap to paint the tiles . Click the menu item Gameobject.>. 2D.Object.>.Tilemap.>.Rectangular . Dragging a sprite into a palette creates a new tile . Creating a Tilemap 39.of.119.| unity .com© 2022 Unity Technologies You have created a Grid and a Tilemap within it . Rename the Tilemap to something more descriptive . The Grid can hold multiple Tilemaps, and it’s possible to have multiple Grids per scene, for example, with different cell sizes . For now, leave all the default settings of the Grid component . The Tilemap GameObject has two components: Tilemap and Tilemap Renderer . Leave the settings as they are . If you need to, change the Sorting Layer settings to fit your layer structure . With your Tilemap and Tile on a palette, you are ready to start painting . Click on the brush tool in the Palette window toolbar, and select a tile to paint . Tilemap and Tilemap Renderer components Tilemap with painted placeholder tiles 40.of.119.| unity .com© 2022 Unity Technologies Next, you can create a prototype for a level . Add a Tilemap Collider 2D to the Tilemap for physics . This will add colliders to each of the tiles based on the collider type set in the Tile Asset . Add a Composite Collider 2D to combine the colliders into one, resulting in smoother collision behavior with geometry set as Outline . The tiles will behave like a continuous terrain rather than as individual tiles . This setup also brings a slight performance boost . However, if you plan for your game to add or remove tiles at runtime, you might want to keep a collider on each tile . Remember to check the Used by Composite option on the Collider 2D component, and set the Rigidbody 2D Type to static so it doesn’t fall . Collider 2D component on a Tilemap GameObject 41.of.119.| unity .com© 2022 Unity Technologies Let’s look at the different Palette tools (the keyboard shortcuts are noted in brackets) . .—Selection.(S): Click to select one tile, or drag to select tiles within a rectangular area . .—Move.(M): Move the selected tiles . .—Brush.(B): Paint on an Active Tilemap (select one from the Active Tilemap dropdown) with the selected tile and brush . .—Fill.Selection.(U): Drag to.fill a rectangular area using a selected tile . .—Tile.Sampler.(I): Pick a tile from a Tilemap, and set it as active to paint . .—Eraser.(D): Delete tiles from a Tilemap . .—Fill.(G): Fill an area with a tile (the area needs to be bordered with other tiles) . With these tools alone, you can paint and edit tiles efficiently . Additionally, the Tilemap Extras Asset provides useful scripts such as Rule Tile . Rule Tile This is a scripted tile that recognizes its surroundings and selects the appropriate image, for example, a ground tile with grass on top and a shadow on the bottom . The 2D Tilemap Extras package comes with a Dungeon Rule Tile sample located in Assets.>.Samples.>.2D.Tilemaps.Extras.>.“version.number”.>.Dungeon.Rule. Tile.>.Tiles . Drag it onto the Tile Palette to start painting . Rule Tile automatically recognizes where adjacent tiles are and where there should be borders . It chooses the proper sprite for you, so you don’t have to select different tiles to paint the borders . Tile Palette tools Painting Tilemaps 42.of.119.| unity .com© 2022 Unity Technologies The Rule Tile Inspector provides a list of rules for which sprite to choose based on the adjacent tiles . There’s a matrix and a sprite on the right side of each rule . The sprite will be used when neighbor tiles are on all sides where the green arrows are pointing . Learn more about the Rule Tile feature here . This is just one example of how to use the Rule Tile . You can also replace the sprites that come with this sample or create a new Rule Tile that matches your game’s needs . You can find ready-made Tilemap templates that are available from the community and the Asset Store . A few good ones to check out include TileMap Auto Rule by Pandaroo, 2D PixelArt – Isometric Blocks by Devil’s Work .shop, and both Pixel Art Platformer and Pixel Art Top Down by Cainos . Learn more about Tilemap best practices in this video, and optimizing Tilemap performance in this article . The Rule Tile asset in the Inspector 43.of.119.| unity .com© 2022 Unity Technologies Sprite Shape level design Grid or tile-based design is well-suited to a retro 2D visual style, especially when you’re using pixel art . It’s also great for side-scrolling horizontal platformers, top- down RPGs, and non-organic shapes such as buildings and castles . The grid-based design makes pathfinding and level creation more straightforward . Pathfinding is simpler when constrained to a grid . It makes it easier to maintain constant distances when you’re designing levels . If your character’s jump is 3 units high, for example, you can easily plan where to put platforms, and the player will be able to estimate if he can make the jump or not instantly . Individual tiles can be animated, for example by adding a waterfall, burning torch, spinning fan, and so on . You can make slopes with Tilemaps, but they will be straight surfaces with angles like 45 or 26 .5 degrees . When you want a more organic, less block-based style, use 2D Sprite Shape . With this setup, you’re not constrained to a grid or particular angle . You can make any shape you want using curves . Terrains, hills, grassy fields, and smooth surfaces are all suited to Sprite Shape, which lends a modern look to your scenes compared to the crisper pixel-art style . Turn on the snapping tool to set any angle or curve easily and place elements precisely . Levels and elements created with Tilemaps or Sprite Shapes are easy to edit later . Depending on your visual style, you can use both systems in your game . Both Tilemaps and Sprite Shapes can be modified during runtime to create exciting new gameplay possibilities . For example, Tilemaps can be destructive, and Sprite Shape can be morphed – the possibilities are endless . Read more about the options in the Tilemap API and SpriteShape API docs . On the left, Skul: The Hero Slayer, by SouthPAW Games is a Tilemap-based game, while Oddmar, by Mobge LTD on the right, is a spline-based game . 44.of.119.| unity .com© 2022 Unity Technologies Orthographic or Perspective Camera For most 2D games, you’ll want to set your camera to orthographic mode . It’s the default choice for 2D projects because lines of one dimension are parallel, and you work only in two dimensions . The orthographic mode works for all styles – pixel art games, puzzles, 2D isometric, top-down, platformers . Although 2D games have no real depth, the illusion of depth can be created using the parallax effect . The parallax effect scrolls multiple layers in the background and foreground at different speeds when the camera moves . The intent is to mimic human depth perception, wherein objects farther away appear to move more slowly than those closer to us . In 2D, this is usually done with a script that moves layers with a percentage of camera movement speed . It requires some manual setup to adjust the speed of each parallax layer . If orthographic mode is suitable for all 2D game styles, why even use perspective mode? One reason is that this offers access to parallax effects out of the box since, as the name suggests, a Perspective camera uses a perspective viewpoint . You don’t need to use scripts to handle the scrolling of parallax layers . Instead, you position elements further from the camera on the Z axis and scale them up to account for perspective based on their relative distance from the camera . Perspective camera setup in Tails of Iron By Oddbug Studio . Learn how they created the lighting in their game with Unity . 45.of.119.| unity .com© 2022 Unity Technologies Parallaxed sprites don’t move with the camera every frame, so background objects can be marked as static for batching . Adding some 3D objects into your scene can provide more depth as well . Orthographic mode with scripted parallax effects requires you to set up the scrolling speeds on all layers manually . The depth effect can break if layers have incorrect scrolling speeds, and editing a parallax level requires additional coding . Suppose you’re making a Metroidvania-style game with scenes that include multiple points of entry . In this case, the parallax effect can break because the camera can start at a different position on the X axis than where you edited parallax elements . Once it’s set up, the Perspective camera will work for parallax effects . The only downside is that you need to scale sprites as you move them along the Z axis . Also, approach allows the scene to be split into smaller scenes for additive loading, like a room system that allows for dynamic world loading . The camera you choose doesn’t impact the art creation process, but it does determine how the levels are set up . And, if they’re set up correctly, orthographic and perspective parallax will look the same to the player . To sum up, an orthographic mode is the best choice in most cases, except when you’re using advanced scrolling and parallax . In that case, go with perspective mode . Orthographic mode camera in Dragon Crashers 46.of.119.| unity .com© 2022 Unity Technologies Mixing 2D and 3D If your project uses the Built-In Render Pipeline or the Universal Render Pipeline (URP), it’s easy to mix 2D and 3D elements in the same Scene . 2D Rendering uses Sorting Layers and Sorting Groups to define the order for rendering game elements . Adding the Sorting Group component to a 3D GameObject allows you to easily integrate 3D and 2D objects into the same game . You can have them interact with one another by using a common physics system (either 2D or 3D Physics, depending on the best approach for the game) and mixing 2D and 3D lighting systems through the Camera Stacking feature in URP . Introducing 3D assets in the background of a 2D game can add nice depth to a scene without compromising the gameplay . Top and middle images are from the upcoming Metroidvania-style game Aeterna Noctis, by Aeternum Game Studios S .L . . Bottom image is from Last Night by Odd Tales . 47.of.119.| unity .com© 2022 Unity Technologies Camera Stacking Camera Stacking allows you to layer camera outputs and combine them in one final image . You can combine 2D, 3D, and UI objects with Camera Stacking . At least two cameras are required in the scene for stacking . Choose which one will be the Base Camera for the image you want to be rendered first, and any additional cameras need to be set to Overlay . The Base Camera needs to know which cameras overlay on top and in what order . To do that, go to the Stack option, and select a camera to overlay with the + button . Change the rendering order of Overlay Cameras as needed by dragging them up or down in the list . Use layers to set which objects are rendered by each of the cameras . By default, cameras render every layer, but you can change that by selecting which layers are rendered by the camera in the Culling Mask option on a Camera component . Now, select the GameObjects you want the camera to render, and change their layer to match the one set earlier . That way, objects are categorized to be rendered by different cameras, such as a 3D background and 2D platform layers . Setting up Camera Stacking Selecting cameras to be rendered as overlays Choosing layers to render in the camera’s Culling Mask option 48.of.119.| unity .com© 2022 Unity Technologies Cinemachine for 2D Once you’ve selected the camera type, you’ll need to set it up to follow the gameplay . Unity’s Cinemachine system provides the functionality to do this and much more, such as confining the camera to level bounds, setting up camera transitions, noise, and so on . This section highlights some of the core Cinemachine functionality for 2D games . To get started, install Cinemachine from the Package Manager . Choose version 2 .7 .1 or later . Cinemachine doesn’t create new Unity cameras in a scene . Instead, when a new Cinemachine Virtual Camera or vcam is added to a scene, the CinemachineBrain component is added to the main camera, along with a new GameObject with the default name CM vcam . The Cinemachine Brain monitors all active Virtual Cameras in the scene . Animate the vcams with keyframes, blend or smoothly transition between the cameras, or create a combination of the two to animate one camera while transitioning to another . All of the animation will be processed by the Cinemachine Brain and applied to the main camera – think of it as a powerful animation system that drives your main camera . To create a 2D virtual camera, click on Cinemachine.>.Create.2D.Camera . This will create a Virtual Camera set up for a 2D environment . If it’s your first Virtual Camera in the scene, it will also add a Cinemachine Brain Component to your main camera . Creating a Cinemachine Virtual Camera 49.of.119.| unity .com© 2022 Unity Technologies Cinemachine needs an object to follow, so assign a player character in the Follow field . To ensure that you are operating on a 2D plane and that the camera isn’t panning or tilting, check that the Look At field is empty and Body is set to Framing Transposer . Finally, set the Lens properties for your projects . Keep in mind that some options will be inherited from the main camera’s properties . Expand the Body properties field to find useful options to modify how the Virtual Camera follows its target, such as Offset, Damping, Dead, and Soft Zones . Experiment with these options during Play Mode, and the changes will be saved if you check the Save During Play option . There is also an extension for the Virtual Camera, the CinemachineConfiner2D, which, when activated, limits the camera from moving outside Level bounds, ensuring the player will see only the parts that you want them to see . It also ensures you don’t need to design unnecessary parts of the level . To add CinemachineConfiner2D, select CinemachineConfiner2D from the Add Extension dropdown menu . Cinemachine2DConfiner requires a Collider 2D (Composite or Polygon) as a Bounding Shape 2D . Create an empty GameObject, and add a Composite Collider 2D and Box Collider 2D . A RigidBody 2D will be added automatically; set its Body Type to Static . Also, check the Used by Composite option on the Box Collider 2D . Now, drag this GameObject into the Bounding Shape 2D field of the CinemachineConfiner2D script . Don’t forget to edit the size of the Box Collider 2D so that it’s larger than the size of the camera . Now the camera’s frustum won’t go out the bounding box of the collider . For more details, check the Cinemachine Confiner 2D documentation . Adding CinemachineConfiner2D extension 50.of.119.| unity .com© 2022 Unity Technologies Draw order In a 2D game, all sprites and objects have the same depth . How can you sort them so that some appear in front of others? Unity sorts Renderers according to a priority order that depends on their types and usages . You can specify the render order of Renderers using their Render Queue . In general, there are two main queues: the Opaque queue and the Transparent queue . 2D Renderers are mainly within the Transparent queue and include the Sprite Renderer, Tilemap Renderer, and Sprite Shape Renderer types . 2D Renderers within the Transparent Queue generally follow a priority order . When two or more objects occupy the same space, Unity goes through this list and checks which object should be drawn on top . When there’s a tie, and both objects have the same value, the next criteria on the list is evaluated . The priority order is: 1 . Sorting Layer and Order in Layer 2 . Specify Render Queue 3 . Distance to Camera 4 . Sorting Group 5 . Material/Shader When all of the above values are the same for both objects and a tiebreaker is needed, this process must choose which one to render on top . It’s not an ideal solution, so make sure to set a distinct sorting order using Sorting Layers and Sorting Groups . Sorting Layers The most important sorting criteria are Sorting Layers . All 2D Renderers have this option, and it’s the first thing you need to set up . There is a default sorting layer which you can edit by opening Project Settings, then specifying Tags and Layers options . Editing the Sorting Layer 51.of.119.| unity .com© 2022 Unity Technologies Add, delete, or change the order by dragging the handle on the left of the Layers . Layers that are higher on the list are rendered first and will appear further away from the camera . Plan the Sorting Layers structure, even when designing a mockup to organize your scene early on . Set a sprite’s sorting group as soon as you place it in the scene . These practices will help you to avoid a situation later in your project development when you suddenly realize you have to change sorting settings on potentially thousands of sprites . Avoid.creating.too.many.Sorting.Layers 2D Lights rely on Sorting Layers, so consider lighting when you set the Sorting Layers structure . Know beforehand how you want the lights to behave in your game and what groups will be affected by them . For example, if you’re making an isometric game and plan to have torches that use 2D Lights, will the torches affect their entire surroundings or only the walls? Will characters be affected, or will they be drawn in front of the light? Will you need a Sorting Layer just for the objects that will receive light? Keep these kinds of questions in mind when you’re editing Sorting Layers, and learn more about planning lighting in the 2D Lights section . Be wary of using too many Sorting Layers, which can cause you to lose oversight of all the details . When you need to sort renderers further, use Order in Layer . This allows you to sort objects that are on the same layer easily . Transparency.Sort.Mode. You might want a fake 3D view in your game, such as an axonometric or oblique projection for an isometric, top-down game with a bit of an angle, or a cabinet projection in brawler games . If so, you’ll need to custom sort the renderers by Distance to Camera (point 3 on the sorting priority list above) . Choose a custom axis to sort objects . In the case of a top-down game or brawler, sort objects on the Y axis, so higher characters will be rendered below other characters, giving the illusion that they are further away . To edit this option, find the 2D Renderer Asset created when setting up URP, and change its Transparency Sort Mode option to Custom Axis, then set its Transparency Sort Axis value to 0, 1, 0 . 52.of.119.| unity .com© 2022 Unity Technologies Sorting Group Even if you follow the previous steps and sort on the Y axis, the appearance of your character’s parts might still display incorrectly . It’s not a bug . This is just how sorting works . Sorting doesn’t know which parts belong to which character if they are on the same Sorting Layer . Fortunately, Sorting Group is the fourth criteria on the sorting priority list . Sorting Group is a component that groups Renderers that share a common root for sorting purposes . All Renderers within the same Sorting Group share the same Sorting Layer, Order in Layer, and Distance to Camera . Sorting sprites on the Y axis, the value (X:0, Y:1) 1 tells Unity to follow a downward vector (as in Vector2 . down) for the sorting criteria . The sprites at the top will be drawn first, and the ones at the bottom later, making them visible at the front . Parts of the characters that are on the same Sorting Layer are mixed between two characters . 53.of.119.| unity .com© 2022 Unity Technologies When using characters or other objects that consist of a couple of sprites, put this script on its Parent object (highest in the hierarchy), and set Sorting Layer and Order in Layer just like on any other 2D Renderer . You can see an example of this in this Unite Now technical session . You can also nest Sorting Groups . If you have weapons consisting of multiple sprites that you want to be generated randomly, put them in Sorting Groups to make them display correctly in characters’ hands . Optimization tips —Consider using Tilemaps when your scene consists of many sprites . This enables you to trade many Sprite Renderers (they have an overhead) for just one Tilemap Renderer . —Mark your level colliders as Static for batching . —Put sprites that will likely be together on the scene in a Sprite Atlas . —Simplify sprites’ meshes by using the Custom Outline option in the Sprite Editor . —Cache Sprite Shape geometry by enabling Cache Geometry option (it appears when the Edit Spline button is on) . The Sorting Group makes the characters appear as they should . Creating a Sorting Group in the parent GameObject to ensure that this object and its child objects get sorted as a single element avoiding potential conflicts between its parts and other sprites in the game 54.of.119.| unity .com© 2022 Unity Technologies 2D.Animation 2D animation can be the most time-consuming and challenging part of developing art for a game . Creating stunning animated characters requires considerable animation knowledge of timing, momentum, kinematics, and more . Polishing every frame can take a long time, and storing and displaying these frames requires a lot of memory . Changing the timing or any part of a character can require every frame to be redrawn . Historically, 3D animation has been more straightforward than 2D . You make a 3D model, rig it by adding a skeleton, set up bone weights, and animate it by setting keyframes that the software interpolates between . You make adjustments by editing the keyframes . Thankfully, Unity has developed a toolset that brings greater efficiency to 2D animation, in many ways by mimicking the straightforward ease of the 3D animation process . The 2D Animation package allows you to import your character artwork directly from Photoshop into Unity . Design, import and rig The most vital element in a game is the player’s character, so take enough time to think through the character’s design . There are a few key aspects to consider while planning . Perspective The perspective you choose will impact how the game characters look and are animated . In most game views, characters can be drawn in profile . A slight rotation into a ¾ view allows more facial features to be shown . When using an isometric or ¾ top-down perspective, you can create a similar view, but with a camera tilted a bit from the top to show facial detail . In this perspective, the character will be drawn facing multiple directions . Depending on your desired outcome and budget, you can choose from one of three commonly-used options: —4 directions —6 directions —8 directions Different ways to handle top-down character animations 55.of.119.| unity .com© 2022 Unity Technologies No matter which you choose, you will have to decide whether right- or left- facing animations will have to be flipped to face the opposite direction . In this case, you’ll need to draw respectively: —3 directions: right, up, down —3 directions: right, right-up, right-down —5 directions: right, right-up, up, right-down, down If the animations are flipped, the character’s hands will flip to match . If the character faces right and holds a sword in their right hand and a shield in their left, when the character is flipped to be left-facing, both weapons will have switched hands . Decide whether to accept this trade-off or spend more time making all of the animations face in the right direction . If you’re designing a traditional side-scrolling beat-’em-up game, you can simply use one facing direction . Characters moving up and down will look like they’re sidestepping . Ultimately, it’s up to you whether or not your character looks good in the game’s environment after testing . Your vision is more important than having a realistic view angle and perspective . Reskinning.characters Another benefit to the 2D Animation package is that multiple characters can share the same skeleton and animations . Once you have designed, rigged, and animated one base character, you can then simply swap its skin . Save time by planning ahead . Draw concepts of all the characters that will share the same skeleton, then check whether the skeleton will fit all of them . Do this by drawing a skeleton on a separate layer and overlaying it onto every character . Bear in mind that the layer count must be the same for all characters . Note: In Unity 2021 .1 and newer versions, a new feature called Skeleton sharing streamlines this process . Overlaying skeleton drawing in an image-editing application 56.of.119.| unity .com© 2022 Unity Technologies Performance Skeletal 2D animation requires more processing power than a frame-by-frame approach, which is essentially sprite swapping . A good performance tip is to install Unity’s Burst and Collections packages from the Package Manager . This will improve the runtime performance of the animated sprite’s deformation . Next, determine the resources you’ll need for your target platforms and how many characters will be onscreen at once . For example, with an adventure game where there will be two or three characters on the screen, you can be less conservative with the character detail . You’ll have the luxury of making additional bones and layers, as well as advanced IK – moving eyes, fingers, and more . However, a mobile RPG or shooter with big battles and more than 10 characters should have simpler rigs . It would be reasonable, for example, to have one bone per limb instead of two, or to have a whole face sprite swap instead of having moving eyes on a different layer . When designing game art, take care to plan ahead how many layers you’ll need and how characters will be animated because it’s almost impossible to change these elements later in production . General.2D.animation.rules Here are some good rules to go by when designing a character that will be rigged and animated later . An example of a neutral character pose: Legs and arms can be any position, but they should be unbent . Straining bent limbs will cause pixel stretching . 57.of.119.| unity .com© 2022 Unity Technologies —Draw the character in a neutral position with arms and legs straight . If the parts of the body are drawn bent, it can cause issues when you’re animating . —Make the resolution a little higher than your game’s PPU suggests . While resolution can look good at rest, rotating and stretching images can cause pixelation . —If 2D Lighting will be used extensively in your game and you want to make the most of the normal maps, don’t paint the light and shadow onto your sprite . Instead, paint some nondirectional shadows . This technique is called ambient occlusion . Your sprite will look better, but avoid using any directional light like sunlight . —Body part layers swapped using the Sprite Swap feature should be grouped accordingly . For example, all layers with mouth positions should be placed in a group called “mouth” in the image-editing app . Now that you know what to consider during designing, start up your graphic app of choice and start painting . Learn more about Sprite Swap by visiting the documentation page here . Importing a character into Unity Once completed, your character needs to be imported into Unity . The quickest way to import is through the 2D PSD Importer . This will import all of the character’s layers as sprites and place them exactly as they were painted in the app . If you’re using the 2D project template in Unity, the importer should be already installed . If not, install it using Package Manager . The exporting process simply requires files to be saved as PSB format . This is a format similar to Photoshop’s PSD, but PSB allows for larger file sizes . If you’re using Photoshop, select this format in the Save dialog box . If you’re using another app, just export the project as a PSD file, and change the filename extension to PSB before importing into Unity . Importing into Unity is the same as with other assets . Save the file to the Assets folder, or drag it into the Project window . When an imported PSB file is selected, it will show options similar to the sprite import settings but with additional settings for 2D animation and rigging . 58.of.119.| unity .com© 2022 Unity Technologies The key options to set are: —Import Hidden: This option imports all layers from a PSB file, including hidden layers . —Mosaic: This setting is only available if the Texture Type is set to Multiple . It makes sprites from imported layers and puts them onto a texture atlas . Leave this option enabled if you want to rig a character . —Character Rig: This option generates a character Prefab with the same layers hierarchy and position as in the PSB file . This must be on . —Use Layer Grouping: This adds layer grouping from the PSB file . Turn it on to group parts of a character, such as sprite swapped parts . After setting the options, click Apply . This finalizes the character Prefab, which can now be dragged into a Scene . The Inspector for a character 59.of.119.| unity .com© 2022 Unity Technologies Building a character To start rigging a character, click the Sprite Editor button in the Inspector to access the Sprite Import Settings . Select Skinning Editor from the drop-down menu in the top-left corner of the Sprite Editor window . How to choose tools in Sprite Editor’s window The Skinning Editor with options for animating a character 60.of.119.| unity .com© 2022 Unity Technologies In this window, you can: —Create and edit bones —Create and edit Sprite Geometry —Edit Bone Influence on sprites —Create Categories and Labels for use in Skins and Sprite Swap Creating.the.skeleton Start by making the character’s skeleton . Choose the Create Bone button and left-click on the main window area . The first click will create a bone center, and the second will mark the bone tip location . This tool chains and nests bones inside one another . If you want to change the bone placement, press the right mouse button and left- click where you want the new bone to be located . To control which existing bone will be the parent of the bones to be created, select the existing bone with the left mouse button, then create the new bone . Use the Edit Bone button to refine bones . The Split Bone button allows you to split bones in two . This is a good option for making limbs . If you make one leg bone and click where the knee should be, the bone will then split into thigh and calf . The Bone tab opened to organize parent and children bones 61.of.119.| unity .com© 2022 Unity Technologies You can also reparent and rename bones in the bone list view . To open this view, click the Visibility button on the right of the top bar, then select the Bone tab . To change the bone’s parent, simply drag it in the list view . You can rename bones by clicking on the active bone’s name . Giving bones a name will help you find them later . To verify that the hierarchy is correct, select the Preview Pose button and test some poses . To reset bones positions, press the Reset Pose button on the toolbar . Sprite.Geometry In order to assign sprites to bones, they’ll need to have geometry created . Start by pressing the Auto Geometry button . A small pop-up window will open, allowing you to define how the geometry will be created . It’s a good idea to set all sliders to 0 to keep the geometry as simple as possible . Enable the Weights option to bind bones to the sprites automatically . Clicking the Generate For All Visible button will create and set bone weights for all sprites . To do this for an individual sprite, simply double-click on the sprite . This is useful for tweaking the geometry of certain sprites . Autogenerating sprites’ geometry 62.of.119.| unity .com© 2022 Unity Technologies To go beyond this generated geometry and have full control on a number of vertices and how the geometry bends, the mesh will need to be edited manually . Use the following tools: —Create Vertex: Create new vertices (or points), or move or delete those points —Create Edge: Creates edges, either between two existing points or by creating a new point using the left mouse button; the right mouse button deselects the currently selected point and lets you make an edge between other vertices —Edit Geometry: Move vertices —Split Edge: Splits an edge by creating a vertex in the middle Use as few vertices as possible . Fewer vertices will help you save on performance, since each vertex position needs to be calculated based on the bones’ rotation . Fewer vertices also make for better-looking mesh bending since it’s easier to set weights for fewer points . Additionally, each target platform will have an ideal game vertex count, so it’s always a good idea to optimize geometry . Weights Once the geometry is nice and clean for all of your sprites, it’s time to set up weights . Weights define bone influence on each vertex from 0 to 1, where 0 means that a bone has no influence over the vertex, and 1 means that the vertex will move like it’s glued to the bone . Good weights on the mesh can allow for great-looking bending . Setting weights incorrectly can break the game’s illusion and distort your sprites . To start setting up weights, you need to define which bones will affect a certain sprite . Click the Bone Influence button, and select a sprite . Setting bone influence on a sprite 63.of.119.| unity .com© 2022 Unity Technologies In the small pop-up window, you can set which bones influence the selected sprite . Set only the relevant bones that need to affect the sprite, and remove the rest . From here, set up weight by using the Weight Brush and Weight Slider . The Weight Brush quickly adds the influence of the selected bone to the vertices by painting on them with the mouse . The Weight Slider is more precise, allowing you to select one or more points, then determine the exact influence of each bone with a slider . The brush is useful for quick weight setting, and the slider is useful for fine-tuning the areas where bones bend, like elbows and knees . Tip: When you’re working with elbows and knees, get the best-looking results by aligning the inner and outer vertices to a line which runs through the middle of the bending point where the two bones meet . This line should cross the bones at a 45-degree angle . These vertices should be influenced only by the upper bone . However, every character will be different, so feel free to fiddle with the weights and customize for the best results . To speed things along, open the Dragon Crashers project, and find the following character Prefabs in the section for Prefabs and Prefab Variants: —Prefab\_Character\_Base —PV\_Character\_Witch (uses a different Sprite Library for auto rebinding) —PV\_Character\_Knight —PV\_Character\_Wolfman —PV\_Character\_Skeleton These Prefabs are great examples of shareable animations between characters of the same structure . How to place vertices for the best looking limb bending 64.of.119.| unity .com© 2022 Unity Technologies 2D Inverse Kinematics You probably don’t think about it every day, but the human body’s movement is very complex . If you want to grab a glass of water off of a table, your hand must move to the point in space that the glass occupies . You do all this without even thinking about rotating your arm and forearm, as your brain processes these calculations in the background . To animate the same movement in a game, the rotation of both arm and forearm need to be animated at the same time . It’s a challenging task to match both rotations while making a believable hand movement . The 2D Inverse Kinematics (2D IK) tool, which is a part of the 2D Animation package, calculates the rotations and allows a chain of bones to move them to target positions . To begin, you’ll first need to add an IK Manager 2D on the object at the top of the hierarchy . This component will be responsible for managing all the IK Solvers on the character . Clicking the + button will add a new solver . The solver will calculate bones’ rotation to match the target transform . There are three solvers available: —Limb: This is the standard solver used for legs and arms, which can solve up to two bones and the Effector . —Chain (CCD) – Cyclic Coordinate Descent: This solver gradually becomes more accurate the more times the algorithm is run and is suitable for a longer chain of bones . —Chain (FABRIK) – Forward And Backward Reaching Inverse Kinematics: Like Chain (CCD), this solution becomes more accurate the more times its algorithm is run . It adapts quickly if the bones are manipulated in real-time to different positions . In humanoid characters, the Limb Solver is the best choice because it is fastest and optimized for two-bone limbs . Start by adding Limb Solver to IK Manager 2D’s list, which will create a new GameObject that will include the Limb Solver 2D component . Rename this GameObject to something descriptive like “Leg R LimbSolver2D” or “Arm L LimbSolver2D .” IK Manager 2D component 65.of.119.| unity .com© 2022 Unity Technologies In order to work, the solver needs two GameObject Transforms: the Effector and Target . The Effector is placed inside the last bone in a chain, for example, the tip bone of a finger, and from there, it will try to reach the Target’s position . First, create the Effector . When creating an IK for a leg, there are two bones: the thigh and calf (or shin) . Place the Effector as a child of the calf bone by selecting it and creating a new Empty GameObject . Rename the GameObject as Leg Effector, and move the Effector to the tip of the bone . Add the newly created Effector to the Effector field on the Limb Solver 2D, and press the Create Target button . A target GameObject will be created inside of the Limb Solver object . Now, when the Target object moves the leg will follow . Repeat the whole process of adding IKs with the other limbs . IKs can also be added on non-limb bones, for example, on the head and neck, which allows the character to look around at things . Once you’ve mastered this, there are more advanced use cases . For example, you can set up IKs to make your character aim a gun or to create a procedural walking animation . Limb Solver 2D component 2D IK in action: When you move the Target GameObject, thigh and calf rotations will be calculated automatically to match the Target’s position . 66.of.119.| unity .com© 2022 Unity Technologies Sprite Swap and Skins Not everything can be animated by rotating a bone . Sometimes you need another facial expression or hand pose . In this case, you can exchange one sprite with another by using Sprite Swap . Start using Sprite Swap by assigning a category and label to each of the character’s sprites . The fastest way to assign to sprites is from the Skinning Editor . Press the Visibility button, then go to the Sprite tab, where you will find a list of all sprites . If you’ve put the layers for swap into separate groups before exporting to PSB, they should be grouped now . This is important because grouped sprites will be added to the Sprite Resolver to allow Sprite Swapping . Select all the sprites and groups in the list, and right-click on them . Next, select the following two options in order: Convert Layer to Category and Convert Group to Category . These options will assign an appropriate Category and Label to each sprite automatically . Sprites that are meant to be swapped will be in one category based on group name . Click the Apply button on top . A Sprite Library asset will be created inside the character Prefab, containing all the categories and labels created so far . Remember this asset, as it will be needed later . If you take a look at the sprites which were in the groups, you’ll see there’s now one sprite per category, with the Sprite Resolver component added . Assigning Category and Label to each sprite in Skinning Editor (sprites with the same category can be used and swapped in Sprite Resolver) 67.of.119.| unity .com© 2022 Unity Technologies Sprites that were meant to be swapped have been added to the Sprite Resolver, and you can now implement sprite swap by clicking on them . Use Sprite Swap to animate facial expressions, eyes and mouths, make lip- synced animations, change hand gestures, and more . Sprite Swap also allows character equipment like hats and armor to be swapped . Skins Sprite Library assets let you create skins for your character . A skin changes the look of the character while retaining its animations, which is a great timesaver, indeed . One base character can have all the scripts, and any change will be also applied to other characters . Here is the workflow for setting up skin support on characters: 1 . Finish a base character: Rig it, set up IKs and Sprite Library . Make a Prefab from the character . You can animate the character at any point . 2 . Go to the Skinning Editor of the base character, and click the Copy button on the toolbar . This will copy bones and meshes with weights . 3 . Create a Prefab Variant of this character – this will be the new character with a new look . 4 . Import the PSB of the new character, and open its Skinning Editor . 5 . Paste in the skeleton copied from step 2 by clicking the Paste button on the toolbar . Make sure Bones and Mesh options are selected in the pop-up window, and click the Paste button to confirm . 6 . Fix the geometry so it fits the new sprites . Double check the weights . 7 . Press the Visibility button, and go to the Sprite tab . Select all the sprites and groups in the list, right click on them and select two options: Convert Layer to Category and Convert Group to Category . Hit the Apply button on top . 8 . Go to the Prefab variant created in step 3 . Go to the Sprite Library component and swap the Sprite Library asset for a new character . 9 . To create new characters, follow steps 2 through 8 . Sprite Resolver component 68.of.119.| unity .com© 2022 Unity Technologies By following this workflow, you’ll have one base character Prefab . Other characters will be Variants of this Prefab, so they will have the same components as the base Prefab . If changes are made to the base character, for example, adding or changing IKs or Sorting Groups, other characters will inherit those changes . Animation basics Animations are very important if you want to create convincing characters . Creating great animation requires you to learn animation principles and the tools to apply them . Learning basic animation principles is often neglected, but your game will benefit greatly if you spend a little time polishing your character movement . To create your first animation, open an Animation window by going to Window.>. Animation.>.Animation . Choosing Sprite Library Asset in Sprite Library component The Animation window 69.of.119.| unity .com© 2022 Unity Technologies Select your character . Clicking the Create button will create the first Animation Clip, and you can start by giving the clip a name . An Animation Clip is like a linear recording of how an object’s position, rotation, scale, and other properties change over time . It also creates an Animator Controller, which takes charge of all animation clips and keeps track of which clip should be playing and when the animations should change or blend together . Start animating by clicking the red Record button . Now, all the changes made to the character will be recorded to an animation clip . On the right side of the Animation View is the timeline for the current clip . The keyframes for each animated property appear in this timeline . The white vertical head line shows the current frame – be sure it’s on the frame 0 . Pose your character however you like . One or more keyframes will be created on the timeline, and on the left the names of current animated properties will show . Now, move the head line a few frames forward and change the character pose . A new keyframe (or keyframes) will pop up . When you press the Play button, you’ll see your character moving . You’ve now created your first animation . When the Record button is pressed, every change will create a keyframe on the Animation Timeline . Adding another keyframe along the Timeline creates an animation that will interpolate the keyframes . 70.of.119.| unity .com© 2022 Unity Technologies Animating.Sprite.Swap.–.facial.expressions Animating Sprite Swap works similarly, but it requires one additional step when setting keyframes . Set the new keyframes by choosing a sprite in the Sprite Resolver component . By default, the values between keyframes are interpolated, meaning that if you want to change from the first sprite in the list to the last one in a later frame, all the sprites in between would be shown . Sprite Resolver uses integer numbers to define the index of each sprite, so the interpolation in this case is not desired . To avoid that, select all the keyframes containing Sprite Resolver values, right click and select Both Tangents – Constant . Now the animation timeline will “hold” the values after keyframes, instead of interpolating them, and the Sprite Swap animation should play correctly . How to animate Sprite Resolver by disabling keyframe interpolation Setting Constant Tangents on Sprite Resolver keyframes so the values are not interpolated 71.of.119.| unity .com© 2022 Unity Technologies Optimization tips —Install Burst Package to improve 2D Animation performance . —When making a skeleton, avoid using more bones and sprites than you need . —Simplify skeleton meshes by using as few vertices as possible . —Turn on Culling in the animators . This option will be turned off when the animated character is offscreen to save performance . —Avoid using skeletal animations for objects or characters that are small or come in large numbers, such as background birds, flies, or small animals . Instead, use different techniques like frame-by-frame animation or shaders . 72.of.119.| unity .com© 2022 Unity Technologies 2D.Lights Unity’s advanced 2D dynamic lighting system, in conjunction with normal maps and mask maps, makes your characters pop with gorgeous silhouette lightning and clearly shaded details . Lit environments are more immersive and believable because of the subtle interactions between characters, objects, and the lighting system . 2D Lights can be an integral part of the gameplay . For example, you can use them to create a player’s flashlight as it illuminates just part of a pitch-black corridor, or to show a surveillance camera’s cone of vision that the player needs to avoid . Dynamic lighting can dramatically change a level’s mood, bring out the details of a cave’s torchlit wall, act as light beams coming through a window to illuminate sparkling dust motes, or simply be animated to simulate the day and night cycle . Let’s look at the variety of 2D Lights you can create and how to customize them . Image from Tails of Iron by Oddbug Studio An image from Ultimate Action Hero, a game in development by Jarek Majewski . 73.of.119.| unity .com© 2022 Unity Technologies Types and use cases To add a new 2D Light, go to GameObject.>.Light.>.2D, and select a light type . There are five types of 2D Lights shapes . Freeform This kind of light has a polygonal shape that can be edited in a similar way to Sprite Shape . This is a good tool for efficiently lighting a large part of the environment (such as a lava pool), simulating light shapes (such as god rays coming through a ceiling hole), or conforming to the shape of a window where the light is projected . Adding a 2D Light to the scene Editing the Freeform 2D Light 74.of.119.| unity .com© 2022 Unity Technologies Sprite This shape allows the use of any sprite as a light’s texture . This comes in handy if you want a particular shape that is impossible to achieve with other light types . Some good examples of possible textures are lens flares, glares, light cookies, light shape projections like disco ball lights, or baby lamps projecting stars against the wall . Parametric These lights can be shaped like an n-sided polygon . This is a specific type of light that can be used in inorganic or stylized environments . In future Unity versions, these light types will be default shapes inside the Freeform light options . Sprite Light in action Parametric Lights with 3, 5, and 8 sides 75.of.119.| unity .com© 2022 Unity Technologies Point/Spot The shape of this light can be a circle or a circle sector . This option is good for spotlights or to light a specific point with torch fires, candles, car lights, flashlights, volumetric light, and so on . Global A Global Light doesn’t have a shape and instead lights all objects on the targeted sorting layers . Only one Global Light can be used per Blend Style (the method of interaction between light and the sprites), and per sorting layer . Use it first to add a base environment light . Point light with full and partial arcs Option for Global Light 76.of.119.| unity .com© 2022 Unity Technologies How to use 2D Lights 2D Lights work with the Sprite Renderer, the Sprite Shape Renderer, and the Tilemap Renderer . To fit the workflow, they use Sorting Layers . Each light can affect one or more sorting layers . Select which layers will be affected in the Target Sorting Layers dropdown list . To.control the rendering order of lights that are on the same Sorting Layer, use the Light Order option . The Blend Style option allows you to select the blend style used by this Light . Different blend styles can be customized in the 2D Renderer Asset . Read more about common properties used by the different Light types here. The Alpha Blend on Overlap option blends overlapping lights instead of multiplying their intensity . This option can change 2D light into shadows . Simply set the light’s intensity below 1, and choose a light blue color . You can also attach it to a character to cast a subtle shadow . Selecting which Sorting Layers should be affected by 2D Light Setting up 2D Lights in Tails of Iron by Oddbug Studio 77.of.119.| unity .com© 2022 Unity Technologies Secondary Texture (sprite maps) Normal maps and mask maps are optional when using 2D Lights, but they can take your game’s visuals to a whole new level if you have the budget, time, and art resources for it . Characters and the environment will have even more details that react to light, making their shapes look more defined and three- dimensional . Using Alpha Blend on Overlap to change 2D light into shadow 2D Lights overlap modes Adding Secondary Textures to sprites 78.of.119.| unity .com© 2022 Unity Technologies Every sprite asset can have optional Secondary Textures assigned . These textures can be used by Materials . Change the Secondary Textures by going into Sprite.Editor.>.Secondary.Textures . By default, you can assign two types of textures: normal map and mask map . Normal map contains the angle of every pixel on the object, and mask map can be used for rim lighting and more . You can add your own textures and reference them by name in Shader Graph shaders . There are some good reasons to assign textures on an asset level instead of in the material . One benefit is that Sprite Renderers and other renderers that use sprites can share a material, even when the sprites and secondary textures are different . This means they can be batched to render more efficiently . You’ll need to add normal maps and mask maps to a material when you have a sprite shader . Every sprite would need its own material with a sprite, normal map, and mask map . That would quickly escalate to hundreds of materials in the project . However, when setting the additional textures for every sprite, you can use just one Sprite Material . One material also means one draw call instead of hundreds . Adding Secondary Textures to sprites 79.of.119.| unity .com© 2022 Unity Technologies Normal maps A normal map done well can make or break the illusion of a sprite being 3D . Every pixel in a normal map stores data about the angles of the main texture . The red, green, and blue (RGB) channels store angle data for the X, Y, and Z coordinates . Every light that uses a normal map has a direction, and pixels on a texture with a normal map are shaded based on this direction and the direction of the pixel . This works the way it does in real life – if a pixel is facing the light’s direction then it will be lit, and if it’s facing away it receives no light . Now, take a look at how RGB values affect the angles of a normal map . Using the Frame Debugger allows you to observe every step taken to render a frame . Having many Materials that can’t be batched takes a toll on performance . A normal map 80.of.119.| unity .com© 2022 Unity Technologies The above image is a normal map in which the pixels are facing the camera . Its RGB values are 127, 127, and 255, respectively . Each color channel can have a value from 0 to 255, so 127 is near the middle . To face the surface left (-90 degrees), the R color value needs to be set to 0 . To face the surface right, set R to 255 . To face straight down or up, set the G channel to 0 or 255, respectively . Preparing.sprites.for.2D.lighting Take note of the base-color sprite . If you plan to use 2D lighting extensively in your game and want to make the most of the normal maps, don’t paint the light and shadow onto the sprite . 2D lighting doesn’t look good on a sprite that already has shadows painted on . You will also end up doing double the amount of work because you’ll be painting the lighting in the normal maps . Instead, paint some non-directional shadows, and your sprite will look better as long as you avoid any directional light, such as from the sun . Normal.map.painting.techniques One way to paint a normal map is to make drawings of your sprite that are lit from different angles, then combine them into one texture . The sprite will be lit with one light from the right in the R channel and one light from the top in the G channel . In the B channel, the sprite is lit from the front, but for the sake of simplicity, you can omit this channel when using a normal map with 2D sprites . This is because front lighting in 2D won’t add that much to the overall shading . However, this approach can be time-consuming, as you will need to paint your shading at least twice for the X and Y axis . With 2D Lights turned off, the sprite has the color information (albedo) but looks flat because it doesn’t contain light or shadow information . 81.of.119.| unity .com© 2022 Unity Technologies Another painting approach is to use a normal map-generator app . Open a sprite in a generator app, and you can generate a normal map with just a couple of clicks . Generator apps do not take into account the angles of your sprite, so avoid using them on the entire sprite . They also don’t recognize the objects . They instead estimate shapes from the sprite colors or by adding a general filter similar to bevel or emboss from image editing apps or a relief sculpture . They can’t recognize the angles of the face, for example, but attempt to guess where there should be a change in an angle . It’s a limitation, but they’re still useful for generating the normal maps of sprite sections that are beveled, like chains, cables, or a dragon’s tail, and also surface normals for bricks, stones, wood, and others . Import a section into the normal map generator, tweak the values, export, and then add the necessary parts and details yourself . How to combine two shaded grayscale (lit from top and from right ) images into a normal map Generating crevices in normal map by using Emboss tool in Sprite Illuminator 82.of.119.| unity .com© 2022 Unity Technologies For the last technique, Unity offers a way to generate normal maps from a grayscale heightmap . This is a texture where black represents the minimum surface height and white the maximum height . You need to import an image as a normal.map and check the Create from Grayscale option . This technique is handy for quickly generating normal maps without ever leaving the engine . When using this method, the Bumpiness slider will appear in the Inspector . Unity uses pixel brightness and converts the height differences to normal map angles, and this slider controls the steepness of those angles . A low bumpiness value means that even a sharp contrast in the heightmap will be translated into softer angles and bumps . How.to.paint.normal.maps.onto.sprites To paint a normal map, start by learning which colors to use for different angles . First, obtain a normal map palette so you can sample the colors used to represent the surface angles . Find palettes online, or simply use the palette of colors from the normal maps chapter image . No matter how your painting workflow looks, you’ll only need to copy a palette to your favorite painting app and use the color picker to select a color to paint on your normal map . Angle colors don’t need to be 100% accurate; a few degrees won’t make a difference . However, be sure to keep the overall shape of the sprite believable . If you use an angle color that doesn’t make sense in-context, the whole shape will fall apart when lit . Painting normal maps can be tricky initially because it requires a good spatial imagination . A great place to start is with something simple like the base planes of the head . This simplified model of a human head has a low-poly look, and you can check out this prepared example here . When painting a normal map, try to imagine the basic 3D shapes that are parts of your sprite, then visualize the angles of each individual part . If you know the angle, you’ll know from which part of the palette sprite to sample the color . Converting texture to normal map using Create from Grayscale option 83.of.119.| unity .com© 2022 Unity Technologies This example is working on a flat surface, but the process is similar when you’re painting with softer brushes . You can blend hard edges to achieve a more natural look . A couple of shortcuts to note: When there’s a spherical shape, you can paste the normal sphere from your palette . When you have a cylindrical shape, you can take a part of the sphere, paste and stretch it, or make a gradient . Be aware that copying and pasting parts of normal maps and rotating them breaks the shading . However, this can also be used to your advantage . For example, when you need a concave spherical shape, just rotate the sphere 180 degrees to create a hole . For a normal map to show on one or more sprites, you need to enable normal map function on lights . Choose the method of generating normal maps that works best for you . Most likely there will be many assets made for your game, so focus on the objects that will be most visible and simplify the other parts of the game . How to sample an angle from a normal map palette . Normal map support settings on 2D Light 84.of.119.| unity .com© 2022 Unity Technologies Some tools that can help include: —NormalPainter —Krita’s Tangent Normal Brush —SpriteIlluminator —Laigter —Sprite Lamp Adding rim lighting with Mask Maps Rim lighting is an effect that’s used to highlight the contours of a character . It simulates light coming from behind an object and the natural properties of light scattering . This is called the Fresnel effect . In real life, more light reflects from objects when the angle where the light hits the surface is wider . This is how the normal map looks on a white sprite in-engine . Illustration of the Fresnel effect 85.of.119.| unity .com© 2022 Unity Technologies That’s why the water in a lake is more reflective from a distance, but we can see our feet in the water when we look down . This is also why objects are more reflective on their edges . In 2D graphics, you can simulate this effect by using an additional texture called Mask Map and a special light called Blend Style . Blend Styles determine the way a particular light interacts with sprites in a scene . Light Blend Styles are located in the 2D Renderer asset . Under Light Bend Styles are four options for different blending styles . Leave the first option untouched because it’s the default one, and instead work on the second option . Give it a name like “Rim Light” or “Fresnel” or whatever works for you . Set the Mask Texture channel to R – lights will use the red color of our Mask Map texture . Lastly, set the Blend Mode to Additive . This will make lights be added on top of existing lighting, increasing the brightness . Setting Light Blend Styles options in 2D Renderer Data asset 86.of.119.| unity .com© 2022 Unity Technologies Painting.the.Mask.Map Fresnel light uses the red channel of the Mask Map, but for the sake of simplicity, let’s paint in black and white . The parts that will reflect light will be white, and the unreflective parts will be black . The Fresnel effect impacts the edges of objects, so copy the base sprite, paint it black, then highlight the edges white . It should start to resemble an object that has a bright light shining behind it . To speed things up, add an Inner Glow effect on the object, and paint some details on top . Unfortunately, there’s no app that can speed up this process, so you’ll need to rely on your painting skills here . Setting.Fresnel.light To make the light affect the Mask Map, change its Blend Style to the one created earlier . Mask Map for a base plane head sprite Changing light’s Blend Style to Rim Light 87.of.119.| unity .com© 2022 Unity Technologies Editing shapes in the Shadow Caster 2D component Fresnel lights work best with the Use Normal Maps option enabled and with Distance set to a low value . This prevents highlighting the other side of the object . Adding 2D shadows with 2D Lights 2D Lights can also cast shadows onto a scene . For a GameObject to cast a shadow from 2D light, add a Shadow Caster 2D component to the object . Use the Shadow Caster’s shape editor to edit its geometry so it fits the object’s silhouette . The light also needs to have some options set to cast a shadow . Rim lighting effect on a sprite in the Unity Editor 2D Lights options used when using shadows 88.of.119.| unity .com© 2022 Unity Technologies Use the Shadow Intensity option to see the shadow . This setting determines the light’s opacity on other objects that are in the shadows . When it’s set to 1, the light will not illuminate anything in the shadow area . You can also make the area affected by light visible by using the Volume.Opacity option . The Shadow Volume Intensity controls the opacity of the light volume in the shadow area . How to use 2D Lights on different renderers 2D Lights can be used together with normal maps and mask maps on sprites, but you can also use them on different renderers . Let’s see how . 2D.Tilemap To use 2D Lights on Tilemaps, assign the normal map and mask map textures to the sprites that are used as tiles by using the Sprite Editor’s Secondary Textures module . Secondary textures will be used automatically by the 2D Lights system . Among Us by InnerSloth . Apart from enhancing the visual side of games, shadows can also be a crucial part of the gameplay . Tilemaps with Secondary Maps 89.of.119.| unity .com© 2022 Unity Technologies 2D.Sprite.Shape The Sprite Shape Renderer uses two different materials per object: one for Fill and one for Edge . The Edge Material uses Secondary Maps from the Sprite asset . For the Fill area, use the texture with wrap mode set to Repeat for tiling instead of the sprite . You’ll need to create a new Fill material with Material Property Block enabled for setting secondary textures . 2D Lights with normal mapping and mask maps on 2D Tilemap Example of Sprite Shape GameObjects using normal maps 90.of.119.| unity .com© 2022 Unity Technologies 2D.PSD.Importer.for.animated.characters Setting Secondary Textures in the 2D PSD Importer works similarly, with one minor difference regarding normal maps . The fastest way to make a normal map and mask map for a 2D PSD imported character is by working from a base character .PSB file . 1 . Complete these steps to add a normal map to an animated character: 2 . Duplicate the base character .PSB file . Rename the duplicated file by adding a suffix to its name, for example: \_normal 3 . Open this file in your preferred image editor, and paint a normal map onto each layer . Save the file . 4 . When a PSB with a normal map is imported into Unity, you’ll need to set the Texture Type to Sprite and go into Advanced settings to uncheck sRGB(Color Texture) option . A normal map doesn’t contain color sRGB data, only angle values . 5 . Assign this PSB file as a Secondary Texture of your base character . To make a mask map, repeat the process, give the duplicated file another suffix, and just skip step 3 . Example of Sprite Shape GameObjects using normal maps 91.of.119.| unity .com© 2022 Unity Technologies Optimization tips —Avoid using too many lights in a Scene . —Use as few Sorting layers and Light Blend Styles as possible . —Set a lower value for the Render Texture Scale in Light Blend Styles of 2D Renderer assets . —When using normal maps, set normal lighting Quality of lights to Fast instead of Accurate . —Use 2D Shadows on only a few lights . Adding a normal map to an animated character 92.of.119.| unity .com© 2022 Unity Technologies Advanced. visual.effects Visual effects (VFX) are the cherry on top of any great-looking game, and they’re vital to the gamers’ experience as they play . VFX communicate game events such as environmental hazards and healing zones, and they visually reward the player for well-executed actions, like an action scene culminating in a big, fiery explosion . Unity provides lots of options to add VFX to your game . You can add frame- by-frame animations made in other software, animate particles, or add animated shaders . Frame-by-frame animations Frame-by-frame (or flipbook) animation lets you add effects quickly in Unity . Simply import frames as sprites, then animate the Sprite Property over time in the Animation.window ..You can also select and drag all the frame sprites into the Scene, which will then animate them automatically . While importing frames is fast, drawing each frame to be animated is not, and this process can require much more time and skill than you have available . To save time, you can instead export VFX as frames from other apps . Another shortcut you can use is to select all of the animation frame assets from the Project view, and drag them to the Hierarchy view or Scene . A new GameObject will then be created with an animation that uses the sequence made of the previously selected images . The flipbook animation technique is very performant, so use it when you want to have many instances of the effect onscreen . Remember that many frames in high resolution will require more memory . 93.of.119.| unity .com© 2022 Unity Technologies Frame-by-frame animation can also be used in Particle Systems, where it is referred to as Texture Sheet Animation . Flipbook animations can also be used in the Shader Graph by animating the UV position of texture over time, which creates the illusion of moving frames . Frame-by-frame animation of a flame Setting up frame-by-frame animation in Particle System Flipbook animation in Shader Graph 94.of.119.| unity .com© 2022 Unity Technologies Particles The Particle System allows you to display and animate many smaller images or meshes in order to achieve a single visual effect . Particle properties like size, velocity, color, and rotation can be animated over time using certain predefined rules and randomization . This allows you to create dynamic effects like fire, explosions, smoke, magic spells, and so on . You create a new Particle System by selecting the menu option GameObject.>. Effects.>.Particle.System . Particle System properties 95.of.119.| unity .com© 2022 Unity Technologies Main.Module.properties The Particle System has many modules, but let’s cover a few of the essentials . The first module contains basic particle properties: —Duration: How long the system will run —Looping: Whether the whole system will loop forever —Speed: The initial speed of the particles —Start Size: The initial size of the particles —Color: The initial color of the particles —Gravity: Gravity force applied to the particles Emission Emission controls the rate and timing of emitted particles, while Rate controls how many particles are emitted per unit of time . You can also create bursts of particles, specifying how many to spawn and when . Shape This module defines the volume or surface from which particles can be emitted, and the direction that they will travel . The Shape property defines the shape of the emission volume . Color.over.Lifetime You can control the particles’ color and opacity over its lifetime by evaluating the gradient . On the left of the gradient is the starting color, and on the right is the color particles will have when they die . Size.Over.Lifetime This setting defines the size of a particle along the horizontal axis of a curve . Rotation.Over.Lifetime Rotation over Lifetime gives particles a rotation speed . Noise This module will add randomness to the particle movement . It’s a very quick way to add interesting and complex-looking effects like magic spells, sci-fi energy, exhaust fire, dust motes, and more . 96.of.119.| unity .com© 2022 Unity Technologies Renderer The Renderer module, as seen above, allows you to change how particles will look . There are many settings, but the most important to change is the Material setting, where you can add a new material with a texture . Randomized.particles Most of the particle properties can be randomized to achieve an unpredictable and natural look . The dropdown menu to the right of the particle property allows you to choose from different randomization options . Particle Systems can also be nested within one another . Nesting causes systems to play simultaneously, which allows you to achieve some very complex effects . For example, to create an explosion, you could combine one system for smoke, one for small sparks, and one for flying debris . The Particle System is a very powerful tool that allows you to create almost any VFX for your game . You can even make your effects glow using HDR unlit shader and Bloom post-processing . Test out every property, for even the simplest particles will make your game feel polished . To speed up your game creation process significantly, check the Asset Store for premade particle VFX . The Renderer module Random particle property 97.of.119.| unity .com© 2022 Unity Technologies Shader Graph Another way to make VFX is using shaders . Shaders are a set of instructions for the graphics processor, and they can, for example, calculate pixel colors or vertex positions . Shader Graph enables you to build shaders visually . Instead of writing code, you create and connect nodes in a graph framework . Shader Graph gives instant feedback that reflects your changes, and it’s simple enough for users who are new to shader creation . With the Shader Graph you can: —Warp and animate UVs —Procedurally alter surface appearance —Ad image filters similar to image editing apps —Change an object’s surface based on information like world location, normals, distance from the camera, and more —Tweak shader visuals in a Scene’s context by exposing properties to Material Inspector Using.the.Shader.Graph To start using the Shader Graph for 2D, go to the Project window, right-click, and select Create.>.Shader.>.Universal.Render.Pipeline.>.Sprite.Lit.Shader. Graph (or Sprite.Unlit.Shader.Graph) . Use Sprite Lit Shader when you want your sprite to be affected by lights, which will be the case for almost all characters and objects . Use Sprite Unlit for unlit or emissive surfaces such as fire, light sources, electricity, spells, holograms, or special characters like ghosts . To start creating a shader, name the file first . This will create your initial shader . Then, double-click the file to enter Edit mode . The Shader Graph window 98.of.119.| unity .com© 2022 Unity Technologies This opens the Shader Graph window . Within the central part, called the Workspace, is the Master Stack . This is the final output of the Shader Graph, which is responsible for the shader’s ultimate look . There should only be one Master Stack per shader . The Master Stack contains two Contexts, which correspond to vertex and fragment (or pixel) functions . On the left hand, you’ll see a Blackboard . This contains properties that will be visible in the Inspector and Keywords . At the top right is a Graph Inspector, which has two tabs: Node settings, which allows you to change a selected Node’s settings, and Graph Settings, which changes the entire graph’s settings . From the Inspector, you can switch the Precision mode; this is a good idea to set it to half.on low-end devices . You can also swap the shader Material between lit and unlit . The Main Preview at the bottom is where you can view the final shader . The nodes in Shader Graph are the building blocks that hold inputs, effects, and interactions . A graph proceeds from left to right, so nodes will have input slots on the left, and outputs on the right . To add a new node, right-click anywhere on the workspace, and choose Create. Node from the context menu . You’ll be presented with a list of all nodes grouped by type . Select Input.>.Texture.>.Sample.Texture.2D . An example of a Texture 2D node 99.of.119.| unity .com© 2022 Unity Technologies Connect the RGBA(4) slot of the Sample Texture 2D node to the Base Color(3) in the Master Stack’s input slot . Connect the A(1) slot to Alpha(1) . Now, the Master Stack’s Fragment Context will use the color and alpha of the texture you provide to the Sample Texture 2D node . To reference this texture from outside the shader, you need a property . Click the Plus button located on the Blackboard, and select Texture 2D . Select the newly created property, and options will appear in the Graph Inspector . You can change the property’s name, but more important is the Reference option – change this to \_MainTex . For the texture, use the sprite, which is set in every Sprite Renderer . Sprite Renderer will check for \_MainTex.property in the current Material’s shader and will set its sprite texture as the texture in the shader . Finally, drag this property from the Blackboard to the workspace, and connect it to the Texture(T2).input slot on the Sample Texture 2D node . Hit the Save Asset button on the toolbar, and the shader will be compiled . You can use the Shader Graph just like any other shader in Unity . Right-click in the Project window, choose Create.>.Material,.and select your shader from the list . All of its properties will be available to customize . You can test your shader by applying the created material to a sprite . Of course, this is the simplest shader with just a texture . Feel free to experiment and try out the rest of the nodes . Or maybe you can try to add a normal map and Mask Map (Sprite Mask) to this shader? Hints: Sample Texture 2D Type.needs to be set to Normal to correctly display normal map, and you can check reference names of Normal Map and Mask Map textures in the Secondary Textures window in the Sprite Editor . Good luck! Exposed properties will show in the Inspector view where you can modify the parameters that will be used in the Graph . 100.of.119.| unity .com© 2022 Unity Technologies Vertex displacement The Vertex displacement shader affects the positions of vertices in a geometry of the mesh . You can displace vertices in many ways, and the simplest way is to apply a moving noise . This shader is good for waving objects: foliage, hanging vines and ropes, flags, and so on . You can find an example of this Shader Graph file in the Dragon Crashers project, with the file name ShaderGraph\_Sprite\_Lit\_Waving. Secondary Textures for the barrel sprite . You can check their names and add your own textures that can be referenced in Shader Graph by name . Main part of Waving shader 101.of.119.| unity .com© 2022 Unity Technologies To achieve the wave animation, Gradient Noise is used as a wave mask . Its UV Offset is animated by the Time.node multiplied by a Float named Speed . These all affect the position.of vertices in the.Vertex Context . The sprite that will be affected by the Waving shader needs to have a sufficient vertex count, otherwise the animation will look rough . To edit the vertices, use Skinning Editor Geometry tools . The Vertex context in Shader Graph modifies the vertices position and the Fragment master stack the pixel information . Editing vertices 102.of.119.| unity .com© 2022 Unity Technologies Flow maps Flow maps are textures that store directional information . You can find a flow map shader in the Dragon Crashers demo, with the name ShaderGraph\_Lava . The shader uses the flow map texture to control the direction of the main texture’s UV coordinates . The colors red and green are used to indicate the XY direction that pixels follow in every frame, making the pixels of the main texture “flow .” Open the SubGraph FlowMap to learn how to achieve this effect . Cobweb shader in action (click through to see the animation) . Flow map texture colors explained: The red color controls pixel movement on X axis, green color determines on the Y axis . The shader moves the pixels of the main texture in the directions that are visualized by the arrows . 103.of.119.| unity .com© 2022 Unity Technologies Threshold animations for fluid prop animation Another shader animation technique you can try is called “animated alpha clipping,” which creates smooth animation from a single texture . This occurs by showing a specific range of pixels in each frame based on their alpha values . The texture is single channel, so the effect is simple to achieve . Find an example of it in Dragon Crashers with the name ShaderGraph\_Sprite\_Unlit\_ ThresholdAnim . To achieve this effect, a Smoothstep.node is used . The texture’s red channel is connected to the In(1) slot, and Vertex Color alpha controls the evaluation of the edge and smoothness of the Smoothstep effect . Vertex Color is controlled by the Color property of the Sprite Renderer, so when you change the opacity of the sprite, the texture is animated . This allows the shader to be usable, even on particles . The hand-painted flow map gives the stream of lava a viscous and cartoonish effect, which matches the project’s art direction . A couple of tools you can use for flow map creation include Flow Map Generator / Visualizer and Flow map painter . Animated alpha clipping 104.of.119.| unity .com© 2022 Unity Technologies If you use Affinity Photo, you can paint the texture for this shader black and white, then preview the animation by using Threshold Adjustment while moving the value slider . This effect achieves the look of fluids or splatters, without the need for frame- by-frame animation . You can learn more about this animation in the Surface Tension community post . Previewing threshold animation in Affinity Photo Texture used for the lava effect and how it looks in-game (see how it looks animated here) 105.of.119.| unity .com© 2022 Unity Technologies Reflections.and.refractions One of the most common 2D techniques deals with reflections and refractions, like those you see on water, ice, glass, or in hot air . To achieve this effect, another camera outputs the parts that will be reflected or refracted into a render texture . This texture is then used in a shader, distorted and adjusted as needed, and finally outputted onto the screen . Adding glow around lights To make sprites glow with blinding light, combine the HDR enhanced sprite shader with the Bloom post-processing effect . The setup process for water reflections, created with Lost Crypt demo shader files named ShaderGraph Water Unlit HDR shader in Dragon Crashers (ShaderGraph\_Sprite\_Unlit\_HDRTint) 106.of.119.| unity .com© 2022 Unity Technologies To make this blinding light effect, multiply texture by a Color node that uses HDR Color Mode . In the Material, crank up the HDR value over 1, with the Bloom post-processing effect enabled on the main camera . Sprite masking Sprite Masks are used to either hide or reveal parts of a sprite or group of sprites . For example, you could hide part of an image to produce a portal effect or make a collectible card with a 3D effect . To create a Sprite Mask, go to the menu and select GameObject.>.2D.Object. >.Sprite.Mask ..Next, choose a sprite to be used as a mask shape . Keep in mind that the mask sprite itself will not be visible . Set the Sorting Layers on which the mask will work . The sprite used as the mask image can itself be animated with the animation tool . This enables you to create some interesting effects . For example, you can make a portal appear, then grow bigger or change shape . Mask Sprites need to have their Mask Interaction set in the Sprite Renderer in order to be affected by a Sprite Mask . In the URP’s 2D Renderer, the Depth/ Stencil Buffer must be enabled . Portal Effect created with Sprite Mask and the Particle System Depth/Stencil Buffer option used for masking 107.of.119.| unity .com© 2022 Unity Technologies Comparison of tools 2D.skeletal.animation.vs.frame-by-frame.animation Frame.by.frame2D.skeletal ProsConsProsCons • Artistic look • Can animate everything (easy rotation of character) • Little runtime cost • Costly to make (time, skill) • Difficult to edit later • Consumes large amounts of memory • The animation will always be limited to the frames per second that it was created forthey need to be manually authored if changes to the speed or frame rate of the animation are required • Easy to set up and animate • Easy to edit later • Small texture size • Can support multiple characters or skins per skeleton • Can be edited at runtime to add clothes, weapons, animating IK, and so on • Animation will always be smooth – interpolation • animations can be blended to create smooth transitions • Some runtime cost • Animations like rotating around Y axis are more difficult • Doesn’t work well with pixel art Use.when.you: • Want a great aesthetic or specific style • Focus on pixel art animation • Want simple animation of just a few frames Use.when.you: • Don’t have strong animation skills • Want to make animation quickly • Want multiple skins or characters • Want a better runtime control • Want to save texture space Both techniques can be mixed . The movement of limbs can be driven by bones, but facial expressions can be driven by sprite swaps . 108.of.119.| unity .com© 2022 Unity Technologies Shaders.animation.vs.animation.clips.for.VFX.vs.Particle.System ShadersAnimation.clipsParticle.System ProsConsProsConsProsCons • Achieves effects not possible with other techniques • Procedural effects • Fast creation time • Small texture size • Runtime calculation are hard • Looks great • Artistic control on animation and its frames • Texture size • Takes more time to create individual frames • Hard to customize later • Easy to make and edit later • Can randomize to define a unique look • Complex effects • Require a lot of particles which can be taxing to CPU Use.when.you: • Want simple animation of just a few frames Good for effects that otherwise would take a lot of space/memory when done frame by frame • Great when you need customization • Great for applying effects on materials Use.when.you: • Good for natural- or cartoon- looking animations (insects, birds, smoke effects, etc .) • Very low runtime cost Use.when.you: • Good for effects with a bit of randomization like fire, fluids, and magic spells 109.of.119.| unity .com© 2022 Unity Technologies Tilemaps.vs.Sprite.vs.Sprite.Shape Optimization tips —Try to maintain a low frame count/texture size when using frame-by-frame animation . —With Object Pooling, you can avoid instantiating and destroying VFX assets . Simply activate and deactivate GameObjects . —In the Shader Graph, use half precision whenever possible . TilemapsSpritesSprite.Shape ProsConsProsConsProsCons • Fast creation process for painting, tiles, and rule tiles • Precise • Good for optimizing games • Difficult to to make organic shapes when constrained to a grid • Great for placing objects manually • Hard to paint multiple sprites • Not optimized when used in large numbers • Easy editing of both polygonal and organic shapes • Doesn’t allow for pixel- perfect • placement easily • Textures can be repetitive Use.when.you:.. • Good for precise placement of level elements • Grid is good for pathfinding • Very versatile Use.when.you:. • Good for additional elements, as a supplement to Tilemaps and Sprite Shape Use.when.you:. • Great for organic-looking shapes • Fast level editing 110.of.119.| unity .com© 2022 Unity Technologies Post-processing Overview Post-processing enhances the look of your game by adding effects on the final image frame . These effects can simulate a physical video camera look or be completely stylized . The URP includes post-processing capabilities, so there’s no need to install a separate package, and configuring the effects is straight-forward . To begin, select the main camera, and select the Post Processing option . Post-processing uses the Volume system so to add a new post-processing Volume, select GameObject.>.Volume.>.Global.Volume . On the left is an image of a camera output without post-processing . On the right is the same image with post-processing added . The effects have been exaggerated to show the difference . Apply post-processing effects cautiously, especially in mobile games . Defining a Volume Profile Enabling Post Processing in the main camera 111.of.119.| unity .com© 2022 Unity Technologies Now, create a Volume Profile by clicking the New button . Volume Profile will store your post-processing effects and can be easily shared between Volumes and Scenes . To start adding post-processing effects, click the Add Override button, then select a desired effect from the list . Let’s choose Bloom to start with . Selecting the Bloom post-processing effect Defining Bloom effect properties 112.of.119.| unity .com© 2022 Unity Technologies To adjust the effect’s property, select the adjacent checkbox . A quick reminder: Ensure that the Global Volume’s GameObject layer matches the layer selected in the Mask.option on the main camera . If everything is working correctly, the Bloom effect should be visible in the Game view . Global Volume was used, so the effects should always be visible when the Volume object is active in the Scene . Local.Volumes You can add post-processing effects to an entire level, but it’s also possible to configure effects for parts of a level, such as when the player enters a building . To do that, another Volume Object must be created with a different post- processing Profile attached . Volume’s Mode needs to be set as Local, then add the 3D Box Collider to the Make sure the Post Processing check box in the camera is enabled and that the Layer of the Volume’s GameObject is selected in the Volumes Mask drop list of the camera 113.of.119.| unity .com© 2022 Unity Technologies Volume Object . Post-processing will be applied when the camera enters the Box Collider’s bounds, so make sure its along the Z axis is large enough to contain the camera object . By default, the collider will be too small, so double check the size by in Scene view . Increasing the Blend Distance value will prevent the effects turning on abruptly when the camera enters the Volume zone . Adding a 3D Box Collider to a Volume Object 114.of.119.| unity .com© 2022 Unity Technologies Overview of effects for 2D graphics Post-processing in URP has many built-in effects, and almost every effect can be used in a 2D game . Here’s a quick overview of the effects . Bloom Chromatic.Aberration The Bloom effect creates a glow around the brightest areas of the image, giving the impression that parts are brighter to simulate how a lens captures light . To further enhance the look, try adding a Lens Dirt texture, which will simulate the imperfections on a camera lense . For best performance, disable High Quality Filtering, especially on mobile . This effect creates color distortion on the edges of an image . This simulates lenses that split colors further away from the center . 115.of.119.| unity .com© 2022 Unity Technologies Color.Grading This is a group of effects rather than a single one . The purpose of color grading is to alter the colors of an image to stylize or change the mood of a scene . Color grading can simulate the time of day or temperature of an environment by adjusting its color temperature . These effects have the potential to give a game a very distinct look . The URP uses the following effects to control Color Grading . Channel Mixer: Modifies the influence of each input color channel on the final image Color Lookup: Performant way of color grading by using a single texture Split Toning: Tints different areas of the image based on luminance values, adding hints of different colors to shadows, midtones, and highlights Color Adjustments: Tweaks the overall tone, brightness, and contrast of the final rendered image Lift Gamma Gain: Performs three-way color grading Tonemapping: Allows remapping the HDR values of an image to a new range of values Color Curves: Allows precise color and luminance adjustments to an image Shadows Midtones Highlights: Separately controls the shadows, midtones, and highlights of an image White Balance: Balances color temperature and can also cool or warm the tone of an image 116.of.119.| unity .com© 2022 Unity Technologies Lens.Distortion. . Vignette Vignette darkens the image towards the edges, which is another real-life lens property that draws attention to the center of an image . This will create a barrel distortion effect commonly seen in real-world wide-angle lenses . This curves the straight lines on an image inwards, and it will be more pronounced closer to edges . This effect can be used to replicate an old CRT TV curvature or add a fisheye lens effect . 117.of.119.| unity .com© 2022 Unity Technologies Film.Grain Panini.Projection Optimization tips —Use as few post-processing effects as possible . —Use less intensive effects, such as Bloom, Chromatic Aberration, Color Grading, Lens Distortion, or Vignette, wherever possible . —Film Grain and Panini Projection are more costly . —Disable High Quality Filtering on Bloom Film Grain applies subtle noise over the image, producing an effect similar to a film negative’s emulsion structure and resulting visible grain in analog movies . Designed to help render perspective views with a very large field of view, Panini Projection can also be used in 2D to stylize the image with a cylindrical distortion . 118.of.119.| unity .com© 2022 Unity Technologies Conclusion You’ve come a long way by getting to the end of this guide . I hope the steps and knowledge presented here will help you start on your journey to creating beautiful 2D games in Unity . Over the years, we’ve encountered many people who struggle with game development, those who seem to think there is always one more step to learn or tutorial to watch before they can really start . But the best way to learn is by doing . So start now . Once you take that first step, yes, there’s a good chance you’ll hit a few roadblocks . But then you might have to dive into a tutorial or technical article or get some good tips from a fellow developer, and you’ll be back on your way again . Game development requires you to both do and learn . It will always be a balance between the two . It’s not possible to explore every area of 2D game development in just one e-book . But this is a good reference to keep close at hand as you kick off your project and deepen your knowledge of these tools . There are many additional resources for developers and artists, including Unity Documentation, Unity Learn, and the Unity Blog Good luck! – Jarek Majewski and the Unity 2D team unity .com
---
# Guide e risorse per sviluppatori - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/#content_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
[Cosa è il Power Creep](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
---------------------------------------------------------------------------------
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[29 Aprile 2026](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-power-creep/#respond)
[](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Compilare un videogioco realizzato in Unity per la pubblicazione su Microsoft Store](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[3 Aprile 2026](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[0Comments](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/#respond)
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[19 Marzo 2026](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[0Comments](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/#respond)
Ultimi PostRimani aggiornato
----------------------------
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il Power Creep](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[29 Aprile 2026](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-power-creep/#respond)
Il Power Creep si riferisce al modo in cui videogiochi già rilasciati possono essere in…
[](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Compilare un videogioco realizzato in Unity per la pubblicazione su Microsoft Store](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[3 Aprile 2026](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[0Comments](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/#respond)
Uno degli store meno altisonanti, al contrario di Steam, è senza dubbio il Microsoft Store…
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[19 Marzo 2026](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[0Comments](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/#respond)
Una delle funzionalità che non possono mancare in una app realizzata in Unity, che sia…
[Tutti i Post...](https://www.crearevideogiochi.it/?post_type=post)
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
[Cosa è il Power Creep](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
---------------------------------------------------------------------------------
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[29 Aprile 2026](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-power-creep/#respond)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
###### [Nasce il portale ‘Creare Videogiochi’](https://www.crearevideogiochi.it/nasce-creare-videogiochi/)
[](https://www.crearevideogiochi.it/sors-adversa/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
###### [Sors Adversa](https://www.crearevideogiochi.it/sors-adversa/)
[](https://www.crearevideogiochi.it/cubettiny/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
###### [Cubettiny](https://www.crearevideogiochi.it/cubettiny/)
[](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
###### [Abilitare l’autocomplete(intellisense) per Visual Studio in Unity 3D](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/)
Scelti dalla RedazioneSviluppo videogiochi indie, distribuzione e monetizzazione
--------------------------------------------------------------------------------
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta 2026 dei migliori asset Unity per creatori di videogiochi che puoi trovare sull’Asset Store](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[2 Gennaio 2026](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Comments](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/#respond)
[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [I giochi Meta Quest 3 che dovresti giocare almeno una volta](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[29 Settembre 2025](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[0Comments](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/#respond)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Estensioni di Google Chrome per la gestione di Steam](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[3 Settembre 2025](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[0Comments](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/#respond)
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [La MEGA-Guida italiana all’uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[10 Aprile 2025](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[0Comments](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/#respond)
[](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [I migliori asset Unity per sviluppatori indie presenti sull’Asset Store nel 2025](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[1 Gennaio 2025](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Comments](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/#respond)
[](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [GGWG: Goose Game Without Goose](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[15 Luglio 2023](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
[0Comments](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/#respond)
[](https://prf.hn/click/camref:1101lmimc/creativeref:1011l61478)
© 2020-2026 Desdinova ® / PIVA 03799780162
Non è una testata giornalistica. Tutti i diritti riservati ai legittimi proprietari, anche ove non citati.
[Note legali](https://www.desdinova.it/note-legali)
/ [Privacy Policy](https://www.desdinova.it/privacy)
/ [Cookies Policy](https://www.desdinova.it/cookies?website=crearevideogiochi.it&lang=IT&c=a,c)
[](https://www.crearevideogiochi.it/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2F)
Login
×
Questo sito web utilizza cookie
Questo sito web utilizza i cookie per migliorare la tua esperienza di navigazione. Utilizzando il nostro sito web acconsenti a tutti i cookie in conformità con la nostra policy per i cookie. [Leggi di più](https://www.desdinova.it/cookies?website=autobluonline.com&lang=IT&c=a)
Strettamente necessari
Performance
Salva e chiudi
Accetta tutto
Rifiuta tutto
Mostra dettagli Nascondi dettagli
Dichiarazione sui cookie
Informazioni sui cookie
Strettamente necessari
Performance
I cookie strettamente necessari consentono le funzionalità principali del sito web come l'accesso dell'utente e la gestione dell'account. Il sito web non può essere utilizzato correttamente senza i cookie strettamente necessari.
| | | | |
| --- | --- | --- | --- |Cookie report
| Nome | Provider / Dominio | Scadenza | Descrizione |
| --- | --- | --- | --- |
| trx\_addons\_is\_retina | www.crearevideogiochi.it | 1 giorno | |
I cookie di performance vengono utilizzati per vedere come i visitatori utilizzano il sito web, ad esempio con i cookie analitici. Questi cookie non possono essere utilizzati per identificare direttamente un determinato visitatore.
| | | | |
| --- | --- | --- | --- |Cookie report
| Nome | Provider / Dominio | Scadenza | Descrizione |
| --- | --- | --- | --- |
| \_ga\_P5DJTFD7P3 | .crearevideogiochi.it | 2 anni | |
| \_ga | [Google LLC](https://policies.google.com/privacy) .crearevideogiochi.it | 2 anni | Questo nome di cookie è associato a Google Universal Analytics, che è un aggiornamento significativo del servizio di analisi più comunemente utilizzato da Google. Questo cookie viene utilizzato per distinguere utenti unici assegnando un numero generato in modo casuale come identificatore del cliente. È incluso in ogni richiesta di pagina in un sito e utilizzato per calcolare i dati di visitatori, sessioni e campagne per i rapporti di analisi dei siti. |
I cookie sono piccoli file di testo che vengono collocati sul tuo computer dai siti web visitati. I siti web utilizzano i cookie per aiutare gli utenti a navigare in modo efficiente ed eseguire determinate funzioni. I cookie che sono necessari per il corretto funzionamento del sito web possono essere impostati senza la tua autorizzazione. Tutti gli altri cookie devono essere approvati prima di poter essere impostati nel browser. Puoi modificare il tuo consenso all'utilizzo dei cookie in qualsiasi momento nella nostra pagina dell'informativa sulla privacy.
Consenso per l'ID dei cookie :
Cookie [report](https://cookie-script.com/cookie-report?identifier=3ac55485b27f1d89e69d57585c1c9413)
created by [CookieScript](https://cookie-script.com/ "CookieScript Consent Management Platform")
[Powered by CookieScript](https://cookie-script.com/ "Consent Management Platform")
---
# Lista Giochi Indie - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/giochi-indie/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/giochi-indie/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/giochi-indie/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Giochi indie
[](https://www.crearevideogiochi.it/hellpath/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
#### [Hellpath](https://www.crearevideogiochi.it/hellpath/)
Nome del gioco: Hellpath Sviluppatore: Desdinova.it Componenti del team: 1 Piattaforme: Windows, Web, Android Motore: Unity Genere: Endless-run Lingua: Inglese Stato: Rilasciato …
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/hellpath/#respond)
[](https://www.crearevideogiochi.it/hellpath/)
[](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [GGWG: Goose Game Without Goose](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
Nome del gioco: GGWG - Goose Game Without Goose Sviluppatore: Desdinova Componenti del team: 2 Social: https://www.instagram.com/ggwg\_official/ Piattaforme: Windows, Android Motore: Unity Genere: Puzzle…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/#respond)
[](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
[](https://www.crearevideogiochi.it/cubettiny/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Cubettiny](https://www.crearevideogiochi.it/cubettiny/)
Il primo gioco in cui il game design è stata scritto completamente dall’intelligenza artificiale, lo sviluppo realizzato da umani.
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cubettiny/#respond)
[](https://www.crearevideogiochi.it/cubettiny/)
[](https://www.crearevideogiochi.it/sors-adversa/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Sors Adversa](https://www.crearevideogiochi.it/sors-adversa/)
Sors Adversa è un tributo low-poly agli sparatutto della vecchia scuola con lunghi livelli dettagliati e combattimenti contro enormi boss. Utilizza uno grafica a scorrimento diagonale e una vasta quantità…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/sors-adversa/#respond)
[](https://www.crearevideogiochi.it/sors-adversa/)
[](https://www.crearevideogiochi.it/categoria/giochi-indie/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fhellpath%2F)
Login
×
Questo sito web utilizza cookie
Questo sito web utilizza i cookie per migliorare la tua esperienza di navigazione. Utilizzando il nostro sito web acconsenti a tutti i cookie in conformità con la nostra policy per i cookie. [Leggi di più](https://www.desdinova.it/cookies?website=autobluonline.com&lang=IT&c=a)
Strettamente necessari
Performance
Salva e chiudi
Accetta tutto
Rifiuta tutto
Mostra dettagli Nascondi dettagli
Dichiarazione sui cookie
Informazioni sui cookie
Strettamente necessari
Performance
I cookie strettamente necessari consentono le funzionalità principali del sito web come l'accesso dell'utente e la gestione dell'account. Il sito web non può essere utilizzato correttamente senza i cookie strettamente necessari.
| | | | |
| --- | --- | --- | --- |Cookie report
| Nome | Provider / Dominio | Scadenza | Descrizione |
| --- | --- | --- | --- |
| trx\_addons\_is\_retina | www.crearevideogiochi.it | 1 giorno | |
I cookie di performance vengono utilizzati per vedere come i visitatori utilizzano il sito web, ad esempio con i cookie analitici. Questi cookie non possono essere utilizzati per identificare direttamente un determinato visitatore.
| | | | |
| --- | --- | --- | --- |Cookie report
| Nome | Provider / Dominio | Scadenza | Descrizione |
| --- | --- | --- | --- |
| \_ga\_P5DJTFD7P3 | .crearevideogiochi.it | 2 anni | |
| \_ga | [Google LLC](https://policies.google.com/privacy) .crearevideogiochi.it | 2 anni | Questo nome di cookie è associato a Google Universal Analytics, che è un aggiornamento significativo del servizio di analisi più comunemente utilizzato da Google. Questo cookie viene utilizzato per distinguere utenti unici assegnando un numero generato in modo casuale come identificatore del cliente. È incluso in ogni richiesta di pagina in un sito e utilizzato per calcolare i dati di visitatori, sessioni e campagne per i rapporti di analisi dei siti. |
I cookie sono piccoli file di testo che vengono collocati sul tuo computer dai siti web visitati. I siti web utilizzano i cookie per aiutare gli utenti a navigare in modo efficiente ed eseguire determinate funzioni. I cookie che sono necessari per il corretto funzionamento del sito web possono essere impostati senza la tua autorizzazione. Tutti gli altri cookie devono essere approvati prima di poter essere impostati nel browser. Puoi modificare il tuo consenso all'utilizzo dei cookie in qualsiasi momento nella nostra pagina dell'informativa sulla privacy.
Consenso per l'ID dei cookie :
Cookie [report](https://cookie-script.com/cookie-report?identifier=3ac55485b27f1d89e69d57585c1c9413)
created by [CookieScript](https://cookie-script.com/ "CookieScript Consent Management Platform")
[Powered by CookieScript](https://cookie-script.com/ "Consent Management Platform")
---
# Risorse Esterne - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/risorse-esterne/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/risorse-esterne/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/risorse-esterne/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

Risorse esterne per sviluppatori indie
Questa pagina vuole raccogliere link esterni a risorse, articoli o progetti che possano aiutare lo sviluppatore indie e non. Una raccolta selezionata e costantemente aggiornata dalla Redazione, basata sull’esperienza, le necessità e la voglia di condividere il lavoro che altri hanno già percorso.
[](https://fspy.io/ "fSpy")

fSpy
fSpy is an open source, cross platform app for still image camera matching
[](https://plask.ai/ "Plask - AI Motion Capture and 3D Animation Tool")

Plask – AI Motion Capture and 3D Animation Tool
Plask is a browser-based AI motion capture tool and animation editor. With any camera, creators can digitize their movements, automate animation work, collaborate with colleagues, and export them all on one platform.
[](https://www.youtube.com/watch?v=Xh_b9WDfZ-s "Rendering Realistic LEGO Bricks With Raytracing In Unity")

Rendering Realistic LEGO Bricks With Raytracing In Unity
Learn how we render realistic looking LEGO dioramas in realtime using Unity HDRP and raytracing. Starting from a stylized look we have upgraded the game to u…
[](https://www.gamedeveloper.com/design/challenges-i-faced-to-achieve-60fps-on-a-nintendo-switch-port "Challenges I faced to achieve 60FPS on a Nintendo Switch port")

Challenges I faced to achieve 60FPS on a Nintendo Switch port
Porting to the Nintendo Switch is not that difficult in itself, but optimizing a game with 3d graphics to run at 60FPS can be quite challenging. Learn about my
[](https://it.ign.com/absolver/185716/feature/a-quanto-pare-la-parte-piu-difficile-di-creare-un-videogioco-e-tutto "A quanto pare la parte più difficile di creare un videogioco è... tutto")

A quanto pare la parte più difficile di creare un videogioco è… tutto
Dalle porte agli oggetti, fino ai sistemi di salvataggio: creare un videogioco può essere davvero complicato.
[](https://catlikecoding.com/unity/tutorials/ "Unity C# and Shader Tutorials")

Unity C# and Shader Tutorials
A collection of tutorials for people who want to learn C# and shader programming in Unity. Useful to both novice and experienced developers.
[](https://tools.wwwtyro.net/space-3d/index.html? "Space 3D")

Space 3D
Online skyboxes generator
[](https://elementsofdreams.com/2022/01/12/releasing-games-in-app-stores-the-good-the-bad-and-the-ugly "Releasing Games in App Stores – The Good the Bad and the Ugly")

Releasing Games in App Stores – The Good the Bad and the Ugly
While there are lots of comparison online of game development tools there is very little in the way of comparisons of game marketplaces. With Elements of Dreams we experienced some of the differenc…
[](https://discoverthreejs.com/tips-and-tricks/ "The Big List of three.js Tips and Tricks! | Discover three.js")

The Big List of three.js Tips and Tricks! | Discover three.js
Here lie hundreds of tips, tricks, and suggestions for best practices while building a high performance three.js application.
[](https://tympanus.net/codrops/2021/10/27/creating-the-effect-of-transparent-glass-and-plastic-in-three-js/ "Creating the Effect of Transparent Glass and Plastic in Three.js - Codrops")

Creating the Effect of Transparent Glass and Plastic in Three.js – Codrops
Learn how to create convincing transparent, glass-like and plastic-like materials in Three.js using MeshPhysicalMaterial.
[](https://www.texturecan.com/ "TextureCan - Free High Quality PBR CG Textures for 3D Artists")

TextureCan – Free High Quality PBR CG Textures for 3D Artists
Offers free PBR CG textures, free 3D models for 3D artists. All high quality textures and 3D models are free for commercial use. All materials have at least 4K resolution. SBSAR files are available for CG artists to fine tune procedural texture details.
[](https://www.youtube.com/watch?v=KbtcEVCM7bw "Improve Your Platformer with Forces | Examples in Unity")

Improve Your Platformer with Forces | Examples in Unity
Want to make your character feel fluid and responsive to control? Use these tips and tricks to improve your platformer in any Engine or Language. In this vid…
[](https://www.gameuidatabase.com/ "Game UI Database")

Game UI Database
The ultimate screen reference Tool for game interface designers. Explore over 500 games and 19,000 individual images, and filter by screen type, material, layout, texture, shapes, patterns, genre and more!
[](https://interfaceingame.com/games "Games | Interface In Game")

Games | Interface In Game
Library of video games interfaces to get to know all the mechanics and elements of a game.
[](https://www.crearevideogiochi.it/risorse-esterne/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Frisorse-esterne%2F)
Login
---
# Plastic SCM Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Plastic SCM
[](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
[Plastic SCM](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare un progetto Unity esistente per Unity DevOps Version Control (ex Plastic SCM)](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
La prima opzione che viene in mente di usare per gestire il versioning di un proprio progetto Unity è senza dubbio Git in quanto strumento utilizzato ampiamente nel mondo IT…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/#respond)
[](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
[](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/)
[Plastic SCM](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere il blocco “Hold on – ProjectBrowser.OnGui.repaint” all’avvio di Unity](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/)
Chi utilizza Unity sa che l'avvio di un progetto esistente è una procedura che richiede tempo e sforzi di caricamento non indifferenti da parte dell'editor: asset, shader, scripts, etc ...…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/)
[](https://www.crearevideogiochi.it/scollegare-una-copia-di-un-progetto-unity-da-plastic-scm/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Plastic SCM](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Scollegare una copia di un progetto Unity da Plastic SCM](https://www.crearevideogiochi.it/scollegare-una-copia-di-un-progetto-unity-da-plastic-scm/)
In alcune circostante può rendersi necessario scollegare un progetto Unity gestito tramite Plastic SCM, ad esempio quando se ne vuole fare un backup. L'obiettivo è quindi mantenere il progetto originale…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/scollegare-una-copia-di-un-progetto-unity-da-plastic-scm/#respond)
[](https://www.crearevideogiochi.it/scollegare-una-copia-di-un-progetto-unity-da-plastic-scm/)
[](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fconfigurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm%2F)
Login
---
# iOS Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/ios/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/ios/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/ios/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### iOS
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
Una delle funzionalità che non possono mancare in una app realizzata in Unity, che sia un videogioco oppure una app non-game, è quella dell'invio di notifiche all'utente. L'uso delle notifiche…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
In questo articolo verranno affrontati i diversi aspetti riguardanti lo sviluppo di una app prettamente non-game con Unity, engine notoriamente usato invece per lo sviluppo di videogiochi e applicativi 3D.…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Aggiornare i files di Unity di un progetto Xcode per iOS](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
Una delle prerogative di un app Unity per iOS è che la build genera un cartella progetto Xcode. Tale progetto poi deve essere compilato su un dispositivo con sistema operativo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/#respond)
[](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “Command PhaseScriptExecution failed with a nonzero exit code” durante la compilazione con XCode](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
Durante la compilazione di un progetto Unity per iOS tramite XCode potrebbe "Command PhaseScriptExecution failed with a nonzero exit code" che purtroppo non indica in alcun modo il punto esatto…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
[](https://www.crearevideogiochi.it/categoria/unity/ios/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Finviare-notifiche-push-per-ios-e-android-in-unity%2F)
Login
---
# Tutto quello che c'è da sapere su Kickstarter - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Kickstarter
[](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
#### [Kickstarter vs Indiegogo: quale piattaforma di crowdfunding scegliere per un gioco indie](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/)
Sono molteplici le piattaforme di crowdfunding che è possibile scegliere per il lancio del proprio videogame indie. In questo articolo analizzeremo le differenze, aggiornate a Novembre 2025, tra le due…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/#respond)
[](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/)
[](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
#### [7 consigli per costruire una community da sfruttare nel lancio di un videogioco indie su Kickstarter](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
Il lancio di una campagna Kickstarter, così come il seguire la sua evoluzione durante tutta la durata, è una fase molto delicata e che ha il massimo valore durante i…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/#respond)
[](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
#### [Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
Nella precedente guida abbiamo visto cosa fare per una campagna Kickstarter di successo. In questo post invece cercheremo di capire quali sono gli errori da evitare assolutamente durante lo sviluppo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/#respond)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
#### [Campagna Kickstarter di successo: il giorno perfetto di lancio](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
Per chi deve lanciare una campagna Kickstarter una delle primissime paure che incontra è quella di individuare il giorno corretto per il lancio al fine di massimizzare la resa. La…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/#respond)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
Anya Combs (Director of games di Kickstarter) è indubbiamente la manager più influente in quanto a stretto contatto con gli sviluppatori e tutti coloro che pubblicano giochi sulla piattaforma di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/#respond)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fkickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie%2F)
Login
---
# Android Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/android/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/android/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/android/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Android
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
Una delle funzionalità che non possono mancare in una app realizzata in Unity, che sia un videogioco oppure una app non-game, è quella dell'invio di notifiche all'utente. L'uso delle notifiche…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
In questo articolo verranno affrontati i diversi aspetti riguardanti lo sviluppo di una app prettamente non-game con Unity, engine notoriamente usato invece per lo sviluppo di videogiochi e applicativi 3D.…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Caricare da un .arr le icone per le notifiche Android in Unity](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
Quando si sviluppa una app per Android può essere necessario includere anche funzionalità di notifica. Unity fornisce un asset proprietario per la gestione della notifiche su Android e iOS e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
[](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Creare un archivio di risorse grafiche .aar per un progetto Unity con Android Studio](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
Quando sviluppiamo plugin Android per Unity o vogliamo distribuire una libreria riutilizzabile, il formato corretto non è un APK ma un AAR (Android ARchive). Un file .aar è l’equivalente di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/#respond)
[](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
[](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Visualizzare un Interstitial ADS di Unity Level Play Ads Mediation](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
Unity LevelPlay è diventato da poco il sistema principale per la gestione degli annunci di Unity (dopo l'acquisizione avvenuta nel 2023 di ironSource). Per iniziare a sviluppare la soluzione integrata…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/#respond)
[](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
[](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Usare AdsMediation LevelPlay (ex ironSource) di Unity per gestire gli annunci in-game su Android](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
Era il 2022 quando Unity concludeva l'acquisizione del servizio ironForce per la gestione della monetizzazione in-game in applicativi sviluppati con il proprio editor. Ad oggi il servizio è chiamato LevelPlay…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/#respond)
[](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
Scegliere il template Unity: 2D (URP) o 2D Core Poiché la tua app mostra dati in una tabella e non necessita di grafica 3D complessa, il template 2D è la…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/#respond)
[](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Asset e componenti indispensabili per lo sviluppo di una app non-game per Android con Unity](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
Unity è sicuramente un sistema potente ed affidabile per la creazione di videogiochi e applicazioni grafica multimediali. Viene però molto meno usato però nella realizzazione di app Android non-games di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/#respond)
[](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come configurare un progetto Unity per una build Android](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
Unity è uno strumento molto potente e permette di creare facilmente applicazioni per dispositivi mobile. La configurazione del progetto per build Android però potrebbe essere difficoltosa e necessitare di verifiche…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/#respond)
[](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
[](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
Meta Quest 3 non è unicamente un sistema chiuso, ma è un sistema molto aperto che permette molteplici attività tra cui lo sviluppo di applicativi tramite Unity. Meta ha quindi…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/#respond)
[](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[](https://www.crearevideogiochi.it/categoria/unity/android/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Finviare-notifiche-push-per-ios-e-android-in-unity%2F)
Login
---
# Realtà Virtuale Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/realta-virtuale/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/realta-virtuale/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/realta-virtuale/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Realtà Virtuale

[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [I giochi Meta Quest 3 che dovresti giocare almeno una volta](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
In questo articolo riportiamo una lista, in continuo aggiornamento, di videogames per Meta Quest3 che vale la pena provare almeno una volta con il proprio visore VR. Una lista con…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/#respond)
[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
Meta Quest 3 non è unicamente un sistema chiuso, ma è un sistema molto aperto che permette molteplici attività tra cui lo sviluppo di applicativi tramite Unity. Meta ha quindi…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/#respond)
[](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
#### [Le esperienze in VR per Meta Quest 3/3S che dovresti far provare a tuo padre e tua madre di oltre 60 anni (e non solo)](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/)
Spesso ci si chiede quanto i nostri genitori, magari di una certa età, possano capire delle nuove tecnologie e, ancor più spesso, si tende a tenerli all'oscuro e distanti da…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/#respond)
[](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/)
[](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Unity. Guida pratica per sviluppare applicazioni di realtà virtuale e aumentata](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
Unity è un motore grafico multipiattaforma che consente lo sviluppo di contenuti interattivi e fornisce un set di strumenti intuitivi, accessibili e adatti a qualsiasi settore, dal mondo dei videogame…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/#respond)
[](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
[](https://www.crearevideogiochi.it/vr-developer/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
#### [VR Developer](https://www.crearevideogiochi.it/vr-developer/)
Realtà virtuale e realtà aumentata sono termini di un nuovo paradigma tecnologico, capace di immergere le persone in un’esperienza che va oltre la percezione del mondo reale. Dopo i pionieristici…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/vr-developer/#respond)
[](https://www.crearevideogiochi.it/vr-developer/)
[](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
#### [Realtà Virtuale e Realtà Aumentata](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
Realtà aumentata, realtà virtuale, Mixed Reality, Cross Reality. Sono anni che sentiamo questi termini, eppure fino a ora tutto quello che abbiamo visto è stato qualche divertente effetto speciale e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/#respond)
[](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
[](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
Meta (ex Facebook) ha da un paio di anni messo in commercio Oculus Quest 2o ssibile interfacciarlo a Unity attraverso gli ultimi aggiornamenti di Oculus Integration…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/#respond)
[](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
[](https://www.crearevideogiochi.it/categoria/realta-virtuale/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fi-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta%2F)
Login
---
# Social Media Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/marketing/social-media/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/marketing/social-media/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/marketing/social-media/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Social Media
[](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Canali Telegram che dovresti seguire se sei uno sviluppatore Unity di videogiochi indie](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
Telegram è un sistema di messaggistica molto potente ma anche un social network dalle mille risorse. La differenza principale rispetto ad altre app è quella di offrire la possibilità di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/#respond)
[](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
[](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Subreddit di Reddit che dovresti seguire se sei uno sviluppatore di videogiochi indie](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/)
Senza dubbio Reddit non è l'aggregatore social più utilizzato in Italia (complice anche essere molto famoso negli Stati Uniti e quindi essere pressoché in inglese) ma è comunque una fonte…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/#respond)
[](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/)
[](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
#### [Hashtag da seguire e utilizzare sui social se sei uno sviluppatore di videogames indie](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/)
Uno degli aspetti oggi più interessanti della rete è la possibilità di venire in contatto con realtà emergenti oppure studi consolidati e studiandone i contenuti da loro pubblicati. La difficoltà…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/#respond)
[](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/)
[](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
#### [7 consigli per costruire una community da sfruttare nel lancio di un videogioco indie su Kickstarter](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
Il lancio di una campagna Kickstarter, così come il seguire la sua evoluzione durante tutta la durata, è una fase molto delicata e che ha il massimo valore durante i…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/#respond)
[](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
#### [9 canali Youtube che devi seguire se sei uno sviluppatore indie](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
Indubbiamente la vita dello sviluppatore indie (o indiedev come si usa sulle biografie social) è ricca di difficoltà in quanto non si deve fare unicamente la parte dello sviluppatore ma…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/#respond)
[](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
[](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
[Video](https://www.crearevideogiochi.it/categoria/unity/video/)
#### [15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
Di seguito una lista non ordinata dei migliori canali Youtube riguardanti lo sviluppo di videogiochi e applicazioni utilizzando come strumento Unity. Si passa da semplici tutorials per iniziare fino a…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/#respond)
[](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
[](https://www.crearevideogiochi.it/categoria/marketing/social-media/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcanali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie%2F)
Login
---
# Steam Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/marketing/steam/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/marketing/steam/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/marketing/steam/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Steam
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Senza categoria](https://www.crearevideogiochi.it/categoria/senza-categoria/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Pubblicare una build Unity tramite SteamPipeGUI di Steamworks SDK](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
La pubblicazione del proprio gioco o applicativo su Steam è una procedura alquanto delicata e complessa, soprattutto per via della struttura dei Depot e delle build dei pacchetti. Un modo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/#respond)
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Risolvere l’errore “I pacchetti del Negozio e quelli di Devcomp corrispondono” durante la pubblicazione di Steam](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
La pubblicazione di un gioco sulla piattaforma Steam può essere una procedura molto complessa in quanto contempla la pubblicazioni di build e depots. Uno degli errori più comuni è la…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/#respond)
[](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
[](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Dimensioni delle immagini da pubblicare nel negozio di Steam](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
E' indubbio che lo sviluppo di un videogame passa anche dalla sua promozione e distribuzione, così come è indubbio che Steam sia una delle piattaforme chiave per far conoscere e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/#respond)
[](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Estensioni di Google Chrome per la gestione di Steam](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
Di seguito una esaustiva raccolta di estensione per il browser web Google Chrome che permettono l'arricchimento della pagina del sito Steam attraverso funzioni e proprietà utili come ad esempio il…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/#respond)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [I videogiochi indie su Steam che dovresti tenere d’occhio](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/)
In questo articolo proponiamo una lista di videogiochi indie attualmente presenti su Steam, ma non ancora rilasciati o in Early Access, che catturano l'attenzione per lo stile grafico particolare, il…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/#respond)
[](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/)
[](https://www.crearevideogiochi.it/categoria/marketing/steam/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fpubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk%2F)
Login
---
# Curiosità Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/curiosita/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/curiosita/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/curiosita/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Curiosità
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il Power Creep](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
Il Power Creep si riferisce al modo in cui videogiochi già rilasciati possono essere in qualche modo "sbilanciati" dal graduale aumento di potenza dei contenuti rilasciati successivamente, rendendo di fatto…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-power-creep/#respond)
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
Il fallimento non è il problema: è il recupero che decide se un giocatore rimane in gioco In moltissimi videogiochi, il fallimento è lo stato più frequente. Platform, roguelike, soulslike:…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/#respond)
[](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [I giochi Meta Quest 3 che dovresti giocare almeno una volta](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
In questo articolo riportiamo una lista, in continuo aggiornamento, di videogames per Meta Quest3 che vale la pena provare almeno una volta con il proprio visore VR. Una lista con…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/#respond)
[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Cosa è la Cinematica Inversa (IK)](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/)
Quando si approccia lo sviluppo di modelli animati attraverso bones e giunture, uno dei primi problemi che ci si trova ad affrontare è quello di implementare un modo per definire…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/#respond)
[](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/)
[](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Chi è l’Hardcore Gamer](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/)
In questo post cercheremo di dare una definizione del termine "Hardcore Gamer", termine usato nel mondo videoludico per identificare a giocatore incallito e con la passione sfrenata per i videogames.…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/#respond)
[](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/)
[](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Chi è il Casual Gamer](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/)
In questo post cercheremo di dare una definizione del termine "Casual Gamer", termine che negli ultimi anni sta avendo un grande successo in quanto, grazie ai dispositivi mobile e le…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/#respond)
[](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/)
[](https://www.crearevideogiochi.it/cosa-e-un-postmortem/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è un Postmortem](https://www.crearevideogiochi.it/cosa-e-un-postmortem/)
Sfortunatamente per gli sviluppatori di videogiochi, non si sa mai la reazione del pubblico fino a quando il gioco non viene rilasciato. Le vendite iniziano ma dopo qualche giorno le…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-un-postmortem/#respond)
[](https://www.crearevideogiochi.it/cosa-e-un-postmortem/)
[](https://www.crearevideogiochi.it/cosa-e-hd-2d/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è l’HD-2D](https://www.crearevideogiochi.it/cosa-e-hd-2d/)
Correva il mese di gennaio 2019 quando Square Enix registrava presso la WIPO (Organizzazione Internazionale della Proprietà Intellettuale) i marchi "HD-2D" e "HD2D". Tale dicitura fu usata per presentare il…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-hd-2d/#respond)
[](https://www.crearevideogiochi.it/cosa-e-hd-2d/)
[](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
#### [19+ film, serie e miniserie da vedere se vuoi avviare una startup](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
L'idea di uno studio di sviluppo di videogiochi può essere allettante, creativa ed entusiasmante, soprattutto perchè nasce da una passione. Per questo motivo di seguito una lista dei film e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/#respond)
[](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
Si, esiste anche il 2.5D ed è esattamente tra il 2D ed il 3D. Di seguito una breve analisi del contesto e alcuni esempio di due dimensioni... e mezza. 3D:…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-2-5d/#respond)
[](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
[](https://www.crearevideogiochi.it/categoria/curiosita/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-il-power-creep%2F)
Login
---
# Glossario Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/curiosita/glossario/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/curiosita/glossario/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/curiosita/glossario/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Glossario
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il Power Creep](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
Il Power Creep si riferisce al modo in cui videogiochi già rilasciati possono essere in qualche modo "sbilanciati" dal graduale aumento di potenza dei contenuti rilasciati successivamente, rendendo di fatto…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-power-creep/#respond)
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
Il fallimento non è il problema: è il recupero che decide se un giocatore rimane in gioco In moltissimi videogiochi, il fallimento è lo stato più frequente. Platform, roguelike, soulslike:…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/#respond)
[](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Cosa è la Cinematica Inversa (IK)](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/)
Quando si approccia lo sviluppo di modelli animati attraverso bones e giunture, uno dei primi problemi che ci si trova ad affrontare è quello di implementare un modo per definire…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/#respond)
[](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/)
[](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Chi è l’Hardcore Gamer](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/)
In questo post cercheremo di dare una definizione del termine "Hardcore Gamer", termine usato nel mondo videoludico per identificare a giocatore incallito e con la passione sfrenata per i videogames.…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/#respond)
[](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/)
[](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Chi è il Casual Gamer](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/)
In questo post cercheremo di dare una definizione del termine "Casual Gamer", termine che negli ultimi anni sta avendo un grande successo in quanto, grazie ai dispositivi mobile e le…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/#respond)
[](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/)
[](https://www.crearevideogiochi.it/cosa-e-un-postmortem/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è un Postmortem](https://www.crearevideogiochi.it/cosa-e-un-postmortem/)
Sfortunatamente per gli sviluppatori di videogiochi, non si sa mai la reazione del pubblico fino a quando il gioco non viene rilasciato. Le vendite iniziano ma dopo qualche giorno le…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-un-postmortem/#respond)
[](https://www.crearevideogiochi.it/cosa-e-un-postmortem/)
[](https://www.crearevideogiochi.it/cosa-e-hd-2d/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è l’HD-2D](https://www.crearevideogiochi.it/cosa-e-hd-2d/)
Correva il mese di gennaio 2019 quando Square Enix registrava presso la WIPO (Organizzazione Internazionale della Proprietà Intellettuale) i marchi "HD-2D" e "HD2D". Tale dicitura fu usata per presentare il…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-hd-2d/#respond)
[](https://www.crearevideogiochi.it/cosa-e-hd-2d/)
[](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
Si, esiste anche il 2.5D ed è esattamente tra il 2D ed il 3D. Di seguito una breve analisi del contesto e alcuni esempio di due dimensioni... e mezza. 3D:…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-2-5d/#respond)
[](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
[](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
I pixel E' indubbio che la parola pixel è ormai entrata nel gergo comune. La si può trovare mentre si acquista una fotocamera online o uno smartphone (i famosi megapixel)…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/#respond)
[](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
[](https://www.crearevideogiochi.it/cosa-e-una-ip/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
Capita spesso, sia in news di settore ma anche in gruppi o forum dedicati, di incontrare il termine IP riferito al mondo videoludico. Questo termine è diventato di uso comune…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-una-ip/#respond)
[](https://www.crearevideogiochi.it/cosa-e-una-ip/)
[](https://www.crearevideogiochi.it/categoria/curiosita/glossario/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-il-power-creep%2F)
Login
---
# Libri e eBook per sviluppatori - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/libri/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/libri/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/libri/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Libri
La nostra sezione Libri e eBook per sviluppatori di videogiochi indie. Troverete sicuramente qualche libro che fa al caso vostro.
[](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Unity 6 Shaders and Effects Cookbook – 5° edizione](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
"Unity 6 Shaders and Effects Cookbook" di John P.Doran è un libro di 500 pagine che racchiude tutto lo scibile riguardante la generazione e la scrittura di shader in Unity…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/#respond)
[](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
[](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Tutti gli ebook free gratuiti rilasciati da Unity](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/)
Di seguito una lista di tutti gli ebook gratuiti rilasciati, negli anni, dal team di Unity per tutti gli sviluppatori di videogames e applicativi attraverso il famoso engine grafico... e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/#respond)
[](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/)
[](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
#### [Game Feel: A Game Designer’s Guide to Virtual Sensation](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/)
"Game Feel" propone la sensazione (il feel) come un linguaggio nascosto nel game design che nessuno ha ancora completamente articolato. Il linguaggio potrebbe essere paragonato agli elementi costitutivi della musica…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/#respond)
[](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/)
[](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
#### [GAMEDEV: 10 Steps to Making Your First Game Successful](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/)
Questo libro guida attraverso un processo passo passo per creare un gioco commerciale. Insegna come apprendere tutte le abilità necessarie e copre vari aspetti dello sviluppo del gioco: mentalità, preproduzione,…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/#respond)
[](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/)
[](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
#### [Chiedi a Iwata – In italiano](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/)
Finalmente tradotto in italiano il libro Ask Iwata - Chiedi a Iwata! Satoru Iwata è stato l’amatissimo amministratore delegato di Nintendo per più di dieci anni. Sotto la sua direzione…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/#respond)
[](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/)
[](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
#### [Giocarsi. Gaming e gamification in contesti professionali](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/)
Da bambini era un continuo “giocarsi”, sfruttare le potenzialità espressive del gioco, la sua straordinarietà e capacità di andare oltre gli schemi precostituiti per favorire creatività e innovazione. Perché non…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/#respond)
[](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/)
[](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Unity Tutorial: Verso la creazione di un videogioco](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/)
Nel presente manuale è descritta la realizzazione di un semplice gioco 2D sviluppato per essere installato sui dispositivi mobile Android con il motore grafico Unity. Tutto il progetto è disponibile…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/#respond)
[](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/)
[](https://www.crearevideogiochi.it/programmare-con-unity-3d/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Programmare con Unity 3D](https://www.crearevideogiochi.it/programmare-con-unity-3d/)
Unity è un potente motore per la creazione di giochi su più piattaforme. Mentre Unity Editor gira sul linguaggio di programmazione C #, è persino possibile sviluppare giochi senza codifica.Ruggine,…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/programmare-con-unity-3d/#respond)
[](https://www.crearevideogiochi.it/programmare-con-unity-3d/)
[](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
#### [Game hero. Viaggio nelle storie dei videogiocatori](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/)
In questo libro Viola Nicolucci, psicologa e psicoterapeuta che utilizza e studia la cultura e il linguaggio dei videogame, ci introduce ad alcune e significative storie vere di videogiocatori a…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/#respond)
[](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/)
[](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Unity. Guida pratica per sviluppare applicazioni di realtà virtuale e aumentata](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
Unity è un motore grafico multipiattaforma che consente lo sviluppo di contenuti interattivi e fornisce un set di strumenti intuitivi, accessibili e adatti a qualsiasi settore, dal mondo dei videogame…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/#respond)
[](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
[](https://www.crearevideogiochi.it/categoria/libri/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Funity-6-shaders-and-effects-cookbook-5-edizione%2F)
Login
---
# Risoluzione di errori Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Risoluzione di errori
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “Command PhaseScriptExecution failed with a nonzero exit code” durante la compilazione con XCode](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
Durante la compilazione di un progetto Unity per iOS tramite XCode potrebbe "Command PhaseScriptExecution failed with a nonzero exit code" che purtroppo non indica in alcun modo il punto esatto…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore ‘RenderTexture.Create failed depth/stencil format unsupported – D32 SFloat S8 UInt (94)’ per Android in Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/)
Può capitare, durante il runtime di un applicativo Unity compilato per Android, di incorrere nell'errore "RenderTexture.Create failed depth/stencil format unsupported - D32 SFloat S8 UInt (94) - There is no…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “Questa release non è conforme al requisito dei 64 bit di Google Play” in Google Play Console per Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity/)
Può capitare che durante la pubblicazione del proprio applicativo Unity sullo store Google Play, venga visualizzato l'errore "Questa release non è conforme al requisito dei 64bit di Google Play" in…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity/)
[](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Evitare problemi di Scattering dovuti alla distanza dall’origine in Unity](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
In Unity, quando si crea un livello in cui il giocatore si muove continuamente in una data direzione, uno dei problemi principali da considerare è la precisione a virgola mobile,…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/#respond)
[](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “Failed to present D3D11 swapchain due to device reset/removed” in Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/)
Durante lo sviluppo di progetti in Unity può capitare di incorrere nell'errore "Failed to present D3D11 swapchain due to device reset/removed" che di punto in bianco blocca l'editor e lo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere il problema della preview non visualizzata dei prefab di Unity](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/)
Può capitare che durante l'utilizzo di Unity, quando ad esempio si importano prefab da pacchetti asset esterni, non vengano visualizzate le preview nell'editor di progetto e dunque sia pressoché impossibile…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “unable to find jar in the system path unity” in Unity per Android](https://www.crearevideogiochi.it/come-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android/)
Durante il primo switch di build verso quella Android, Unity spesso può mostrare l'errore "Unable to find jar in the system path unity". Questo messaggio indica che l'editor non riesce…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android/)
[](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/)
[Plastic SCM](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere il blocco “Hold on – ProjectBrowser.OnGui.repaint” all’avvio di Unity](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/)
Chi utilizza Unity sa che l'avvio di un progetto esistente è una procedura che richiede tempo e sforzi di caricamento non indifferenti da parte dell'editor: asset, shader, scripts, etc ...…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere il warning ‘This Tween has been killed and is now invalid’ di DOTWeen in Unity](https://www.crearevideogiochi.it/come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity/)
DOTWeen è una delle migliori librerie per Unity che permette di implementare semplici animazioni (tween) da applicare a svariati oggetti dell'engine, oltre ad avere semplici componenti da utilizzare ma permettere…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “ConvexHullLib::cleanupVertices: Less than four valid vertices were found” in Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity/)
Durante il debug di una build di Unity potrebbe capitare di imbattersi in uno strano errore mostrato nella "Develoment Console" che non viene mostrato in Editor: "ConvexHullLib::cleanupVertices: Less than four…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity/)
[](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode%2F)
Login
---
# Marketing per sviluppatori indie - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/marketing/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/marketing/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/marketing/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Marketing
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Senza categoria](https://www.crearevideogiochi.it/categoria/senza-categoria/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Pubblicare una build Unity tramite SteamPipeGUI di Steamworks SDK](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
La pubblicazione del proprio gioco o applicativo su Steam è una procedura alquanto delicata e complessa, soprattutto per via della struttura dei Depot e delle build dei pacchetti. Un modo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/#respond)
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Risolvere l’errore “I pacchetti del Negozio e quelli di Devcomp corrispondono” durante la pubblicazione di Steam](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
La pubblicazione di un gioco sulla piattaforma Steam può essere una procedura molto complessa in quanto contempla la pubblicazioni di build e depots. Uno degli errori più comuni è la…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/#respond)
[](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
[](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Dimensioni delle immagini da pubblicare nel negozio di Steam](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
E' indubbio che lo sviluppo di un videogame passa anche dalla sua promozione e distribuzione, così come è indubbio che Steam sia una delle piattaforme chiave per far conoscere e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/#respond)
[](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Estensioni di Google Chrome per la gestione di Steam](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
Di seguito una esaustiva raccolta di estensione per il browser web Google Chrome che permettono l'arricchimento della pagina del sito Steam attraverso funzioni e proprietà utili come ad esempio il…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/#respond)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Canali Telegram che dovresti seguire se sei uno sviluppatore Unity di videogiochi indie](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
Telegram è un sistema di messaggistica molto potente ma anche un social network dalle mille risorse. La differenza principale rispetto ad altre app è quella di offrire la possibilità di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/#respond)
[](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
[](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [I videogiochi indie su Steam che dovresti tenere d’occhio](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/)
In questo articolo proponiamo una lista di videogiochi indie attualmente presenti su Steam, ma non ancora rilasciati o in Early Access, che catturano l'attenzione per lo stile grafico particolare, il…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/#respond)
[](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/)
[](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Subreddit di Reddit che dovresti seguire se sei uno sviluppatore di videogiochi indie](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/)
Senza dubbio Reddit non è l'aggregatore social più utilizzato in Italia (complice anche essere molto famoso negli Stati Uniti e quindi essere pressoché in inglese) ma è comunque una fonte…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/#respond)
[](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/)
[](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
#### [Hashtag da seguire e utilizzare sui social se sei uno sviluppatore di videogames indie](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/)
Uno degli aspetti oggi più interessanti della rete è la possibilità di venire in contatto con realtà emergenti oppure studi consolidati e studiandone i contenuti da loro pubblicati. La difficoltà…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/#respond)
[](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/)
[](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
#### [Kickstarter vs Indiegogo: quale piattaforma di crowdfunding scegliere per un gioco indie](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/)
Sono molteplici le piattaforme di crowdfunding che è possibile scegliere per il lancio del proprio videogame indie. In questo articolo analizzeremo le differenze, aggiornate a Novembre 2025, tra le due…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/#respond)
[](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/)
[](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
#### [7 consigli per costruire una community da sfruttare nel lancio di un videogioco indie su Kickstarter](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
Il lancio di una campagna Kickstarter, così come il seguire la sua evoluzione durante tutta la durata, è una fase molto delicata e che ha il massimo valore durante i…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/#respond)
[](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[](https://www.crearevideogiochi.it/categoria/marketing/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fpubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk%2F)
Login
---
# Redazione Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/redazione/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/redazione/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/redazione/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Redazione
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta 2026 dei migliori asset Unity per creatori di videogiochi che puoi trovare sull’Asset Store](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
Come ogni anno proponiamo una raccolta corposa di Asset presenti sullo Store di Unity per facilitare lo sviluppo e la creazione di videogiochi e app in Unity. Risorse importanti, gratuite…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/#respond)
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [I giochi Meta Quest 3 che dovresti giocare almeno una volta](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
In questo articolo riportiamo una lista, in continuo aggiornamento, di videogames per Meta Quest3 che vale la pena provare almeno una volta con il proprio visore VR. Una lista con…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/#respond)
[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Estensioni di Google Chrome per la gestione di Steam](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
Di seguito una esaustiva raccolta di estensione per il browser web Google Chrome che permettono l'arricchimento della pagina del sito Steam attraverso funzioni e proprietà utili come ad esempio il…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/#respond)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [La MEGA-Guida italiana all’uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
Quando si parla di Addressables in Unity si tende generalmente a considerarlo un argomento ostico e di difficile comprensione in quanto molto complesso nella configurazione, nella gestione e nella distribuzione…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/#respond)
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [I migliori asset Unity per sviluppatori indie presenti sull’Asset Store nel 2025](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
Tutti gli sviluppatori Unity conoscono bene l'Asset Store in quanto fonte inesauribile di componenti e asset utili nella creazione di applicativi e videogiochi. Gratuiti o a pagamento che siano, sono…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/#respond)
[](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [GGWG: Goose Game Without Goose](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
Nome del gioco: GGWG - Goose Game Without Goose Sviluppatore: Desdinova Componenti del team: 2 Social: https://www.instagram.com/ggwg\_official/ Piattaforme: Windows, Android Motore: Unity Genere: Puzzle…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/#respond)
[](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
[](https://www.crearevideogiochi.it/topdown-engine/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [TopDown Engine – Motore grafico per giochi dall’alto](https://www.crearevideogiochi.it/topdown-engine/)
TopDown Engine è il componente Unity che tutti dovrebbero avere, o perlomeno provare, per sviluppare un videogioco top down dall'alto sia 2D che 3D. Include moltissimi esempi con componenti di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/topdown-engine/#respond)
[](https://www.crearevideogiochi.it/topdown-engine/)
[](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Lista degli Shoot’em Up (shmup) a scorrimento con visuale isometrica](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/)
Con l'avvento della console di gioco Nintendo Switch, il genere di gioco shmup (Shoot'em Up) ha trovato una nuova casa grazie anche alla portabilità della console stessa. Il genere in…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/#respond)
[](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/)
[](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
[Video](https://www.crearevideogiochi.it/categoria/unity/video/)
#### [15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
Di seguito una lista non ordinata dei migliori canali Youtube riguardanti lo sviluppo di videogiochi e applicazioni utilizzando come strumento Unity. Si passa da semplici tutorials per iniziare fino a…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/#respond)
[](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
Anya Combs (Director of games di Kickstarter) è indubbiamente la manager più influente in quanto a stretto contatto con gli sviluppatori e tutti coloro che pubblicano giochi sulla piattaforma di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/#respond)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[](https://www.crearevideogiochi.it/categoria/redazione/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fraccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store%2F)
Login
---
# Risorse Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/risorse/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/risorse/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/risorse/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Risorse
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta 2026 dei migliori asset Unity per creatori di videogiochi che puoi trovare sull’Asset Store](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
Come ogni anno proponiamo una raccolta corposa di Asset presenti sullo Store di Unity per facilitare lo sviluppo e la creazione di videogiochi e app in Unity. Risorse importanti, gratuite…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/#respond)
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta dei migliori asset di Unity, divisi per anno](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
la redazione di Creare Videogiochi ogni anno crea a mantiene una lista degli asset di Unity presenti sull'Asset Store meritevoli di attenzione in quanto specifici, ben documenti, aggiornati e di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/#respond)
[](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
[](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Creare una applicazione trasparente che gira sul Desktop di Windows in Unity](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
Transparent Desktop Window Controller ti permette di creare una finestra trasparente per il tuo gioco o la tua applicazione in modo che giri sul Desktop di Windows. L’asset è flessibile…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/#respond)
[](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
[](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare BepInEx e Unity Explorer per il debug di un gioco creato con Unity](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
ATTENZIONE: La presente guida si intende unicamente a scopo illustrativo e di ricerca. Creare Videogiochi non promuove in alcun modo l'hacking e il modding di applicativi Unity senza consenso o…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/#respond)
[](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
[](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Asset e componenti indispensabili per lo sviluppo di una app non-game per Android con Unity](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
Unity è sicuramente un sistema potente ed affidabile per la creazione di videogiochi e applicazioni grafica multimediali. Viene però molto meno usato però nella realizzazione di app Android non-games di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/#respond)
[](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Le migliori librerie gratuite per lo sviluppo di videogiochi multiplayer in Unity](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
Per sviluppare un gioco multiplayer con Unity, scegliere la giusta libreria di networking è fondamentale. Esistono diverse soluzioni gratuite che offrono funzionalità avanzate per sincronizzare oggetti, gestire connessioni e ottimizzare…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/#respond)
[](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
[](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Canali Telegram che dovresti seguire se sei uno sviluppatore Unity di videogiochi indie](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
Telegram è un sistema di messaggistica molto potente ma anche un social network dalle mille risorse. La differenza principale rispetto ad altre app è quella di offrire la possibilità di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/#respond)
[](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
[](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [I migliori asset Unity per sviluppatori indie presenti sull’Asset Store nel 2025](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
Tutti gli sviluppatori Unity conoscono bene l'Asset Store in quanto fonte inesauribile di componenti e asset utili nella creazione di applicativi e videogiochi. Gratuiti o a pagamento che siano, sono…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/#respond)
[](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[](https://www.crearevideogiochi.it/creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Creare screenshot pronti per la pubblicazione sui social networks in Unity](https://www.crearevideogiochi.it/creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity/)
Quando si lavora ad un progetto in Unity spesso questo ha la necessità di essere mostrato ad un pubblico ampio e dislocato su diversi social networks attraverso immagini e screenshot…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity/#respond)
[](https://www.crearevideogiochi.it/creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity/)
[](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Quali sono i migliori asset Unity per videogiochi del 2024 presenti sullo store?](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/)
Lo Unity Asset Store è senza dubbio il punto di riferimento per tutti gli sviluppatori indie, e non solo, di videogiochi. Contiene una moltitudine di asset (script ma anche…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/#respond)
[](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/)
[](https://www.crearevideogiochi.it/categoria/unity/risorse/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fraccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store%2F)
Login
---
# Guide Archivi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/guide/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/guide/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/guide/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Guide
[](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Compilare un videogioco realizzato in Unity per la pubblicazione su Microsoft Store](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
Uno degli store meno altisonanti, al contrario di Steam, è senza dubbio il Microsoft Store che permette di cercare ed installare una moltitudine di applicativi sul proprio dispositivo Windows 10…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/#respond)
[](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
In questo articolo verranno affrontati i diversi aspetti riguardanti lo sviluppo di una app prettamente non-game con Unity, engine notoriamente usato invece per lo sviluppo di videogiochi e applicativi 3D.…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Caricare da un .arr le icone per le notifiche Android in Unity](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
Quando si sviluppa una app per Android può essere necessario includere anche funzionalità di notifica. Unity fornisce un asset proprietario per la gestione della notifiche su Android e iOS e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
[](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Il Singleton Pattern in Unity](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
Il Singleton Pattern è un pattern di progettazione che garantisce l’esistenza di una sola istanza di una classe e fornisce un punto di accesso globale a essa. Serve quando un…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/#respond)
[](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Senza categoria](https://www.crearevideogiochi.it/categoria/senza-categoria/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Pubblicare una build Unity tramite SteamPipeGUI di Steamworks SDK](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
La pubblicazione del proprio gioco o applicativo su Steam è una procedura alquanto delicata e complessa, soprattutto per via della struttura dei Depot e delle build dei pacchetti. Un modo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/#respond)
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Aprire nativamente file GLTF e GLB in Unity (con supporto a compressione DRACO)](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
I formati GLTF e GLB negli ultimi anni sono diventati di fatto uno standard nella visualizzazione sul web in quanto molto performanti ed ottimizzati, anche grazie alla compressione DRACO. DI…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/#respond)
[](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
[](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta dei migliori asset di Unity, divisi per anno](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
la redazione di Creare Videogiochi ogni anno crea a mantiene una lista degli asset di Unity presenti sull'Asset Store meritevoli di attenzione in quanto specifici, ben documenti, aggiornati e di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/#respond)
[](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
[](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Visualizzare un Interstitial ADS di Unity Level Play Ads Mediation](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
Unity LevelPlay è diventato da poco il sistema principale per la gestione degli annunci di Unity (dopo l'acquisizione avvenuta nel 2023 di ironSource). Per iniziare a sviluppare la soluzione integrata…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/#respond)
[](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
[](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Creare una applicazione trasparente che gira sul Desktop di Windows in Unity](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
Transparent Desktop Window Controller ti permette di creare una finestra trasparente per il tuo gioco o la tua applicazione in modo che giri sul Desktop di Windows. L’asset è flessibile…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/#respond)
[](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
[](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Usare AdsMediation LevelPlay (ex ironSource) di Unity per gestire gli annunci in-game su Android](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
Era il 2022 quando Unity concludeva l'acquisizione del servizio ironForce per la gestione della monetizzazione in-game in applicativi sviluppati con il proprio editor. Ad oggi il servizio è chiamato LevelPlay…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/#respond)
[](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[](https://www.crearevideogiochi.it/categoria/unity/guide/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcompilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store%2F)
Login
---
# Guide e tutorials in italiano per sviluppare videogiochi in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Unity
[](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Compilare un videogioco realizzato in Unity per la pubblicazione su Microsoft Store](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
Uno degli store meno altisonanti, al contrario di Steam, è senza dubbio il Microsoft Store che permette di cercare ed installare una moltitudine di applicativi sul proprio dispositivo Windows 10…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/#respond)
[](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
Una delle funzionalità che non possono mancare in una app realizzata in Unity, che sia un videogioco oppure una app non-game, è quella dell'invio di notifiche all'utente. L'uso delle notifiche…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
In questo articolo verranno affrontati i diversi aspetti riguardanti lo sviluppo di una app prettamente non-game con Unity, engine notoriamente usato invece per lo sviluppo di videogiochi e applicativi 3D.…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Caricare da un .arr le icone per le notifiche Android in Unity](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
Quando si sviluppa una app per Android può essere necessario includere anche funzionalità di notifica. Unity fornisce un asset proprietario per la gestione della notifiche su Android e iOS e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
[](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Creare un archivio di risorse grafiche .aar per un progetto Unity con Android Studio](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
Quando sviluppiamo plugin Android per Unity o vogliamo distribuire una libreria riutilizzabile, il formato corretto non è un APK ma un AAR (Android ARchive). Un file .aar è l’equivalente di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/#respond)
[](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
[](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Aggiornare i files di Unity di un progetto Xcode per iOS](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
Una delle prerogative di un app Unity per iOS è che la build genera un cartella progetto Xcode. Tale progetto poi deve essere compilato su un dispositivo con sistema operativo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/#respond)
[](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “Command PhaseScriptExecution failed with a nonzero exit code” durante la compilazione con XCode](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
Durante la compilazione di un progetto Unity per iOS tramite XCode potrebbe "Command PhaseScriptExecution failed with a nonzero exit code" che purtroppo non indica in alcun modo il punto esatto…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
[](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Il Singleton Pattern in Unity](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
Il Singleton Pattern è un pattern di progettazione che garantisce l’esistenza di una sola istanza di una classe e fornisce un punto di accesso globale a essa. Serve quando un…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/#respond)
[](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta 2026 dei migliori asset Unity per creatori di videogiochi che puoi trovare sull’Asset Store](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
Come ogni anno proponiamo una raccolta corposa di Asset presenti sullo Store di Unity per facilitare lo sviluppo e la creazione di videogiochi e app in Unity. Risorse importanti, gratuite…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/#respond)
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Senza categoria](https://www.crearevideogiochi.it/categoria/senza-categoria/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Pubblicare una build Unity tramite SteamPipeGUI di Steamworks SDK](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
La pubblicazione del proprio gioco o applicativo su Steam è una procedura alquanto delicata e complessa, soprattutto per via della struttura dei Depot e delle build dei pacchetti. Un modo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/#respond)
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[](https://www.crearevideogiochi.it/categoria/unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcompilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store%2F)
Login
---
# Daniele Ferla, Autore presso Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/author/administrator/#content_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/author/administrator/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Daniele Ferla
155 articles published
29
[Apr 2026](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il Power Creep](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
Il Power Creep si riferisce al modo in cui videogiochi già rilasciati possono essere in qualche modo "sbilanciati" dal graduale aumento di potenza dei contenuti rilasciati successivamente, rendendo di fatto…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-power-creep/#respond)
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/)
03
[Apr 2026](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Compilare un videogioco realizzato in Unity per la pubblicazione su Microsoft Store](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
Uno degli store meno altisonanti, al contrario di Steam, è senza dubbio il Microsoft Store che permette di cercare ed installare una moltitudine di applicativi sul proprio dispositivo Windows 10…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/#respond)
[](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
19
[Mar 2026](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
Una delle funzionalità che non possono mancare in una app realizzata in Unity, che sia un videogioco oppure una app non-game, è quella dell'invio di notifiche all'utente. L'uso delle notifiche…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
12
[Mar 2026](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
In questo articolo verranno affrontati i diversi aspetti riguardanti lo sviluppo di una app prettamente non-game con Unity, engine notoriamente usato invece per lo sviluppo di videogiochi e applicativi 3D.…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
27
[Feb 2026](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
[](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Caricare da un .arr le icone per le notifiche Android in Unity](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
Quando si sviluppa una app per Android può essere necessario includere anche funzionalità di notifica. Unity fornisce un asset proprietario per la gestione della notifiche su Android e iOS e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/)
27
[Feb 2026](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
[](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Creare un archivio di risorse grafiche .aar per un progetto Unity con Android Studio](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
Quando sviluppiamo plugin Android per Unity o vogliamo distribuire una libreria riutilizzabile, il formato corretto non è un APK ma un AAR (Android ARchive). Un file .aar è l’equivalente di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/#respond)
[](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
24
[Feb 2026](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
[](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Aggiornare i files di Unity di un progetto Xcode per iOS](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
Una delle prerogative di un app Unity per iOS è che la build genera un cartella progetto Xcode. Tale progetto poi deve essere compilato su un dispositivo con sistema operativo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/#respond)
[](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
12
[Feb 2026](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “Command PhaseScriptExecution failed with a nonzero exit code” durante la compilazione con XCode](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
Durante la compilazione di un progetto Unity per iOS tramite XCode potrebbe "Command PhaseScriptExecution failed with a nonzero exit code" che purtroppo non indica in alcun modo il punto esatto…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/)
09
[Gen 2026](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
[](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Il Singleton Pattern in Unity](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
Il Singleton Pattern è un pattern di progettazione che garantisce l’esistenza di una sola istanza di una classe e fornisce un punto di accesso globale a essa. Serve quando un…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/#respond)
[](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
07
[Gen 2026](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
#### [Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
Il fallimento non è il problema: è il recupero che decide se un giocatore rimane in gioco In moltissimi videogiochi, il fallimento è lo stato più frequente. Platform, roguelike, soulslike:…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/#respond)
[](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[](https://www.crearevideogiochi.it/author/administrator/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-il-recovery-design%2F)
Login
---
# Footer Default - Creare Videogiochi
Copyright © Desdinova ® / PIVA 03799780162 / Non è una testata giornalistica.
Tutti i diritti riservati ai legittimi proprietari, anche ove non citati.
[Linkedin](https://www.linkedin.com/company/creare-videogiochi)
[Facebook](https://www.facebook.com/crearevideogiochi)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Riprodurre filmati con Video Player nella build…](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[](https://www.crearevideogiochi.it/layouts/footer-default/# "Scroll to top")
---
# Perchè usare Mathf.Lerp in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/perche-usare-mathf-lerp-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/perche-usare-mathf-lerp-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/perche-usare-mathf-lerp-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Perchè usare Mathf.Lerp in Unity
================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
Sappiamo che in Unity è doveroso implementare ogni azione utilizzando Time.deltaTime ([qui un approfondimento](https://www.danieleferla.it/perche-usare-time-deltatime-in-unity/)
) in modo da renderle dipendenti dal tempo e non dal frame rate.
La funzione [Mathf.Lerp](https://docs.unity3d.com/ScriptReference/Mathf.Lerp.html)
viene usata per ottenere un valore **comprensivo** tra un valore **iniziale** e uno **finale**, dipendente da un valore arbitrario tra 0 e 1. Se il valore passato a Mathf.Lerp è 0 verrà ritornato il valore iniziale, se il valore è 1 verrà ritornato il valore finale. Tutti i valori intermedi tra 0 e 1 generano invece un risultato compreso tra l’iniziale e il finale, pesato tra i due valori.
Questa funzione quindi si rende utile quando serve realizzare una **transizione** tra due valori noti. Si provi a pensare la necessità di eseguire una **dissolvenza** (fade) di un colore passando da alpha = 255 a alpha = 0. La funzione sarebbe quindi Mathf.Lerp(255, 0, t) dove t è un valore compreso tra 0 e 1. Passando 0.5 si otterrà quindi, ad esempio, 125.
La funzione sottostante in pseudo-codice mostra come, dato il valore della durata della transizione (5.0f secondi) è possibile ottenere un valore alpha **interpolato**, dipendente dal tempo trascorso (ecco perchè Time.deltaTime).
var t = 0f;
var duration = 5.0f
while (t < 1)
{
t += Time.deltaTime / duration;
endColor.a = Mathf.Lerp(startColor.a, 0, t);
this.FadePanel.GetComponent().color = endColor;
}
Tutte le volte che dobbiamo quindi eseguire una transazione (cambiare un colore, generare una rotazione, spostare da un punto A ad uno B, il consiglio è sempre quello di utilizzare la funzione **Mathf.Lerp** (esiste quella specifica Mathf.LerpAngle per gli angoli che tiene conto della rotazione a 360°) facendo dipendere il valore t da Time.deltaTime in modo da rendere la transizione **smooth** ma anche **regolata dal tempo**.
Potrebbe interessarti anche:
----------------------------
* [\
\
Perchè usare Time.deltaTime in Unity](https://www.crearevideogiochi.it/perche-usare-time-deltatime-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [")\
\
Cosa è la Cinematica Inversa (IK)](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/)
[0Likes](https://www.crearevideogiochi.it/perche-usare-mathf-lerp-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/perche-usare-mathf-lerp-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fperche-usare-mathf-lerp-in-unity%2F)
Login
---
# Password persa ‹ Creare Videogiochi — WordPress
Password persa
==============
[Powered by WordPress](https://it.wordpress.org/)
==================================================
Inserisci il tuo nome utente o il tuo indirizzo email. Riceverai un'email con le istruzioni su come reimpostare la tua password.
Nome utente o indirizzo email
[← Torna a Creare Videogiochi](https://www.crearevideogiochi.it/)
Lingua English (United States) Italiano
---
# Perchè usare Time.deltaTime in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/perche-usare-time-deltatime-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/perche-usare-time-deltatime-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/perche-usare-time-deltatime-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Perchè usare Time.deltaTime in Unity
====================================
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
Una delle prime complessità che ci si trova ad affrontare approcciandosi allo sviluppo di un videogame in Unity è la questione di rendere l’azione **dipendente dal tempo** o dai **frame** (Frame Dependant o Time Dependant). Tutto questo viene risolto analizzando questi due tipi di script che di fatto hanno un’unica differenza, cioè l’uso di **Time.deltaTime** nella funzione Update().
1. `//1. Con time.deltaTime`
2. `transform.position = Vector3.Lerp(transform.position, target, smoothing * Time.deltaTime);`
4. `//2. Senza time.deltaTime`
5. `transform.position = Vector3.Lerp(transform.position, target, smoothing);`
In sostanza, nel primo caso si sta dicendo che si vuole muovere il proprio oggetto con una velocità dipendente dal tempo (ad esempio metri al secondo). Questo garantisce che qualsiasi cosa accada durante (ad esempio un rallentamento dei frame dovuto a grafica eccessiva), l’azione da eseguire venga comunque compiuta rispetto al tempo a lei destinata.
Il seconda caso invece, senza Time.deltaTime, rende l’azione dipendente da frame e non dal tempo. Se dovessimo eseguire il codice su di una macchina lenta l’azione verrebbe eseguita più lentamente rispetto se eseguita su una macchina più veloce e performante. In alcuni casi il tutto potrebbe risultare “ingiocabile”.
E’ buona norma quindi utilizzare Time.deltaTime per ogni azione presente nel nostro applicativo al fine di renderla dipendente dal tempo e non dai frame. Ci sono alcune circostanze in cui può essere utile rendere l’applicativo dipendente dai frames ma sono più eccezioni che realtà.
Potrebbe interessarti anche:
----------------------------
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Perchè usare Mathf.Lerp in Unity](https://www.crearevideogiochi.it/perche-usare-mathf-lerp-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Serializzare oggetti in Unity con Newtonsoft.Json -…](https://www.crearevideogiochi.it/serializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility/)
* [\
\
Calcolare le proprietà di una camera ortogonale di…](https://www.crearevideogiochi.it/calcolare-le-proprieta-di-una-camera-ortogonale-di-unity-affinche-visualizzi-sempre-specifici-oggetti-in-scena/)
[1Like](https://www.crearevideogiochi.it/perche-usare-time-deltatime-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/perche-usare-time-deltatime-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fperche-usare-time-deltatime-in-unity%2F)
Login
---
# Differenze prestazionali tra InvokeRepeating e StartCoroutine in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/differenze-prestazionali-tra-invokerepeating-e-startcoroutine-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/differenze-prestazionali-tra-invokerepeating-e-startcoroutine-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/differenze-prestazionali-tra-invokerepeating-e-startcoroutine-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Differenze prestazionali tra InvokeRepeating e StartCoroutine in Unity
======================================================================
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
E’ chiaro che alcune funzioni di Unity siano state sviluppate più come “utilities mordi e fuggi” che vere e proprie funzioni ottimizzate.
Una di queste è sicuramente **InvokeRepeating** che permette di chiamare un metodo standard ogni tot secondi (e con un delay di partenza). Questa funzione però, se analizzata con Reflector, espone una problematica principale: si basa sulla **Reflection** che, a runtime, indubbiamente è un processo MOLTO lento e dispendioso. Per questo motivo il suo uso va effettivamente **evitato**.
In sostituzione a InvokeRepeating possiamo facilmente usare le **Coroutines** che invece sono state sviluppate e rese disponibili proprio per ottimizzazioni di questo tipo. _Sento già i puritani parlare di “Coroutine sono il male” parlando di chiamata di funzioni nella FixedUpdate, Time.deltaTime, etc etc. ALT! Non è questo il post in cui parlaremo delle prestazioni delle Coroutine._
Quindi, la nostra funzione:
InvokeRepeating("Fire", 2.0f, 0.5f);
Diventa:
...
StartCoroutine("StartFireSequence_Enumerator");
...
IEnumerator StartFireSequence_Enumerator()
{
yield return new WaitForSeconds(2.0f);
while (true)
{
Fire();
yield return new WaitForSeconds(0.5f);
}
}
Potrebbe interessarti anche:
----------------------------
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Ottimizzare l'uso e la scrittura delle Coroutine di…](https://www.crearevideogiochi.it/ottimizzare-luso-e-la-scrittura-delle-coroutine-di-unity-attraverso-le-action/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
[0Likes](https://www.crearevideogiochi.it/differenze-prestazionali-tra-invokerepeating-e-startcoroutine-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/differenze-prestazionali-tra-invokerepeating-e-startcoroutine-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fdifferenze-prestazionali-tra-invokerepeating-e-startcoroutine-in-unity%2F)
Login
---
# Abilitare l’autocomplete(intellisense) per Visual Studio in Unity 3D - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Abilitare l’autocomplete(intellisense) per Visual Studio in Unity 3D
====================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
30 Dicembre 2021
Per chi programma molto Unity3D con gli script, purtroppo può capitare che l’editor Visual Studio non riconosca l’auto-completamento (o intellisense) degli oggetti principali. Questo problema, oltre che ad essere molto fastidioso, è anche molto frequente sopratutto per via dei continui aggiornamenti sia di Unity che di Visual Studio.
La soluzione in realtà è più semplcie di quanto si pensi visto che si tratta di specificare in modo diretto l’editor che si usa, in questo modo:
* Avviare Unity 3D
* Accedere alla voce “Preferences” del menu “Edit”
* Selezionare la casella “External Tools”
* Alla voce “External Script Editor” avere cura di selezioanre la propria versione di Visual Studio (dovrebbe essere presente nella lista)
* Verificare inoltre che in Visual Studio siano installati i componenti Unity

Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
[0Likes](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fabilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d%2F)
Login
---
# Awake e Start di Unity spiegati facile - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/awake-e-start-di-unity-spiegati-facile/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/awake-e-start-di-unity-spiegati-facile/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/awake-e-start-di-unity-spiegati-facile/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Awake e Start di Unity spiegati facile
======================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
30 Dicembre 2021
Spesso quando ci si approccia a Unity si fa confusione tra ciò che deve essere inserito in Awake e cosa in Start. Di seguito le sostanziali differenze.
Awake
-----
Viene eseguita una sola volta, arbitrariamente e non ordinata (in sostanza non si può sapere se un oggetto venca “svegliato” prima di un altro, a meno di averne impostato lo Script Order nelle opzioni di progetto).
Deve contenere unicamente le inizializzazioni delle proprietà interne dell’oggetto a cui si riferisce (le private, le base. o le this. per intenderci). Dunque non può contenere riferimenti ad altri oggetti oppure a Singleton in quanto appunto non se ne conosce l’ordine di esecuzione.
Viene sempre eseguita anche se l’oggetto non è abilitato.
Viene sempre eseguita prima della funzione Start() dell’oggetto stesso.
Start
-----
Viene eseguita una sola volta e può contenere inizializzazioni con riferimenti ad altri oggetti della scena. E’ necessario farlo qui e non in Start() in quanto se lo si facesse in Start() si rischierebbe di utilizzare parametri di oggetti non ancora inizializzati con Awake() in quanto quest’ultima viene eseguita in modo non in ordinato.
Viene eseguita solo se l’oggetto è attivo, e solo la prima volta (successive disattivazioni/attivazioni non rieseguono la funzione).
Viene eseguita dopo Awake() e prima di Update().
Potrebbe interessarti anche:
----------------------------
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Perchè usare i Layer invece che i tag nel sistema di…](https://www.crearevideogiochi.it/perche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
Il Singleton Pattern in Unity](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/)
[0Likes](https://www.crearevideogiochi.it/awake-e-start-di-unity-spiegati-facile/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/awake-e-start-di-unity-spiegati-facile/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fawake-e-start-di-unity-spiegati-facile%2F)
Login
---
# Come registrare un video, una sequenza o una GIF del Game Mode di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-registrare-un-video-una-sequenza-o-una-gif-del-game-mode-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-registrare-un-video-una-sequenza-o-una-gif-del-game-mode-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-registrare-un-video-una-sequenza-o-una-gif-del-game-mode-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come registrare un video, una sequenza o una GIF del Game Mode di Unity
=======================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
In fase di sviluppo si rende spesso necessario **registrare** quello che viene renderizzato a video nel **Game Mode** di Unity.
Questo per svariate necessità: pubblicazione sui social/siti, dimostrazioni, punto della situazione, invio a collaboratori etc.
Non tutti sanno che Unity ha sviluppato internamente un componente, chiamato Unity Recorder, che permette diverse opzioni di registrazione: movie, animation clip, image sequence e GIF.

Come sempre potete scaricarlo ed installarlo tramite il Package Manager di Unity e testare le differenti versioni (per la versione 2019 esistono diverse preview). A [questo link](https://learn.unity.com/tutorial/working-with-the-unity-recorder-2019-3)
invece trovate la guida ufficiale.
Potrebbe interessarti anche:
----------------------------
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[0Likes](https://www.crearevideogiochi.it/come-registrare-un-video-una-sequenza-o-una-gif-del-game-mode-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-registrare-un-video-una-sequenza-o-una-gif-del-game-mode-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-registrare-un-video-una-sequenza-o-una-gif-del-game-mode-di-unity%2F)
Login
---
# Come risolvere l'errore "Failed to load window layout" in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore “Failed to load window layout” in Unity
===============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
In certe circostanze può capitare di non riuscire più ad aprire un **progetto Unity** in quanto viene generato un errore di “**caricamento del layout della schermata**” dell’editor del software. Questo sembra capitare quando si hanno diverse **versioni** di Unity installate tramite HUB e si è fatto l’aggiornamento di una di esse.
L’errore viene mostrato all’avvio del progetto e, seppur cliccando i pulsanti della finestra, questo non genera alcun effetto.

Di seguito la **procedura** per **risolvere** il problema, abbastanza tecnica, ma dal risultato certo.
1. _Premere il tasto \[Load Default Layout\]_
2. _Unity copierà il file di default CurrentLayout-default.dwlt_ _nella directory \\Library del progetto interessato_
3. _Unity continuerà a dare errore anche premendo gli altri tasti (non premere \[Quit\])_
4. _Accedere a \\Library del progetto e copiare il file CurrentLayout-default.dwlt_ da qualche parte fuori dalla directory
5. _Premere \[Quit_\]
6. _Unity corromperà il file nella directory \\Library_
7. _Ricopiare il file CurrentLayout-default.dwlt_ (precedentemente salvato altrove) nella directory \\Library e sovrascrivere
8. _Rilanciare Unity_
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Come risolvere l'errore "Failed to present D3D11…](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/)
* [\
\
Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-failed-to-load-window-layout-in-unity%2F)
Login
---
# Come risolvere l'errore "TLS Allocator ALLOC_TEMP_THREAD, underlying allocator ALLOC_TEMP_THREAD has unfreed allocations" in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore “TLS Allocator ALLOC\_TEMP\_THREAD, underlying allocator ALLOC\_TEMP\_THREAD has unfreed allocations” in Unity
======================================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
In alcune circostanze può capitare di eseguire dei comportamenti che attraversano tutta la **gerarchia** della scena, solitamente per errore (in quanto è un procedura assolutamente da evitare). In questi contesti viene generato un **errore** di **TLS Allocator** seguito da ulteriori due **warning** sulla memoria.

Pur eseguendo le modifiche per sistemare il codice errato però, tale errore rimane, impedendo l’**esecuzione** del gioco e il suo funzionamento.
Per risolvere il problema basta **riavviare** il progetto **Unity** in quanto una volta che è stata compromessa la **memoria** massima di Unity questo non riesce più a liberarla, se non attaverso un riavvio forzato dell’applicativo.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity%2F)
Login
---
# Nasce il portale 'Creare Videogiochi' - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/nasce-creare-videogiochi/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/nasce-creare-videogiochi/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/nasce-creare-videogiochi/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
Nasce il portale ‘Creare Videogiochi’
=====================================
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
29 Dicembre 2021
Nasce il portale ‘Creare Videogiochi’ dalla passione verso i videogiochi, lo sviluppo e tutta la scena indie nazionale ed internazionale. Qualcosa che manca nel panorama italiano di questo settore.
Un sito web dove trovare guide, news e risorse dedicate esclusivamente agli sviluppatori di videogiochi in un formato inedito, professionale e completamente in italiano.
Un punto di incontro tra le necessità degli sviluppatori e le curiosità del mondo indie, completo di una sezione dove promuovere le proprie creazioni.
Un portale che non vuole pubblicare guide per principianti e post tradotti da siti stranieri, ma che vuole creare contenuti di valore, nuovi ed esclusivi.
Buona lettura e buon sviluppo!
_La Redazione_
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
[1Like](https://www.crearevideogiochi.it/nasce-creare-videogiochi/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/nasce-creare-videogiochi/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fnasce-creare-videogiochi%2F)
Login
---
# Nebbia volumetrica semplice in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/nebbia-volumetrica-semplice-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/nebbia-volumetrica-semplice-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/nebbia-volumetrica-semplice-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Nebbia volumetrica semplice in Unity
====================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
In alcuni contesti può rendersi necessario implementare un effetto di **nebbia** volumetrica che copra il **pavimento** del nostro applicativo o gioco sviluppato in **Unity**.
Esistono diversi componenti sull’Asset Store, tutti molto potenti e **semplici** da usare (ad esempio Aura 2).
Per il **videogioco** [Sors Adversa](https://www.sorsadversa.com/)
a cui stiamo lavorando abbiamo però optato per una scelta molto semplice ma altrettanto efficace.
In sostanza i passaggi sono i seguenti:
* Creare un semplice piano orizzontale che copra la scena
* Creare un materiale “Legacy Shaders/Particles/Alpha Blended”
* Impostarne il colore (grigio per una nebbia standard, verde per un effetto di veleno, rosso per lava, etc)
* Impostare il parametro Soft Particles Factor in modo opportuno (circa 0.3)
* Applicare il materiale al piano

Il semplice piano orizzontale che ricopre la scena

Le impostazioni del materiale che simula la nebbia volumetrica nel gioco Sors Adversa
Sono da notare alcune specifiche:
* Ovviamente la nebbia non ha un “volume” ma ne ricrea unicamente l’effetto
* Funziona solo con la **camera Prospettica** (e non quella Ortogonale) per via delle Soft Particles
* La funzione **Soft Particles** deve essere attiva (si trova in Edit -> Project Settings -> Quality)
* Gli oggetti con materiali Transparent o Fade possono dare problemi di sovrapposizione degli effetti di trasparenza
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
* [\
\
Sors Adversa](https://www.crearevideogiochi.it/sors-adversa/)
[0Likes](https://www.crearevideogiochi.it/nebbia-volumetrica-semplice-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/nebbia-volumetrica-semplice-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fnebbia-volumetrica-semplice-in-unity%2F)
Login
---
# Game Development Patterns with Unity 2021 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Game Development Patterns with Unity 2021
=========================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
David Baron è uno sviluppatore di giochi con oltre 15 anni di esperienza nel settore. Ha lavorato per alcuni noti studi di giochi AAA, mobili e indie a Montreal, in Canada. Il suo set di abilità include programmazione, design e arte 3D. Come programmatore, ha lavorato a vari giochi per varie piattaforme, tra cui realtà virtuale, dispositivi mobili e console.
[vedi su amazon](https://www.amazon.it/dp/B096SXVNVP?ref_=k4w_oembed_owxYQTlFtlhAYd&tag=danieleferla-21&linkCode=kpd)
Potrebbe interessarti anche:
----------------------------
* [\
\
Unity. Guida pratica per sviluppare applicazioni di…](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
* [\
\
Giocarsi. Gaming e gamification in contesti professionali](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/)
* [\
\
Programmare con Unity 3D](https://www.crearevideogiochi.it/programmare-con-unity-3d/)
* [\
\
Unity Tutorial: Verso la creazione di un videogioco](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/)
* [\
\
Realtà Virtuale e Realtà Aumentata](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
* [\
\
VR Developer](https://www.crearevideogiochi.it/vr-developer/)
[0Likes](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fgame-development-patterns-with-unity-2021%2F)
Login
---
# Impostare la RemoteLoadPath dinamicamente da script in Addressables di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/impostare-la-remoteloadpath-dinamicamente-da-script-in-addressables-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/impostare-la-remoteloadpath-dinamicamente-da-script-in-addressables-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/impostare-la-remoteloadpath-dinamicamente-da-script-in-addressables-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Impostare la RemoteLoadPath dinamicamente da script in Addressables di Unity
============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
13 Gennaio 2022
Indubbiamente l’Addressable Asset System di Unity è stata una introduzione che ha rivoluzionato il modo di pensare la gestione degli assets di un progetto e soprattutto la loro **distribuzione** (si pensi ad esempio ad aggiornamenti e mods).
Una delle necessità che potrebbero sorgere in certi contesti (ad esempio strutture dinamiche, frameworks esterni, etc) è quella di poter impostare la RemoteLoadPath **dinamicamente** e non forzatamente nel profilo addressable attivo.
Come sappiamo la RemoteLoadPath viene valutata a **runtime** (in quanto definibile con parentesi graffe) e non in fase di **build** come la RemoteBuildPath (in quanto definibile con parentesi quadre).
Per questo motivo la RemoteLoadPath permette di essere impostata tramite codice attraverso una semplice impostazione di una **variabile globale**. C’è da specificare che tale variabile deve essere però necessariamente in un namespace, di una classe e definita pubblicamente e staticamente, nel modo seguente:
namespace AddressableProject
{
public class PathDefinition : MonoBehaviour
{
public static string BASE_URL = "";
}
}
A questo punto basta inserire il seguente codice in cima ad un qualsiasi file del progetto (presumibilmente dove verranno caricati gli asset Addressable inizialmente) ed avremo la possibile di gestire la **path** di caricamento remota degli Addressable come meglio vogliamo, ad esempio.
AddressableProject.PathDefinition.BASE_URL = "https://www.crearevideogiochi.it"
Sarà infine necessario modificare la voce RemoteLoadPath dentro il **profilo** attivo nel modo seguente:
{_AddressableProject.PathDefinition.BASE\_URL}_/\[_BuildTarget\]_
affinchè il sistema degli asset utilizzi la varibile da noi definita per impostare il percorso.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Cancellare la cache locale per testare correttamente…](https://www.crearevideogiochi.it/cancellare-la-cache-locale-per-testare-correttamente-gli-addressables-di-unity/)
[0Likes](https://www.crearevideogiochi.it/impostare-la-remoteloadpath-dinamicamente-da-script-in-addressables-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/impostare-la-remoteloadpath-dinamicamente-da-script-in-addressables-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fimpostare-la-remoteloadpath-dinamicamente-da-script-in-addressables-di-unity%2F)
Login
---
# UNYC# - Unity e C# da zero - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
UNYC# – Unity e C# da zero
==========================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
22 Gennaio 2022
“Voglio creare un videogioco ma non so da dove iniziare..”
Avete già scritto questa domanda su decine di forum e le risposte parlavano dell’acquisto onerosi corsi di formazione? Oppure vi hanno consigliato di utilizzare tools “giocattolo” che non necessitano l’uso della programmazione? Vi è già capitato di leggere tutorial e guide da cui non avete cavato nulla o che si sono interrotti sul più bello per poi invitarvi a pagare per poter continuare?
Questo libro nasce come guida per chiunque voglia imparare a creare videogiochi di alto livello. Unity 3D è lo strumento più efficiente che abbiamo attualmente a disposizione per raggiungere tale scopo in modo professionale, imparando veramente la professione del programmatore. Con Unity infatti potrete imparare a programmare anche applicazioni che si discostano da un ambito prettamente ludico. Dunque, non solo videogiochi, ma anche applicazioni gestionali, per il web, VR… e molto altro.
[vedi su amazon](https://www.amazon.it/dp/B09MC9WHCJ?ref_=k4w_oembed_NOARe2JeLmc4kt&tag=danieleferla-21&linkCode=kpd)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
[0Likes](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Funyc-unity-e-c-da-zero%2F)
Login
---
# Realtà aumentata per il marketing - Metodi disruptive e phygital experience per unire il mondo fisico e digitale - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
Realtà aumentata per il marketing – Metodi disruptive e phygital experience per unire il mondo fisico e digitale
================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
17 Gennaio 2022
Cos’è la realtà aumentata e perché sta acquisendo sempre più importanza nelle strategie di marketing dei grandi brand? Non solo esperienze da “Wow-Effect” che lasciano sbalorditi i tuoi clienti, ma anche tanti dati da raccogliere, nuove opportunità di business e aumento delle vendite. Un vero viaggio nel mondo della realtà aumentata, in cui esploreremo questa rivoluzionaria tecnologia, dalle basi alle applicazioni pratiche, scoprendo opportunità di marketing uniche che, fino a pochi anni fa, non erano neanche immaginabili.
Attraverso casi studio, statistiche ed esempi, questo libro si rivolge a tutti coloro che lavorano nel mondo del marketing e vogliono approfondire i concetti di realtà aumentata e WebAR e scoprire come questa tecnologia cambierà il mondo del marketing e della comunicazione off e online, esplorandone il potenziale disruptive nell’ambito del marketing digitale e il valore aggiunto che le phygital experience portano alla comunicazione tradizionale e non.
[vedi su amazon](https://www.amazon.it/dp/B09MTW3MCN?ref_=k4w_oembed_LKSXgr7lJsetYx&tag=danieleferla-21&linkCode=kpd)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Realtà Virtuale e Realtà Aumentata](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Frealta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale%2F)
Login
---
# Lavorare con i videogiochi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
Lavorare con i videogiochi
==========================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
Attualmente circa metà della popolazione mondiale gioca ai videogiochi, non è più possibile ignorare un mercato in così grande espansione. Ma cosa succede dietro le quinte? Come vengono creati i sempre più numerosi prodotti videoludici che ci troviamo quotidianamente davanti agli occhi? Questo libro vi guiderà nella scoperta delle professioni del videogioco: le competenze e i ruoli necessari sono moltissimi ed è importante conoscerli, così come è fondamentale approcciarsi a questo settore con la mentalità appropriata, a seconda delle proprie aspettative.
Che realizzare videogiochi possa essere per voi un lavoro o una passione, questo testo vi aiuterà a orientarvi verso la costruzione di un percorso soddisfacente nel settore videoludico.
[vedi su amazon](https://www.amazon.it/dp/B09BNVB2Z8?ref_=k4w_oembed_SqOsrsRmndgFmU&tag=danieleferla-21&linkCode=kpd)
Potrebbe interessarti anche:
----------------------------
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [")\
\
Le esperienze in VR per Meta Quest 3/3S che dovresti…](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Flavorare-con-i-videogiochi%2F)
Login
---
# Scopri i videogiochi con i Promessi sposi (e viceversa) - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
Scopri i videogiochi con i Promessi sposi (e viceversa)
=======================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
20 Gennaio 2022
La cultura letteraria ha ignorato i videogiochi per anni. Poi, in tempi più recenti, li ha utilizzati come possibile mezzo per spiegare la letteratura. Quasi nessuno, però, aveva tentato l’operazione contraria.
Per la prima volta un classico della letteratura italiana viene utilizzato per spiegare il funzionamento e le meccaniche dei videogiochi.
Una guida imprescindibile per i docenti che vogliono scoprire il medium videoludico, avvicinandosi a esso tramite agganci alla loro formazione letteraria. Una proposta mai vista prima per tutte le persone che amano i videogiochi e che, volenti o nolenti, devono approcciarsi all’opera di Manzoni. La chiave per scoprire la bellezza della letteratura e dei videogiochi, grazie a una loro inedita collaborazione.
L’autore del saggio, Francesco Toniolo, è l’anello di congiunzione tra il nerd e il letterato. È docente universitario e già autore di numerosi saggi sui videogiochi, ma è anche laureato in lettere e ha lavorato alla manualistica per le scuole secondarie di secondo grado.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
* [\
\
Ottenere il nome della tabella e la chiave di un…](https://www.crearevideogiochi.it/ottenere-il-nome-della-tabella-e-la-chiave-di-un-componente-localizestringevent-e-cambiarne-la-referenza-in-unity/)
[0Likes](https://www.crearevideogiochi.it/scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fscopri-i-videogiochi-con-i-promessi-sposi-e-viceversa%2F)
Login
---
# Esempio di struttura della cartella di progetto in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/esempio-di-struttura-della-cartella-di-progetto-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/esempio-di-struttura-della-cartella-di-progetto-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/esempio-di-struttura-della-cartella-di-progetto-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Esempio di struttura della cartella di progetto in Unity
========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
17 Gennaio 2022
Spendere del tempo nell’organizzazione della **cartella** di lavoro del proprio progetto in **Unity** non è tempo perso.
Più la cartella di lavoro è organizzata e strutturata e più sarà facile individuare gli elementi quando il **progetto** diventerà necessariamente più ampio.
Di seguito, dettata dall’esperienza, una possibile **struttura**:
* Animations
* Editor
* Effects
* Fonts
* Materials
* Ambients
* Effect
* Enemies
* Bosses
* Standard
* Weapons
* Explosions
* Players
* Fighters
* Weapons
* PowerUps
* Models
* Ambients
* Enemies
* Players
* Props
* World
* …
* Prefabs
* Resources
* Scenes
* Menu
* Level1
* Level2
* …
* Scripts
* Actions
* Camera
* Controllers
* Enemies
* Movements
* Players
* Singletons
* UI
* ….
* Shaders
* Sounds
* Textures
* Icons
* Particles
* Materials
* …
* Timelines
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Come evitare che AudioClip identici riprodotti nello…](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/)
[0Likes](https://www.crearevideogiochi.it/esempio-di-struttura-della-cartella-di-progetto-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/esempio-di-struttura-della-cartella-di-progetto-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fesempio-di-struttura-della-cartella-di-progetto-in-unity%2F)
Login
---
# Corrosione dei bordi - Add-On Blender GRATUITO - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/corrosione-dei-bordi-add-on-blender-gratuito/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/corrosione-dei-bordi-add-on-blender-gratuito/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/corrosione-dei-bordi-add-on-blender-gratuito/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Blender](https://www.crearevideogiochi.it/categoria/blender/)
Corrosione dei bordi – Add-On Blender GRATUITO
==============================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
4 Febbraio 2022
Il tech-artist Christopher Sims ha rilasciato un nuovo **componente** aggiuntivo per **Blender** che semplifica notevolmente il processo di modellazione di oggetti **corrosi**. Usando la potenza dei nuovi Geometry Nodes di Blender, questo componente consente di aggiungere danni ai bordi ai tuoi modelli. Il componente aggiuntivo funziona con Blender 3.0+ ed è molto semplice da usare.
E’ possibile scaricare l’add-on Blender gratuito direttamente [qui](https://csims314.gumroad.com/l/hxbpn)
> Edge Damage with Blender Geometry Nodes. This should work better on arbitrary geometry than most examples I've seen. Graph in the thread. Free download on Gumroad (my first ever!) [https://t.co/j8CV0cgrQ0](https://t.co/j8CV0cgrQ0)
> [#b3d](https://twitter.com/hashtag/b3d?src=hash&ref_src=twsrc%5Etfw)
> [#gamedev](https://twitter.com/hashtag/gamedev?src=hash&ref_src=twsrc%5Etfw)
> [#unity3d](https://twitter.com/hashtag/unity3d?src=hash&ref_src=twsrc%5Etfw)
> [#UnrealEngine](https://twitter.com/hashtag/UnrealEngine?src=hash&ref_src=twsrc%5Etfw)
> [pic.twitter.com/QMZRWzm9nr](https://t.co/QMZRWzm9nr)
>
> — Christopher Sims (@csims314) [February 2, 2022](https://twitter.com/csims314/status/1488960169958588418?ref_src=twsrc%5Etfw)
Potrebbe interessarti anche:
----------------------------
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/corrosione-dei-bordi-add-on-blender-gratuito/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/corrosione-dei-bordi-add-on-blender-gratuito/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcorrosione-dei-bordi-add-on-blender-gratuito%2F)
Login
---
# Game hero. Viaggio nelle storie dei videogiocatori - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
Game hero. Viaggio nelle storie dei videogiocatori
==================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Febbraio 2022
In questo libro Viola Nicolucci, psicologa e psicoterapeuta che utilizza e studia la cultura e il linguaggio dei videogame, ci introduce ad alcune e significative storie vere di videogiocatori a livello internazionale. Storie di tutti i giorni, storie di rapporti tra genitori e figli, amici e famiglie. I videogame restituiscono un feedback veloce e da questo i giocatori imparano a prendere nuove decisioni e fare nuove scelte. Vite brevi dunque fatte di malattie, traumi, preoccupazioni e che vedono nei videogame un supporto, un aiuto, uno strumento per il benessere psicologico che passa attraverso la narrazione e l’intrattenimento.
[VEDI SU AMAZON](https://www.amazon.it/gp/product/B09H3JY36H/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=danieleferla-21&creative=21718&linkCode=as2&creativeASIN=B09H3JY36H&linkId=a3a14c087b582ddff8eaaa6dc66fe18f)
Potrebbe interessarti anche:
----------------------------
* [\
\
Come contribuiscono i Collider tra padre e figli…](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Unity 6 Shaders and Effects Cookbook - 5° edizione](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
* [\
\
Evitare eventi di doppie collisioni tra padre e…](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/)
* [\
\
Game Feel: A Game Designer's Guide to Virtual Sensation](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/)
[0Likes](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fgame-hero-viaggio-nelle-storie-dei-videogiocatori%2F)
Login
---
# Programmare con Unity 3D - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/programmare-con-unity-3d/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/programmare-con-unity-3d/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/programmare-con-unity-3d/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Programmare con Unity 3D
========================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
11 Febbraio 2022
Unity è un potente motore per la creazione di giochi su più piattaforme. Mentre Unity Editor gira sul linguaggio di programmazione C #, è persino possibile sviluppare giochi senza codifica.Ruggine, Hearthstone e Kerbal Space Program sono tutti giochi Unity. Questi tutorial ti insegneranno tutto ciò di cui hai bisogno per costruire il tuo gioco dei sogni! Innanzitutto, una nota sul nome.
[VEDI SU AMAZON](https://www.amazon.it/gp/product/B08TB2Z48T/ref=as_li_tl?ie=UTF8&camp=3414&creative=21718&creativeASIN=B08TB2Z48T&linkCode=as2&tag=danieleferla-21&linkId=d9fa9896fa10c6cba1725eee8498c328)
Potrebbe interessarti anche:
----------------------------
* [\
\
Unity Tutorial: Verso la creazione di un videogioco](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/)
* [\
\
Unity. Guida pratica per sviluppare applicazioni di…](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
* [\
\
Giocarsi. Gaming e gamification in contesti professionali](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/)
* [\
\
Game hero. Viaggio nelle storie dei videogiocatori](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/)
* [\
\
UNYC# - Unity e C# da zero](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/)
* [\
\
VR Developer](https://www.crearevideogiochi.it/vr-developer/)
[0Likes](https://www.crearevideogiochi.it/programmare-con-unity-3d/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/programmare-con-unity-3d/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fprogrammare-con-unity-3d%2F)
Login
---
# Unity Tutorial: Verso la creazione di un videogioco - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Unity Tutorial: Verso la creazione di un videogioco
===================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
16 Febbraio 2022
Nel presente manuale è descritta la realizzazione di un semplice gioco 2D sviluppato per essere installato sui dispositivi mobile Android con il motore grafico Unity. Tutto il progetto è disponibile su un repository Github. Il gioco, PocioEating, è il remake del gioco Pocio presentato alla Microsoft Dream Build Play e premiato come uno dei migliori 100 giochi presentati.
[VEDI SU AMAZON](https://www.amazon.it/gp/product/1093949589/ref=as_li_tl?ie=UTF8&camp=3414&creative=21718&creativeASIN=1093949589&linkCode=as2&tag=danieleferla-21&linkId=59097160b54f4738079786a303f20f47)
Potrebbe interessarti anche:
----------------------------
* [\
\
Programmare con Unity 3D](https://www.crearevideogiochi.it/programmare-con-unity-3d/)
* [\
\
Unity. Guida pratica per sviluppare applicazioni di…](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
* [\
\
Giocarsi. Gaming e gamification in contesti professionali](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/)
* [\
\
Game hero. Viaggio nelle storie dei videogiocatori](https://www.crearevideogiochi.it/game-hero-viaggio-nelle-storie-dei-videogiocatori/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
VR Developer](https://www.crearevideogiochi.it/vr-developer/)
[0Likes](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Funity-tutorial-verso-la-creazione-di-un-videogioco%2F)
Login
---
# Giocarsi. Gaming e gamification in contesti professionali - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
Giocarsi. Gaming e gamification in contesti professionali
=========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
18 Febbraio 2022
Da bambini era un continuo “giocarsi”, sfruttare le potenzialità espressive del gioco, la sua straordinarietà e capacità di andare oltre gli schemi precostituiti per favorire creatività e innovazione. Perché non dovrebbe più valere ora che siamo cresciuti? A maggior ragione nel mondo del lavoro, in cui una persona motivata e libera di esprimersi sarà anche più produttiva. Le metodologie su cui si concentra questo testo sono rappresentate da due parole, spesso confuse: **gaming** e **gamification**. Se con la prima si fa riferimento all’utilizzo di veri e propri **giochi** in contesti che non sono di intrattenimento, la seconda si riferisce all’uso di elementi di gioco e tecniche di **game design** applicate in contesti non di gioco.
In questo libro sono riportati, attraverso un approccio teorico-applicativo, esempi tratti da entrambi questi ambiti di intervento. I contributi derivanti dalla psicologia, dall’economia, dal game design e dalla fisica si integrano per dare al lettore un ampio ventaglio di prospettive.
[VEDI SU AMAZON](https://www.amazon.it/gp/product/8898542658/ref=as_li_tl?ie=UTF8&camp=3414&creative=21718&creativeASIN=8898542658&linkCode=as2&tag=danieleferla-21&linkId=e1a5ebaa245b0d38e76ab768fde18654)
Potrebbe interessarti anche:
----------------------------
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
[0Likes](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fgiocarsi-gaming-e-gamification-in-contesti-professionali%2F)
Login
---
# Odin - Inspector and Serializer - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/odin-inspector-and-serializer/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/odin-inspector-and-serializer/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/odin-inspector-and-serializer/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Odin – Inspector and Serializer
===============================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
Odin modifica radicalmente l’aspetto dell’interfaccia di Unity implementando sistemi user-friendly e funzionalità fondamentali per l’organizzazione del progetto.
[UNITY Asset STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fodin-inspector-and-serializer-89041)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Likes](https://www.crearevideogiochi.it/odin-inspector-and-serializer/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/odin-inspector-and-serializer/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fodin-inspector-and-serializer%2F)
Login
---
# UModeler - Model your World - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/umodeler-model-your-world/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/umodeler-model-your-world/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/umodeler-model-your-world/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
UModeler – Model your World
===========================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
UModeler è il miglior sistema di modellazione 3D interno a Unity, utile per prototipazione e ambienti low poly.
[UNITY ASSET STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fmodeling%2Fumodeler-model-your-world-80868)
Potrebbe interessarti anche:
----------------------------
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Raccolta 2023 dei migliori Asset di Unity per…](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/umodeler-model-your-world/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/umodeler-model-your-world/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fumodeler-model-your-world%2F)
Login
---
# Polaris 2021 - Low Poly & Mesh Terrain Editor - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/polaris-2021-low-poly-mesh-terrain-editor/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/polaris-2021-low-poly-mesh-terrain-editor/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/polaris-2021-low-poly-mesh-terrain-editor/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Polaris 2021 – Low Poly & Mesh Terrain Editor
=============================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
Polaris è la soluzione più semplice per chi necessita di creare terreni low-poly direttamente in Unity.
[UNITY ASSETS STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fterrain%2Fpolaris-2021-low-poly-mesh-terrain-editor-196648)
Potrebbe interessarti anche:
----------------------------
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Gaia Pro 2021 - Terrain & Scene Generator](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/polaris-2021-low-poly-mesh-terrain-editor/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/polaris-2021-low-poly-mesh-terrain-editor/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fpolaris-2021-low-poly-mesh-terrain-editor%2F)
Login
---
# Graphy - Ultimate FPS Counter - Stats Monitor & Debugger - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/graphy-ultimate-fps-counter-stats-monitor-debugger/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/graphy-ultimate-fps-counter-stats-monitor-debugger/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/graphy-ultimate-fps-counter-stats-monitor-debugger/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Graphy – Ultimate FPS Counter – Stats Monitor & Debugger
========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
Graphy è un componente che permette di mostarare a runtime il conteggio degli FPS e diverse altre opzioni senza necessità di utilizzare software esterni (es: FPS Monitor)
[UNITY Assets Store](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Fgraphy-ultimate-fps-counter-stats-monitor-debugger-105778)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Cancellare la cache locale per testare correttamente…](https://www.crearevideogiochi.it/cancellare-la-cache-locale-per-testare-correttamente-gli-addressables-di-unity/)
* [\
\
Mettere in pausa il PlayMode di Unity con un unico tasto](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/)
[0Likes](https://www.crearevideogiochi.it/graphy-ultimate-fps-counter-stats-monitor-debugger/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/graphy-ultimate-fps-counter-stats-monitor-debugger/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fgraphy-ultimate-fps-counter-stats-monitor-debugger%2F)
Login
---
# 5 canali Youtube che devi seguire se sviluppi in GameMaker Studio - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-sviluppi-in-gamemaker-studio/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-sviluppi-in-gamemaker-studio/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-sviluppi-in-gamemaker-studio/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[GameMaker](https://www.crearevideogiochi.it/categoria/gamemaker/)
5 canali Youtube che devi seguire se sviluppi in GameMaker Studio
=================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
9 Febbraio 2022
GameMaker Studio continua a riscuotere un discreto successo nell’ambito dello sviluppo dei videogames 2D per via della sua interfaccia accessibile e molto semplice. Di seguito una lista non ordinata dei **migliori canali** **Youtube** riguardanti lo sviluppo di videogiochi e applicazioni utilizzando come strumento **GameMaker Studio**. Si passa da semplici **tutorials** per imparare lo strumento fino ad operazioni complesse come gli shaders.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-sviluppi-in-gamemaker-studio/#)
HeartBeast
----------
[](https://www.youtube.com/c/uheartbeast)
https://www.youtube.com/c/uheartbeast
Shaun Spalding
--------------
[](https://www.youtube.com/c/ShaunSpalding)
https://www.youtube.com/c/ShaunSpalding
1up Indie
---------
[](https://www.youtube.com/channel/UCeG_QgoqaE---bsr9h0VQxg)
https://www.youtube.com/channel/UCeG\_QgoqaE—bsr9h0VQxg
PixelatedPope
-------------
[](https://www.youtube.com/c/PixelatedPope)
https://www.youtube.com/c/PixelatedPope
Gaming reverends
----------------
[](https://www.youtube.com/channel/UC7fkptPD1FHQyDc9Fnm9S_A)
https://www.youtube.com/channel/UC7fkptPD1FHQyDc9Fnm9S\_A
Potrebbe interessarti anche:
----------------------------
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
5 canali Youtube che devi seguire se modelli in Blender](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-modelli-in-blender/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
9 canali Youtube che devi seguire se sei uno…](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Likes](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-sviluppi-in-gamemaker-studio/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-sviluppi-in-gamemaker-studio/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2F5-canali-youtube-che-devi-seguire-se-sviluppi-in-gamemaker-studio%2F)
Login
---
# Cosa è una IP - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cosa-e-una-ip/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cosa-e-una-ip/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cosa-e-una-ip/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Cosa è una IP
=============

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
28 Gennaio 2022
Capita spesso, sia in news di settore ma anche in gruppi o forum dedicati, di incontrare il **termine** IP riferito al mondo videoludico. Questo termine è diventato di uso comune in anni recenti e permette di identificare brevemente un argomento specifico: la **Proprietà Intellettuale** (IP = Intellectual Property in inglese).
In questo articolo
[Toggle](https://www.crearevideogiochi.it/cosa-e-una-ip/#)
IP nell’uso comune
------------------
Come dicevano, il termine IP viene spesso utilizzato in ambito comune (blog, forum, post, comunicazioni ufficiali, etc) e, in questa accezione, serve a rappresentare il più delle volte una qualsivoglia **serie di videogiochi** di un determinato sviluppatore. Potremmo citare dunque degli esempi di IP come God of War, GTA, Cyberpunk, Super Mario Bros, The Sims, etc; questo perché spesso una proprietà intellettuale di successo genera necessariamente degli sviluppi successivi, anche in **forme differenti**. Si pensi ad esempio all’imminente uscita del 4° capitolo di Crysis ma anche alla realizzazione del film di Uncharted.
Oltremodo il termine IP viene usato dagli stessi studi di realizzazione per indicare che verrà creato un nuovo videogioco che non ha nulla a che vedere con le produzioni precedenti ma che si basa su una nuova IP e dunque include meccaniche, background, protagonisti e sviluppi completamente nuovi.
IP nell’uso legale
------------------
Nell’uso legale la proprietà intellettuale è indubbiamente qualcosa che deve essere **tutelata**. Questo perché il rischio che venga copiata, sfruttata o usata in modo improprio è sempre dietro l’angolo, soprattutto nel mondo **digitale**.
Per tutale la propria IP esistono diverse forme, complementari, che è necessario mettere in pratica al fine di preservarne la proprietà e dunque, in sede legale, far valere i propri **diritti**. Di seguito 3 argomenti fondamentali nel mondo videoludico per la protezione.
### – Brevetto
Il brevetto riguarda soprattutto componenti fisiche e realizzabili, dunque impatta sulle consoles stesse e sui controller di gioco. Si pensi ad esempio alla Nintendo che, con la Nintendo Wii e Switch ha portato le console a livelli differenti di interazione con il giocatore, oppure alle ricerche e agli sviluppi fatti per la nuova generazione di consoles Sony Playstation 5.
### – Diritto d’autore
Il diritto d’autore (o copyright) permette di proteggere tutto quello che fa parte del mondo e dello sviluppo di un videogioco: dai personaggi alla storia, dalle meccaniche dedicate fino ai testi e alle musiche. Il diritto d’autore inoltre implementa sistemi di misura tecnologica della protezione (TPM) al fine di evitare che la propria produzione venga copiata e riprodotta in modo fraudolento.
### – Marchio registrato
Il marchio registrato è uno strumento legale che permette di apporre la proprietà su di un logo, un nome o un qualsivoglia altro identificatore univoco di un dato videogioco. Qualsiasi nome che troviamo citato dunque è un marchio registrato e prima di essere usato dovrebbe, anzi deve, esserne richiesta la possibilità d’uso.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/cosa-e-una-ip/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cosa-e-una-ip/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-una-ip%2F)
Login
---
# Come creare una roccia low-poly in Blender - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/creare-una-roccia-low-poly-in-blender/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/creare-una-roccia-low-poly-in-blender/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/creare-una-roccia-low-poly-in-blender/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Blender](https://www.crearevideogiochi.it/categoria/blender/)
Come creare una roccia low-poly in Blender
==========================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Febbraio 2022
Un brevissimo video, ma molto esplicativo, su come creare una **roccia low-poly** in **Blender** sfruttando strumenti messi a disposizione dal software stesso. Nel video vengono indicati anche i testi usati sulla tastiera per le scorciatoie (in basso a destra).
Controlli usati (Blender 2.8):
* Bisect
* Knife
* Face orientations
* Show normals
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
5 canali Youtube che devi seguire se modelli in Blender](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-modelli-in-blender/)
[0Likes](https://www.crearevideogiochi.it/creare-una-roccia-low-poly-in-blender/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/creare-una-roccia-low-poly-in-blender/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcreare-una-roccia-low-poly-in-blender%2F)
Login
---
# Come risolvere l'errore 'Building - Failed to write file: sharedassets0.assets" durante la compilazione di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore ‘Building – Failed to write file: sharedassets0.assets” durante la compilazione di Unity
================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
28 Febbraio 2022
Purtroppo quello indicato è uno degli errori di **Unity** non documentati e anche poco “parlanti” a livello di log.
Questo **errore** sembra essere generato da una **referenza** interna perduta che non è possibile recuperare se non cancellando e riaggiungendo l’oggetto (GameObject) che ne provoca l’errore. Come detto il log in console non riporta l’oggetto che genera l’errore e quindi, in scene molto ampie, diventa pressoché impossibile trovarne la causa e risolverla.
L’unica soluzione quindi risulta essere quella di creare completamente una nuova **scena** e copiare tutti i GameObject di quella che genera l’errore dentro la nuova. A quel punto si può rimuovere quella vecchia, **salvare** quella nuova con il nome precedente e riavviare la **compilazione** che, nella maggior parte dei casi, dovrebbe ora terminare positivamente.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
* [\
\
Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[1Like](https://www.crearevideogiochi.it/come-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity%2F)
Login
---
# Cosa è il Voxel - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Cosa è il Voxel
===============

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
1 Febbraio 2022
In questo articolo
[Toggle](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/#)
I pixel
-------
E’ indubbio che la parola **pixel** è ormai entrata nel gergo comune. La si può trovare mentre si acquista una fotocamera online o uno smartphone (i famosi megapixel) oppure quando si acquista un televisore di nuova generazione in un centro commerciale (per specificarne la risoluzione video). Se quanto detto è la rappresentazione materiale di un pixel, in ambito prettamente software il pixel è facilissimo trovarlo nella definizione delle dimensioni di una fotografia o di una immagine web (ad esempio 1200×900 pixel). Si tratta in sostanza della rappresentazione numerica dell’**area occupata** dalla **larghezza** e dall’**altezza** sul nostro schermo del pc, tablet o smartphone.
Ogni pixel è rappresentato da questi elementi:
* Colore
* Intensità
* Posizione
I voxel
-------
Quando si parla di tre dimensioni è necessario però estendere questa definizione ad una ulteriore dimensione. In nostro aiuto è stato quindi definito il **voxel**, controparte del pixel, che invece rappresenta l’unità di misura del **volume occupato**. Rispetto a suddetti pixel, si posiziona dentro ad un reticolo tridimensionale (detta griglia tridimensionale regolare discreta) ed è caratterizzato da maggiori e differenti proprietà, ad esempio:
* Colore
* Opacità
* Densità
* Materiale
* Indice di rifrazione
* Proporzione di copertura
* Forza
* Tempo
* Velocità
Come si può intuire dalle diverse proprietà, il voxel è dunque un elemento molto funzionale e manipolabile. Come si può dunque visualizzare tale elemento complesso? La procedura più comune prende il nome di **rendering volumetrico** che riguarda la manipolazione, al rappresentazione ed il rendering stesso dei **dati volumetrici** nel voxel.
Il Voxel e la stampa
--------------------
Portando un esempio è facile oggi intuire cosa può essere un voxel semplicemente osservando un prodotto creato attraverso una stampante 3D. La stampante lavora a livelli, partendo da un disegno preimpostato, e “stampa” in tre dimensioni ogni parte dell’oggetto. Si si osserva più da vicino la lavorazione ci si rende conto di come questi prodotti mostrino il reticolo in tre dimensioni, equiparabile, mi perdoni i tecnici per la banalizzazione, ai voxel. Ma si cerca anche di fare di più portando effettivamente i voxel, con tutte le sue proprietà, ad una stampa esatta in modo da creare materiali sempre più complessi e con proprietà intrinseche; questa potrà essere definita come la stampa 4D.
GrabCAD Voxel Print, differenze tra pixel e voxel e applicazioni future
Il Voxel come elemento di design
--------------------------------
Grazie alla diffusione alle masse del gioco Minecraft, il voxel ha ottenuto una nuova e maggiore visibilità, seppur banalizzata, in favore di qualcosa di estetico e di design. Di seguito infatti una breve galleria di immagini voxel di sicuro effetto artistico, dalla più semplice alle più complesse. Ne potete trovare molte altre [qui su Google Images](https://www.google.com/search?biw=1920&bih=979&tbm=isch&sa=1&ei=YgL0XIPbMb6h1fAP-LmqCA&q=voxel+scenes&oq=voxel+scenes)
e [qui su Twitter](https://twitter.com/search?q=voxel&src=typd)
.
* 
* 
* 
* 
In questo contesto non si può dunque citare il software gratuito **Magica Voxel** ([scaricabile qui](https://ephtracy.github.io/)
) che permette di disegnare scene e oggetti in tre dimensioni attraverso la suddetta manipolazione dei voxel (posizione x,y,z dentro ad reticolo, colore, luci, etc). Un software semplice ed efficace quanto facile da usare che ha permesso ad artisti, e permette tutt’ora, di sbizzarrirsi nel mondo del 3D attraverso i voxel.
Immagine di copertina: https://instagram.com/hifoo
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Dimensioni delle immagini da pubblicare nel negozio di Steam](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
[0Likes](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fi-voxel-la-versione-3d-del-pixel%2F)
Login
---
# Ottenere il nome della tabella e la chiave di un componente LocalizeStringEvent e cambiarne la referenza in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/ottenere-il-nome-della-tabella-e-la-chiave-di-un-componente-localizestringevent-e-cambiarne-la-referenza-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/ottenere-il-nome-della-tabella-e-la-chiave-di-un-componente-localizestringevent-e-cambiarne-la-referenza-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/ottenere-il-nome-della-tabella-e-la-chiave-di-un-componente-localizestringevent-e-cambiarne-la-referenza-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Ottenere il nome della tabella e la chiave di un componente LocalizeStringEvent e cambiarne la referenza in Unity
=================================================================================================================
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
20 Maggio 2022
Il **Localization Package** di Unity è sicuramente un componente molto valido per implementare logiche di **multi-linguaggio** all’interno di applicazioni e videogiochi. Se da un lato l’interfaccia permette di gestire facilmente tabelle, chiavi e contenuti, dall’altro potrebbe sorgere la necessitò di gestire i componenti a livello di script.
Una delle prime necessità che potrebbero sorgere è quella di prelevare il nome della **tabella** e il nome della **chiave** associati ad un componente **LocalizeStringEvent** a sua volta associato ad un campo testo e associare una nuova chiave. Per farlo bastano poche righe:
LocalizeStringEvent localize = GetComponent();
var tableEntry = LocalizationSettings.StringDatabase.GetTableEntry(localize.StringReference.TableReference, localize.StringReference.TableEntryReference);
string tableName = localize.StringReference.TableReference;
var keyName = tableEntry.Entry.SharedEntry.Key;
localize.StringReference.SetReference(tableName, keyName + "_2");
Come si vede dal codice purtroppo il nome della chiave non può essere prelavato tramite localize.StringReference.TableEntryReference come si potrebbe pensare (risulterebbe null o vuoto) ma è necessario scomodare l’oggetto .StringDatabase ed interrogarlo passando le referenze.
A quel punto la funzione StringReference.SetReference(…) permette facilmente di **sostituire** un tabella e chiave di un LocalizationStringEvent e aggiornarne immediatamente il contenuto senza chiamare esplicitamente la funzione StringReference.RefreshString().
Potrebbe interessarti anche:
----------------------------
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Riprodurre filmati con Video Player nella build…](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/)
[0Likes](https://www.crearevideogiochi.it/ottenere-il-nome-della-tabella-e-la-chiave-di-un-componente-localizestringevent-e-cambiarne-la-referenza-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/ottenere-il-nome-della-tabella-e-la-chiave-di-un-componente-localizestringevent-e-cambiarne-la-referenza-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fottenere-il-nome-della-tabella-e-la-chiave-di-un-componente-localizestringevent-e-cambiarne-la-referenza-in-unity%2F)
Login
---
# Come risolvere l'errore "an error occured running the unity content on this page. see your browser javascript console for more info" in Unity per WebGL - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore “an error occured running the unity content on this page. see your browser javascript console for more info” in Unity per WebGL
=======================================================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
19 Aprile 2022
La **compilazione** per build in **WebGL** di Unity è oggettivamente una delle situazioni più delicate in quanto il supporto a certe funzionalità, script, shader o implementazioni non è supportata o molto dipendente dal browser di avviso stesso.
Uno dei primi problemi che si deve affrontare è la **compatibilità** delle caratteristiche del server su cui risiederà l’applicativo compilato e alcuni problemi noti di **supporto**. Potrebbe capitare quindi che in alcuni contesti venga generato l’errore _“An error occured running the unity content on this page. See your browser javascript console for more info”_ che oggettivamente descrive poco il problema che lo ha generato.
Questo problema in realtà riguarda errori di **arrotondamento** dei **float** che vengono lanciati al browser ma che, di fatto, possono benissimo essere ignorati. Per fare questo basta accedere al menu
Edit > Project Settings > Player > Publishing Settings ed impostare la voce WebAssembly Arithmetic Exceptions su Ignore (di default è impostato a Throw).

A questo punto l’errore non dovrebbe essere più lancio e quindi lasciar proseguire l’esecuzione dell’applicativo nel browser in WebGL.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Perchè usare Time.deltaTime in Unity](https://www.crearevideogiochi.it/perche-usare-time-deltatime-in-unity/)
* [\
\
Riprodurre filmati con Video Player nella build…](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl%2F)
Login
---
# Chi è l'Hardcore Gamer - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Chi è l’Hardcore Gamer
======================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
9 Giugno 2022
In questo post cercheremo di dare una **definizione** del termine “**Hardcore Gamer**“, termine usato nel mondo videoludico per identificare a giocatore incallito e con la passione sfrenata per i videogames.
Di seguito dunque una raccolta di caratteristiche che possono descrivere una persona identificabile come hardcore gamer.
* Gioca almeno 20 ore a settimana
* Scopre i nuovi giochi leggendo e ricercando su siti di settore, Discord o guardando gli streamer
* Segue gli account social degli studi di sviluppo e anticipa le loro prossime uscite
* Conosce i suoi generi preferiti e consiglia i giochi ai suoi amici sperando che possano appassionarsi
* Possiede moltissimi giochi sia fisici che digitali e approfitta di offerte su Steam, GOG, etc
* Si interessa delle path e delle nuove versioni, analizzando i bug corretti e le nuove implementazioni
* Ha opinioni forti e decise su ciò che gli piace di un gioco
* Non discrimina tra un gioco indie e un AAA, ma pensa che un buon gioco è un buon gioco
* Predilige giochi complessi e senza meccaniche semplificate
* Possiede un PC di fascia medio alta oppure dispositivi per l’immersione completa nel gioco (cuffie, microfono, etc)
In contrapposizione all’Hardcore Gamer troviamo il Casual Gamer, di cui abbiamo dato una [definizione qui](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/)
.
Potrebbe interessarti anche:
----------------------------
* [\
\
Chi è il Casual Gamer](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
[0Likes](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fchi-e-un-hardcore-gamer%2F)
Login
---
# Come risolvere l'errore di "istanza non trovata" per il debug in Visual Studio di un progetto Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-di-istanza-non-trovata-per-il-debug-in-visual-studio-di-un-progetto-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-di-istanza-non-trovata-per-il-debug-in-visual-studio-di-un-progetto-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-di-istanza-non-trovata-per-il-debug-in-visual-studio-di-un-progetto-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore di “istanza non trovata” per il debug in Visual Studio di un progetto Unity
===================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
26 Maggio 2022
Può capitare che, durante la fase di **debug**, Visual Studio non trovi alcuna **istanza** di Unity aperta e quindi non riesca a connettersi a nessuna di esse, mostrando questa schermata vuota:

Esistono soluzioni che indicano di ricollegare **Visual Studio** a Unity accedendo, in Unity, al menu _Edit -> Preferences -> External Tools -> Regenerate Project Files_ ma non sembrano produrre un risultato valido.
La soluzione più semplice invece prevede di:
* Chiudere Visual Studio e Unity
* Aprire esternamente la **solution** del progetto accedendo a Visual Studio
* Aprire Unity ed editare un file di **script C#** al fine che lo colleghi al Visual Studio aperto
* Eseguire il debug come di consueto
A questo punto non dovrebbero esserci più problemi di individuazione dell’istanza di Unity e lanciare dunque il debug.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-di-istanza-non-trovata-per-il-debug-in-visual-studio-di-un-progetto-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-di-istanza-non-trovata-per-il-debug-in-visual-studio-di-un-progetto-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-di-istanza-non-trovata-per-il-debug-in-visual-studio-di-un-progetto-unity%2F)
Login
---
# Chiedi a Iwata - In italiano - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
Chiedi a Iwata – In italiano
============================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
4 Marzo 2022
Finalmente **tradotto** in **italiano** il libro Ask Iwata – Chiedi a Iwata!
Satoru Iwata è stato l’amatissimo amministratore delegato di Nintendo per più di dieci anni. Sotto la sua direzione sono nati il Nintendo DS e il Wii e la compagnia ha raggiunto un successo mai visto prima. Questo libro raccoglie non solo molti aneddoti e riflessioni di Iwata su Nintendo e sul suo periodo all’interno dell’azienda, ma anche sul suo particolare modo di pensare, sulla sua visione della leadership e molto altro ancora. Un libro essenziale per conoscere una delle figure più importanti della storia dei videogiochi.
[VEDI SU AMAZON](https://www.amazon.it/Chiedi-Iwata-Satoru/dp/8828761652/ref=sr_1_1?tag=danieleferla-21&crid=214P8OKLNR6E&keywords=chiedi+a+iwata&qid=1646379818&sprefix=chiedi+a+iwata%2Caps%2C82&sr=8-1)
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
[0Likes](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fchiedi-a-iwata-in-italiano%2F)
Login
---
# Cosa è un Postmortem - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cosa-e-un-postmortem/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cosa-e-un-postmortem/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cosa-e-un-postmortem/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Cosa è un Postmortem
====================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Marzo 2022
Sfortunatamente per gli sviluppatori di videogiochi, non si sa mai la reazione del pubblico fino a quando il gioco non viene rilasciato. Le vendite iniziano ma dopo qualche giorno le recensioni sono tiepide e la stampa snobba il lavoro fatto. E’ ovvio che si inizia a chiedersi cosa abbia **funzionato** e cosa è andato **storto**.
In questo frangente che è bene fare una **analisi** approfondita di cosa poteva essere scartato e cosa poteva essere migliorato unito anche ai punti forti che, nel bene o nel male, funzionano e rendono il gioco apprezzabile. Questa analisi, da parte degli sviluppatori e game designer stessi, prende il nome di **Postmortem**.
Questo tipo di analisi può essere fatta in diverse forme: documento, video su youtube, speach ad un evento, etc. Quel che conta è che indubbiamente, oltre a permettere un “mea culpa” a chi lo ha realizzato in prima persona, permette ad altri **sviluppatori** di capire quali errori non commettere. Risulta quindi una fonte di elevato valore se ben costruita e corredata di diversi elementi. Spesso sono composti dalle seguenti sezioni.
* Giochi correlati e di riferimento
* Definizioni del genere
* Prime specifiche di costruzione
* Obiettivi di squadra
* Trama
* Meccanica di combattimento
* Tecnologia usata e requisiti di sistema
* Cosa ha funzionato (What Went Right)
* Cosa è andato storto (What Went Wrong)
Dove trovare i Postmortem
-------------------------
Come detto i Postmortem sono molto utili per tutti coloro che si approcciano allo sviluppo di videogiochi (anche indie ovviamente). Ecco perchè è consigliato studiarli e carpirne i segreti più profondi cosi da non commettere gli stessi errori ed implementare le stesse attività di successo.
Chi non conosce sito Gamasutra? L’anno scorso ha cambiato nome in Gamedeveloper.com ma il contenuto è sempre lo stesso, ricco di spunti, tutorials e… postmortem.
A [questo link](https://github.com/game-dev-database/postmortem-problems/blob/master/postmortems.csv#L2)
una **lista completa** di moltissimi postmortem disponibili su Gamedeveloper.com
Potrebbe interessarti anche:
----------------------------
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/cosa-e-un-postmortem/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cosa-e-un-postmortem/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-un-postmortem%2F)
Login
---
# Riprodurre filmati con Video Player nella build WebGL di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Riprodurre filmati con Video Player nella build WebGL di Unity
==============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
16 Maggio 2022
Una delle problematiche più ricorrenti nelle build **WebGL** in Unity è che il componente **Video Player** produce diverse problematiche che non si riscontrano in Editor e nemmeno nelle build Windows, iOS o Android. Uno degli errori più comuni nasce dal fatto che non si riescono ad eseguire i **filmati**.
Questo perché possono esserci diverse componenti che bloccano la **riproduzione** eseguendola in un **browser** web. Di seguito alcuni consigli per riuscire ad eseguire i video in una esportazione WebGL di Unity:
* Nel componente Video Player utilizzare sempre la proprietà Render Mode impostata su **Render Texture** (con la conseguente creazione di un oggetto Render Texture associato)
* Nel componente Video Player non utilizzare la funzione “Play On Awake” ma eseguire la riproduzione da script attraverso la funzione .Play() dopo una prima **interazione** dell’utente (alcuni browser non eseguono video senza una prima interazione).
* Nel componente Video Player impostare la proprietà Source su **URL** ed indicare un percorso remoto valido (questo perchè Unity dichiara espressamente che la proprietà Video Clip non è supportata in WebGL)
* Verificare che non vi siano conflitti CORS nell’accesso a video quando si esegue la build WebGL nel browser (utilizzare i Developer Tools premendo il tasto F12 e controllando la Console javascript). Vedere sotto.
Configurare un server Windows per abilitare la funzionalità CORS
----------------------------------------------------------------
Di base le applicazioni web eseguite su server Windows non sono configurare per permettere meccanismi di **condivisione** dei files tra domini ([CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin)
) Questo approccio purtroppo **blocca** l’esecuzione di filmati dal parte del componente Video Player di Unity. Per abilitare tale possibile basta aggiungere le seguenti righe nel file web.config dell’applicazione server Windows.
Configurare un server Linux per abilitare la funzionalità CORS
--------------------------------------------------------------
Per applicazioni su Server Linux basta aggiungere le seguente righe nel file .**htaccess** nella root principale.
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Asset e componenti indispensabili per lo sviluppo di…](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[0Likes](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Friprodurre-filmati-con-video-player-nella-build-webgl-di-unity%2F)
Login
---
# GAMEDEV: 10 Steps to Making Your First Game Successful - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
GAMEDEV: 10 Steps to Making Your First Game Successful
======================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
8 Marzo 2022
Questo libro guida attraverso un processo passo passo per creare un gioco commerciale. Insegna come apprendere tutte le abilità necessarie e copre vari aspetti dello sviluppo del gioco: mentalità, preproduzione, finanziamento, diritto e legislazione, sviluppo e scelta del motore grafico, marketing, PR, editoria, distribuzione, nonché pre-lancio, [funding](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
, lancio e post- strategie di lancio.
[VEDI SU AMAZON](https://www.amazon.it/GAMEDEV-Steps-Making-First-Successful/dp/1735232505?crid=3QFC12VF61N2X&keywords=gamedev+10+steps&qid=1646755221&sprefix=gamedev+10+steps%2Caps%2C69&sr=8-1&linkCode=ll1&tag=danieleferla-21&linkId=7c9203cec45efbab1555d95b8b846bce&language=it_IT&ref_=as_li_ss_tl)
Potrebbe interessarti anche:
----------------------------
* [\
\
Chiedi a Iwata - In italiano](https://www.crearevideogiochi.it/chiedi-a-iwata-in-italiano/)
* [\
\
Unity 6 Shaders and Effects Cookbook - 5° edizione](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
* [\
\
Game Feel: A Game Designer's Guide to Virtual Sensation](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/)
* [\
\
Realtà aumentata per il marketing - Metodi…](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/)
* [\
\
Game Development Patterns with Unity 2021](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/)
* [\
\
Lavorare con i videogiochi](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fgamedev-10-steps-to-making-your-first-game-successful%2F)
Login
---
# 5 canali Youtube che devi seguire se modelli in Blender - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-modelli-in-blender/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-modelli-in-blender/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-modelli-in-blender/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Blender](https://www.crearevideogiochi.it/categoria/blender/)
5 canali Youtube che devi seguire se modelli in Blender
=======================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
11 Marzo 2022
Nell’ambito dello sviluppo di videogiochi indie, sicuramente **Blender** ha ottenuto e continua ad ottenere un grande successo, anche per via del suo essere gratuito e per la numerosa **community** che gira intorno ad esso.
Di seguito una lista di **canali Youtube** da non perdere per destreggiarsi nella **modellazione** di Blender, da tutorial per chi è alle prime armi fino a creazioni complesse.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-modelli-in-blender/#)
Francesco Andresciani
---------------------
[](https://www.youtube.com/channel/UC9sFLn-ITnfDOotJFLQHq0Q)
[h](https://www.youtube.com/channel/UC9sFLn-ITnfDOotJFLQHq0Q)
[ttps://www.youtube.com/channel/UC9sFLn-ITnfDOotJFLQHq0Q](https://www.youtube.com/channel/UC9sFLn-ITnfDOotJFLQHq0Q)
Blender Guru
------------
[](https://www.youtube.com/channel/UCOKHwx1VCdgnxwbjyb9Iu1g)
h[ttps://www.youtube.com/channel/UCOKHwx1VCdgnxwbjyb9Iu1g](https://www.youtube.com/channel/UCOKHwx1VCdgnxwbjyb9Iu1g)
Derek Elliott
-------------
[](https://www.youtube.com/channel/UCOKHwx1VCdgnxwbjyb9Iu1g)
[https://www.youtube.com/channel/UCOKHwx1VCdgnxwbjyb9Iu1g](https://www.youtube.com/channel/UCOKHwx1VCdgnxwbjyb9Iu1g)
CG Cookie
---------
[](https://www.youtube.com/c/CGCookieBlender/videos)
[http](https://www.youtube.com/c/CGCookieBlender/videos)
[s://www.youtube.com/c/CGCookieBlender/videos](https://www.youtube.com/c/CGCookieBlender/videos)
Ian Hubert
----------
[](https://www.youtube.com/playlist?list=PL4Dq5VyfewIxxjzS34k2NES_PuDUIjRcY)
h[ttps://www.youtube.com/playlist?list=PL4Dq5VyfewIxxjzS34k2NES\_PuDUIjRcY](https://www.youtube.com/playlist?list=PL4Dq5VyfewIxxjzS34k2NES_PuDUIjRcY)
[h](https://www.youtube.com/c/mrdodobird/videos)
Potrebbe interessarti anche:
----------------------------
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
* [\
\
9 canali Youtube che devi seguire se sei uno…](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[2Likes](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-modelli-in-blender/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-modelli-in-blender/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2F5-canali-youtube-che-devi-seguire-se-modelli-in-blender%2F)
Login
---
# Chi è il Casual Gamer - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Chi è il Casual Gamer
=====================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
8 Giugno 2022
In questo post cercheremo di dare una **definizione** del termine “**Casual Gamer**“, termine che negli ultimi anni sta avendo un grande successo in quanto, grazie ai dispositivi **mobile** e le console **portatili**, l’audience videoludica si è allargata anche a chi normalmente non è un giocatore accanito.
Di seguito dunque una raccolta di caratteristiche che possono descrivere una persona identificabile come casual gamer. Si faccia attenzione che il termine casual game invece rappresenta uno specifico genere di gioco.
* Non segue in alcun modo le notizie del settore videoludico
* Non segue influencer e personalità famose nel mondo dei videogames sui social media
* Ascolta i consigli sui giochi da amici che potrebbero essere giocatori accaniti
* Non conosce la storia dei videogames, i termini più usati e i loro diversi generi
* Non si interessa delle meccaniche e delle nomenclature presenti nel gioco che sta giocando
* Non si interessa degli aggiornamenti e delle path
* Gioca principalmente nel poco tempo libero
* Gioca da una a cinque ore a settimana
* Acquista solo uno o due giochi all’anno
* Se possiede un PC gioca unicamente giochi online e che non richiedono installazione
* Non conosce piattaforme quali Steam, GOG, etc
* Installa sul telefonino giochi immediati come idle games, click games, casual games etc
* Può capitare che platini al 100% un gioco e si appassioni al singolo genere
In contrapposizione il Casual Gamer troviamo l’Hardcore Gamer, di cui abbiamo dato una [definizione qui](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/)
.
Potrebbe interessarti anche:
----------------------------
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Chi è l'Hardcore Gamer](https://www.crearevideogiochi.it/chi-e-un-hardcore-gamer/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
[0Likes](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/chi-e-il-casual-gamer/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fchi-e-il-casual-gamer%2F)
Login
---
# Game Feel: A Game Designer's Guide to Virtual Sensation - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
Game Feel: A Game Designer’s Guide to Virtual Sensation
=======================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
28 Giugno 2022
“Game Feel” propone la sensazione (il feel) come un linguaggio nascosto nel game design che nessuno ha ancora completamente articolato. Il linguaggio potrebbe essere paragonato agli elementi costitutivi della musica (indicazioni di tempo, progressioni di accordi, versi) – indipendentemente dagli strumenti, dallo stile o dal periodo di tempo – e come questi elementi entrano in gioco.
[VEDI SU AMAZON](https://amzn.to/3A6Xoct)
Potrebbe interessarti anche:
----------------------------
* [\
\
GAMEDEV: 10 Steps to Making Your First Game Successful](https://www.crearevideogiochi.it/gamedev-10-steps-to-making-your-first-game-successful/)
* [\
\
Unity 6 Shaders and Effects Cookbook - 5° edizione](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
* [\
\
VR Developer](https://www.crearevideogiochi.it/vr-developer/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Unity. Guida pratica per sviluppare applicazioni di…](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/)
* [\
\
Giocarsi. Gaming e gamification in contesti professionali](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/)
[0Likes](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/game-feel-a-game-designers-guide-to-virtual-sensation/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fgame-feel-a-game-designers-guide-to-virtual-sensation%2F)
Login
---
# Final IK - Cinematica inversa - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Final IK – Cinematica inversa
=============================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
23 Luglio 2022
Pressoché considerato da tutti l’asset definitivo per gestire la **cinematica inversa** (Inverse Kinamtics – IK) in Unity.
Semplicissimo da installare, configurare ed usare permette di ottenere il risultato della cinematica inversa direttamente in **scena** attraverso l’impostazione di semplici componenti applicati alle singole parti delle **bones** del proprio oggetto (anche animato con **Animator** Controller). Moltissime opzioni per configurare la risposta dei movimenti con tolleranze, pesi, range e definizione dei target.
Alcune caratteristiche:
* Aim IK
* Arm IK
* Biped IK
* CCD IK
* Finger Rig
* Full Body Biped IK
* Leg IK
* Limb IK
* Look-At IK
* Trigonometric IK
* VR IK
[UNITY ASSETS STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fanimation%2Ffinal-ik-14290)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [")\
\
Cosa è la Cinematica Inversa (IK)](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Ffinal-ik-cinematica-inversa%2F)
Login
---
# Realtime in Game Log Console - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/realtime-in-game-log-console/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/realtime-in-game-log-console/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/realtime-in-game-log-console/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Realtime in Game Log Console
============================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
20 Febbraio 2022
Componente che permette di aggiungere una **console** direttamente in game che **logga** i **messaggi** di Unity. La particolarità di questo componente è la sua semplicità di integrazione, la personalizzazione del tipo di messaggio visualizzato, dei pulsanti usati e dell’aspetto grafico. Utile in produzione, soprattutto per distribuzioni **Windows**.
Inoltre ricorda moltissimo la console dei giochi ’90 stile Doom e Quake, oltre ad essere completamente GRATUITO.
[UNITY ASSETS STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Frealtime-in-game-log-console-212758)
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
[0Likes](https://www.crearevideogiochi.it/realtime-in-game-log-console/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/realtime-in-game-log-console/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Frealtime-in-game-log-console%2F)
Login
---
# Il Mixed Mode delle luci di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/il-mixed-mode-delle-luci-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/il-mixed-mode-delle-luci-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/il-mixed-mode-delle-luci-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Senza categoria](https://www.crearevideogiochi.it/categoria/senza-categoria/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Il Mixed Mode delle luci di Unity
=================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
4 Luglio 2022
Esistono 3 **modalità** di utilizzo della luce in Unity: **Realtime**, **Baked** e **Mixed**.
In questo articolo andremo ad analizzare queste modalità in modo semplice e intuitivo con un particolare focus sul Mixed Mode.

Le proprietà di una Luce Direzionale in Unity dove selezionare la modalità (Mode)

Differenza tra luce diretta e indiretta
In questo articolo
[Toggle](https://www.crearevideogiochi.it/il-mixed-mode-delle-luci-di-unity/#)
Realtime Mode
-------------
E’ la modalità di default di ogni luce di Unity. In sostanza sia la luce diretta, quella indiretta e le ombre vengono **calcolate a runtime**. E’ sicuramente la modalità più dispendiosa in quanto tutti i calcoli della luce vengono eseguiti ad ogni frame di esecuzione dell”applicativo (e quella di default).
Baked Mode
----------
Con questa modalità qualsiasi calcolo sulle luci diretta, indirette e ombre viene “**cotto**” (baked) in una texture (lightmap) che viene applicata successivamente agli oggetti interessati. Dopo aver eseguito il bake delle luci (per scene complesse può richiedere diversi minuti/ore) è possibile disattivare le luci dalla scena con un notevole **risparmio in termini di calcolo** a runtime. Di contro avere texture complesse e molto grandi può occupare memoria/ram.
Gli oggetti interessati da questa modalità devono essere stati definiti come statici (flag Static) ed avere una mappatura UV definita nella mesh.
Mixed Mode
----------
Questa modalità è di fatto un **ibrido** tra le precedenti ma spesso può creare confusione. In sostanza verrà eseguito soltanto il bake di **alcune delle componenti** delle luci mentre le altre continueranno ad essere calcolate realtime. Come si può intuire è una modalità intermedia che permette di ottimizzare la gestione della luce mantenendo dinamicità sul resto. E’ chiaramente una modalità discutibile in quanto può offrire pregi e difetti (se da un lato sposta il calcolo dal realtime ad una texture, quest’ultima può occupare spazio in memoria).
Le componenti scelte per il calcolo del Mixed Mode sono definite dal parametro Lighting > Mixed Lighting > **Lighting Mode** che espone: Backed Indirect, Subtractive, Shadowmask.
Qui sotto una tabella riassuntiva di come impostare opportunamente la coppia di valori per ottenere l’effetto desiderato.

Tabella di comparazione delle modalità del Mixed Mode
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
[0Likes](https://www.crearevideogiochi.it/il-mixed-mode-delle-luci-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/il-mixed-mode-delle-luci-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fil-mixed-mode-delle-luci-di-unity%2F)
Login
---
# Cosa è la Cinematica Inversa (IK) - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Cosa è la Cinematica Inversa (IK)
=================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
27 Luglio 2022
Quando si approccia lo sviluppo di **modelli animati** attraverso bones e giunture, uno dei primi problemi che ci si trova ad affrontare è quello di implementare un modo per definire un target che l’oggetto animato deve raggiungere.
Si provi a pensare ad un **braccio meccanico** che deve riparare un punto specifico di una macchina oppure un portiere che deve estendere le braccia per afferrare il pallone oppure ancora un avventuriero che deve salire le scale di una chiesa.

Tutti i calcoli che è necessario sviluppare affinché le giunture si posizionino correttamente verso il target di riferimento rientrano nel concetto di Cinematica Inversa (**Inverse Kinematic** oppure **IK**). Sono oggettivamente calcoli molto complessi in quanto contemplano lunghezze, pesi, angoli e limiti ma soprattutto il risultato può avere molteplici risultati, tutti corretti ma dipendenti dall’effetto che si può ottenere.
Inverse Kinematic in Unity
--------------------------
Ovviamente quando si sviluppa un **videogame** che deve contenere personaggi reali oppure elementi con braccia meccaniche, la cinematica inversa diventa fondamentale per ottenere risultati veritieri e apprezzabili. Per questo motivo **Unity** implementa funzionalità di cinematica inversa me è soprattutto grazie a **asset** dedicati che si può risolvere facilmente le diverse applicazioni.
Uno degli asset più completi e dai risultati molto precisi è **Final IK**, di cui potete trovare un nostro approfondimento [a questo link](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/)
.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Final IK - Cinematica inversa](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
[0Likes](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cosa-e-la-cinematica-inversa-ik/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-la-cinematica-inversa-ik%2F)
Login
---
# Fullscreen Editor - Sviluppare direttamente a schermo intero - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/fullscreen-editor/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/fullscreen-editor/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/fullscreen-editor/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Fullscreen Editor – Sviluppare direttamente a schermo intero
============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
10 Febbraio 2022
Gioca, sviluppa, test e registra il tuo gioco in Fullscreen direttamente nell’editor di di **Unity**.
Una delle problematiche di unity infatti è che la finestra Game **dell’editor** non è esattamente in **fullscreen**. Questo componente permette di visualizzare esattamente il proprio gioco comprendo tutta l’area dello **schermo**, durante la **progettazione** senza doverlo testare con una build.
[UNITY ASSETS STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Ffullscreen-editor-69534)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/fullscreen-editor/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/fullscreen-editor/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Ffullscreen-editor%2F)
Login
---
# Ruler 2D: Align, Guides & Grid: Estensione per allineare elementi 2D Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Ruler 2D: Align, Guides & Grid: Estensione per allineare elementi 2D Unity
==========================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
1 Settembre 2022
**Ruler 2D** è un’estensione di Unity che permette di **allineare** elementi 2D tra loro, raggruppandoli. Di fatto va a colmare una grande lacuna di Unity stesso che durante la fase di sviluppo 2D non espone funzionalità come allineamenti di elementi, in gruppi, in griglie, etc.
Caratteristiche:
– Rulers
– Guides
– Grids
– Alignment Tools
– Distribution Tools
– Spacing Tools
– Measuring Tools
– Snapping Tools
Supporto a:
– Unity 2D
– Unity GUI
– NGUI
– 3D objects in 2D Scene mode
[UNITY ASSET STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fruler-2d-align-guides-grid-extension-53951)
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Likes](https://www.crearevideogiochi.it/ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity%2F)
Login
---
# AVPro Video - Gestione alternativa dei video - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/avpro-video/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/avpro-video/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/avpro-video/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
[Video](https://www.crearevideogiochi.it/categoria/unity/video/)
AVPro Video – Gestione alternativa dei video
============================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
22 Luglio 2022
AVPro Video – Core Edition è un componente per l’editor di **Unity** che permette di gestire in modo perfetto ed incredibile i **video** riprodotti nelle **applicazioni** Unity. Gestisce file in locale, in remoto e in streaming attraverso una serie di ottimizzazioni e impostazioni dedicate. E’ indubbiamente l’asset definitivo per chiunque debba eseguire anche un solo video in un proprio gioco/app. Il componente Video Player integrato in **Unity** non permette impostazioni avanzate oltre ad essere oggettivamente lento e poco ottimizzato. AVPro Video – Core Edition permette di distribuire su Windows, iOS, Android, macOS, VR con il supporto 8K+, video trasparenti, sottotitoli e audio piping.
[UNITY ASSETS STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fvideo%2Favpro-video-core-edition-181844)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Asset e componenti indispensabili per lo sviluppo di…](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
* [\
\
Riprodurre filmati con Video Player nella build…](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/)
[0Likes](https://www.crearevideogiochi.it/avpro-video/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/avpro-video/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Favpro-video%2F)
Login
---
# DOTween Pro - Animazioni su path e sequenze - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/dotween-pro/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/dotween-pro/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/dotween-pro/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
DOTween Pro – Animazioni su path e sequenze
===========================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
DOTween estende diverse classi di **Unity** con funzionalità di **movimento** e **animazione** facendo risparmiare notevole tempo di sviluppo e ricerca. Probabilmente una delle librerie più usate in Unity in quanto permette di gestire da codice tantissime modalità di animazioni, dalle **path** fino alle **sequenze** di path passando da semplici rotazioni/posizionamenti fino a **gestione** dei colori e dei materiali.
[UNITY ASSETS STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fvisual-scripting%2Fdotween-pro-32416)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
[0Likes](https://www.crearevideogiochi.it/dotween-pro/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/dotween-pro/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fdotween-pro%2F)
Login
---
# Dialogue System for Unity - Gestione dei dialoghi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/dialogue-system-for-unity-gestione-dei-dialoghi/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/dialogue-system-for-unity-gestione-dei-dialoghi/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/dialogue-system-for-unity-gestione-dei-dialoghi/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Dialogue System for Unity – Gestione dei dialoghi
=================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Settembre 2022
Dialogue System for Unity permette di aggiungere **dialoghi** e **quest** al proprio gioco. E’ un sistema robusto e potente sviluppato attraverso un editor a **nodi** accessibile tramite UI, molto leggero e con un sistema **conversazionale** efficiente. Include una serie di add-ons per rendere più veloce lo sviluppo e l’integrazione in progetti preesistenti in quanto non richiede alcuna riga di codice.
E’ stato usato per videogames indie come Disco Elysium, Lake, Suzerain, Peglin, Jenny LeClu**e** e molti altri
[UNITY ASSEST STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fai%2Fdialogue-system-for-unity-11672)
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Likes](https://www.crearevideogiochi.it/dialogue-system-for-unity-gestione-dei-dialoghi/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/dialogue-system-for-unity-gestione-dei-dialoghi/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fdialogue-system-for-unity-gestione-dei-dialoghi%2F)
Login
---
# PUN 2 - Unity Multiplayer Networking - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/pun-2-unity-multiplayer-networking/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/pun-2-unity-multiplayer-networking/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/pun-2-unity-multiplayer-networking/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
PUN 2 – Unity Multiplayer Networking
====================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
31 Agosto 2022
PUN è tutto quello che serve per integrare **funzionalità multiplayer** nei propri giochi e lanciarli globalmente. Ci si può dimenticare quindi di hosting, problemi di **connessione** e di **latenza**. PUN gestisce tutto quanto semplicemente ed è l’asset più utilizzato in questo ambito e quello più sicuro.
Supporta tutte le piattaforme (dal mobile alla Playstation, passando da Nintendo Switch e VR e web).
[UNITY ASSET STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fnetwork%2Fpun-2-free-119922)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Le migliori librerie gratuite per lo sviluppo di…](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[0Likes](https://www.crearevideogiochi.it/pun-2-unity-multiplayer-networking/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/pun-2-unity-multiplayer-networking/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fpun-2-unity-multiplayer-networking%2F)
Login
---
# Gaia Pro 2021 - Terrain & Scene Generator - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Gaia Pro 2021 – Terrain & Scene Generator
=========================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
19 Settembre 2022
Gaia Pro è il più potente asset per la generazione di **mondi** procedurali per **Unity**. Permette di creare in semplice passi **terreni** e **ambientazioni procedurali** per mobile, dekstop, VR e console di ultima generazione.
Permette di scegliere il flusso di lavoro più adatto alle esigenze, da quello dell’artista a quello completamente procedurale e scriptato, passando dalla gestione delle texture al posizionamento di alberi e elementi scenici.
Permette inoltre di realizzare terreni **low-poly** ma anche **fotorealisitici**.
[UNITY ASSET STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fterrain%2Fgaia-pro-2021-terrain-scene-generator-193476)
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fgaia-pro-2021-terrain-scene-generator%2F)
Login
---
# Come risolvere l'errore "ConvexHullLib::cleanupVertices: Less than four valid vertices were found" in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore “ConvexHullLib::cleanupVertices: Less than four valid vertices were found” in Unity
===========================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
30 Novembre 2022
Durante il debug di una **build** di **Unity** potrebbe capitare di imbattersi in uno strano errore mostrato nella “Develoment Console” che non viene mostrato in Editor: “ConvexHullLib::cleanupVertices: Less than four valid vertices were found”

Questo errore è dovuto ad una **mal gestione** dei **vertici** di mesh impostate come convesse (convex) che non riesco ad essere calcolate dal motore fisico di Unity (PhysX).
Le soluzioni sono principalmente due:
* Ridisegnare/sistemare la mesh
* Rimuovere l’opzione di mesh convessa dal MeshCollider applicato (o rimuovere del tutto il collider)
Ovviamente entrambe le soluzioni riportano dei contro notevoli, nel primo caso dover rivedere la costruzione stessa della mesh al fine di renderla convessa, nel secondo caso generare casistiche di gameplay problematiche.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Come contribuiscono i Collider tra padre e figli…](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-convexhulllibcleanupvertices-less-than-four-valid-vertices-were-found-in-unity%2F)
Login
---
# Rewired - Gestione delle periferiche di input per Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/rewired-gestione-delle-periferiche-di-input-per-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/rewired-gestione-delle-periferiche-di-input-per-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/rewired-gestione-delle-periferiche-di-input-per-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Rewired – Gestione delle periferiche di input per Unity
=======================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
23 Agosto 2022
**Rewired** permette di gestione tutte le **periferiche** di input in maniera organizzata a strutturata. Permette di creare **profili** e di gestire la **rimappatura** dei tasti e delle funzionalità in maniera semplice ed intuitiva. Costruito sopra il sistema di input di Unity (nuovo e vecchio), è l’asset definitvo per la gestione delle periferiche di **PC**, **Playstation**, **XBox** e Nintendo **Switch**.
[UNITY ASSET STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Frewired-21676)
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Eseguire la vibrazione del gamepad in un progetto…](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/rewired-gestione-delle-periferiche-di-input-per-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/rewired-gestione-delle-periferiche-di-input-per-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Frewired-gestione-delle-periferiche-di-input-per-unity%2F)
Login
---
# Ottimizzare l'uso e la scrittura delle Coroutine di Unity attraverso le Action - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/ottimizzare-luso-e-la-scrittura-delle-coroutine-di-unity-attraverso-le-action/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/ottimizzare-luso-e-la-scrittura-delle-coroutine-di-unity-attraverso-le-action/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/ottimizzare-luso-e-la-scrittura-delle-coroutine-di-unity-attraverso-le-action/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Ottimizzare l’uso e la scrittura delle Coroutine di Unity attraverso le Action
==============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
13 Maggio 2023
Tutti coloro che utilizzano Unity prima o poi si scontrano con l’utilizzo delle **Coroutine** le quali permettono l’implementazione di attività **asincrone** ma soprattutto di attività **ripetitive** e governate da attesa di avvio e durata.
L’uso base delle Coroutine quindi passa dall’implementazione di una funzione di **Enumerazione** e una funzione di chiamata della stessa. La funzione di enumerazione poi è quella che include la logica di avvio e uscita della stessa, spesso con una direttiva di yield return new WaitForSeconds(…);
La scrittura di questa implementazione è spesso ripetitiva ma soprattutto occupa righe di codice che possono essere **ottimizzate** e soprattutto riportate inline (per non spezzare il flusso). Un buon modo per utilizzarle è quindi quello di creare una funzione che riceve in ingresso il tempo di attesa di avvio delle **Coroutine** e una **Action** che non è altro che una funzione (la quale verrà scritta inline), come in questo caso:
public static IEnumerator CoroutineExecute(float wait, Action action)
{
if (wait > 0)
{
yield return new WaitForSeconds(wait);
}
action();
yield return action;
}
Per richiamare questa funzione utilizzeremo questa scrittura:
StartCoroutine(CoroutineExecute(10, () =>
{
//Attività da eseguire tra 10 secondi qui...
}));
Come si vede dall’esempio besterà chiamare la classica StartCoroutine passano la nostra funzione specificata dei secondi di attesa di avvio e la Action da eseguire (nient’altro che del codice inline).
Una possibile evoluzione della funzione può anche essere questa (che include due Action):
public static IEnumerator CoroutineExecute(float wait, Action actionBefore, float duration, Action actionAfter)
{
if (wait > 0)
{
yield return new WaitForSeconds(wait);
}
actionBefore();
if (duration > 0)
{
yield return new WaitForSeconds(duration);
}
actionAfter();
yield return actionAfter;
}
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
* [\
\
Differenze prestazionali tra InvokeRepeating e…](https://www.crearevideogiochi.it/differenze-prestazionali-tra-invokerepeating-e-startcoroutine-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[0Likes](https://www.crearevideogiochi.it/ottimizzare-luso-e-la-scrittura-delle-coroutine-di-unity-attraverso-le-action/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/ottimizzare-luso-e-la-scrittura-delle-coroutine-di-unity-attraverso-le-action/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fottimizzare-luso-e-la-scrittura-delle-coroutine-di-unity-attraverso-le-action%2F)
Login
---
# Flat Kit: Toon Shading and Water - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/flat-kit-toon-shading-and-water/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/flat-kit-toon-shading-and-water/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/flat-kit-toon-shading-and-water/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Flat Kit: Toon Shading and Water
================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
3 Agosto 2022
Flat Kit è una soluzione integrata per ottenere il classico effetto **cel-shading** (stile fumetto, per intenderci) da applicare alla scena **Unity** come **post processing**.
Di seguito alcune funzionalità interessanti:
* Polished Toon / Cel shading
* Stylized water
* Outline effect
* Gradient fog
* Terrain shader
* Light Plane shader
* Supporto Mobile
* Supporto VR e AR
* Supporto Built-in e URP
[UNITY ASSETS STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Fflat-kit-toon-shading-and-water-143368)
[QUIBLI: PACCO AGGIORNATO](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fquibli-anime-shaders-and-tools-203178)
Potrebbe interessarti anche:
----------------------------
* [\
\
Raccolta 2023 dei migliori Asset di Unity per…](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Quali sono i migliori asset Unity per videogiochi…](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Likes](https://www.crearevideogiochi.it/flat-kit-toon-shading-and-water/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/flat-kit-toon-shading-and-water/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fflat-kit-toon-shading-and-water%2F)
Login
---
# Come fare il backup di un progetto Unity e risparmiare spazio - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-fare-il-backup-di-un-progetto-unity-e-risparmiare-spazio/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-fare-il-backup-di-un-progetto-unity-e-risparmiare-spazio/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-fare-il-backup-di-un-progetto-unity-e-risparmiare-spazio/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come fare il backup di un progetto Unity e risparmiare spazio
=============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
Indubbiamente la fase di **backup** è una delle più delicate ma anche una delle più importanti, non di meno per un **progetto** Unity.
Il problema di Unity è che la directory di lavoro rischia di diventare pesante ed ingombrante in quanto il software stesso genera diversi file temporanei. Quando si è esegue il **backup** della cartella del progetto è bene copiare **l’intera cartella** del progetto **escludendo** però le seguenti sotto-cartelle (se presenti):
* Library
* Builds
* Temp
* Obj
* Logs
* MemoryCaptures
* .vs
* .grandle
Queste cartelle da escludere infatti sono **auto-generate** da Unity se non presenti quindi assolutamente inutili ai fini del backup stesso. Escludendole si otterrà un **risparmio** di spazio anche dell’80% (dipendente dalla tipologia di progetto).
Note
----
La prima volta che si rilancerà in Unity un progetto di cui sono state eliminate le directory copra citate sarà necessario attendere più **tempo** in quanto il programma dovrà **ricreare** tutti i files temporanei necessari alla sua esecuzione. Servirà pazienza ma ne sarà valsa la pena… e spazio libero.
Potrebbe interessarti anche:
----------------------------
* [\
\
Visualizzare un Interstitial ADS di Unity Level Play…](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come risolvere l'errore "Failed to load window…](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/)
* [\
\
Aggiornare i files di Unity di un progetto Xcode per iOS](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/)
[0Likes](https://www.crearevideogiochi.it/come-fare-il-backup-di-un-progetto-unity-e-risparmiare-spazio/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-fare-il-backup-di-un-progetto-unity-e-risparmiare-spazio/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-fare-il-backup-di-un-progetto-unity-e-risparmiare-spazio%2F)
Login
---
# Come risolvere il warning 'This Tween has been killed and is now invalid' di DOTWeen in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere il warning ‘This Tween has been killed and is now invalid’ di DOTWeen in Unity
=============================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
11 Gennaio 2023
[DOTWeen](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fvisual-scripting%2Fdotween-pro-32416)
è una delle migliori **librerie** per Unity che permette di implementare **semplici animazioni** (tween) da applicare a svariati oggetti dell’engine, oltre ad avere semplici componenti da utilizzare ma permettere anche di sfruttare le potenzialità di eventi e sequenze. Inoltre è creata da uno sviluppatore italiano.
E’ possibile trovare **DOTWeen Pro** sull’Asset Store di Unity a [questo link](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fvisual-scripting%2Fdotween-pro-32416)
.
Impostando la modalità di **inizializzazione** senza il **SafeMode** è possibile incappare nel seguente messaggio quando si tenta di killare un tween istanziato: “**This Tween has been killed and is now invalid**“.
Questo warning (dunque non di vitale importanza, anche a detta dell’autore) viene mostrato unicamente quando si tenta di eliminare un Tween che è già stato **eliminato** o comunque in una situazione di eliminazione. Per evitare tale messaggio è necessario eseguire diversi controlli sul Tween al fine di procedere ad una corretta **rimozione**, in questo modo:
if (rotationTween != null && rotationTween.IsActive() && rotationTween.IsPlaying())
{
rotationTween.Complete();
if (rotationTween?.IsActive() ?? false)
{
rotationTween.Kill();
rotationTween = null;
}
}
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-il-warning-this-tween-has-been-killed-and-is-now-invalid-di-dotween-in-unity%2F)
Login
---
# Come risolvere il blocco "Hold on - ProjectBrowser.OnGui.repaint" all'avvio di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Plastic SCM](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere il blocco “Hold on – ProjectBrowser.OnGui.repaint” all’avvio di Unity
====================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
18 Gennaio 2023
Chi utilizza Unity sa che l’**avvio** di un **progetto** esistente è una procedura che richiede tempo e sforzi di caricamento non indifferenti da parte dell’editor: asset, shader, scripts, etc … e interfaccia.
Se qualcosa va storto durante questo processo uno degli **errori** più comuni è quello di mostrare continuamente la barra di **caricamento**, **ferma** al messaggio “Hold on – ProjectBrowser.OnGui.repaint”. La forzatura al riavvio del progetto però non porta i risultati sperati e spesso ci si trova in una situazione di stallo in cui il progetto sembra inutilizzabile.

L’inizio di una lunga attesa…
Se si utilizza il sistema di versioni **Plastic SCM** (che consigliamo), il problema potrebbe essere proprio legato a quello. La soluzione è quindi la seguente:
* Chiudere forzatamente l’editor (attraverso Gestione Attività di Windows -> Processi -> Unity Editor -> Termina attività)
* Aprire l’interfaccia di PlasticSCM e verificare se si è loggati correttamente. In caso negativo avere cura di loggarsi
* Riaprire il progetto Unity attraverso Unity Hub
Potrà sembrare strano ma è proprio l’interfaccia di PlasticSCM, e il suo sistema di login, a mandare in blocco il caricamento di Unity.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-il-blocco-hold-on-projectbrowser-ongui-repaint-allavvio-di-unity%2F)
Login
---
# Hashtag da seguire e utilizzare sui social se sei uno sviluppatore di videogames indie - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
Hashtag da seguire e utilizzare sui social se sei uno sviluppatore di videogames indie
======================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
3 Giugno 2022
Uno degli aspetti oggi più interessanti della rete è la possibilità di venire in contatto con realtà emergenti oppure studi consolidati e studiandone i contenuti da loro pubblicati. La difficoltà ovviamente sta nel cercarli e trovarli.
Per questo motivo ci vengono in aiuto gli hashtag, funzionalità implementata più o meno correttamente in tutti i social network, i quali catalogano per diverse caratteristiche i contenuti testuali, grafici e video.
Di seguito una lista di **hashtag** da **seguire** tassativamente sia su **Twitter** che su **Instagram** (ma anche Linkedin e Facebook) per rimanere aggiornati sui trend del momento nel mondo dello sviluppo di videogiochi indie.
* #indiegame
* #indiegamedev
* #indiedeveloper
* #indiegamedeveloper
* #indiedevs
* #gamedevs
* #gamedevelopment
* #gamedesign
* #sidescroller
* #gameart
* #pitchyagame
* #pixelart
* #pixelgames
* #2dgame
* #lowpoly
* #blender
* #crearevideogiochi
* #madebyunity
* #unity3d
* #unrealengine
* #screenshotsaturday
NOTA: riguardo all’ultimo hashtag “#screenshotsaturday”: è buona norma utilizzare questo hashtag quando, unicamente il sabato, si condivide uno screenshot del proprio gioco per mostrare i progressi di sviluppo. Lecito scorrerlo durante tutta la settimana, corretto usarlo solo il sabato.
NOTA2: Qui un ottimo tool online gratuito per analizzare hashtag correlati e il loro engagement (like e commenti): [https://hashtagstack.com/hashtag-generator](https://hashtagstack.com/hashtag-generator)
BONUS: Lista completa da copiare/incollare
------------------------------------------
#indiegame #indiegamedev #indiedeveloper #indiegamedeveloper #indiedevs #gamedevs #gamedevelopment #gamedesign #sidescroller #gameart #pitchyagame #pixelart #pixelgames #2dgame #lowpoly #blender #madebyunity #crearevideogiochi #unity3d #unrealengine #screenshotsaturday
Potrebbe interessarti anche:
----------------------------
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[1Like](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/hashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fhashtag-da-seguire-e-utilizzare-se-sei-uno-sviluppatore-di-videogame-indie%2F)
Login
---
# Come risolvere l'errore "unable to find jar in the system path unity" in Unity per Android - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore “unable to find jar in the system path unity” in Unity per Android
==========================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
25 Agosto 2023
Durante il primo switch di build verso quella Android, Unity spesso può mostrare l’errore “**Unable to find jar in the system path unity**“. Questo messaggio indica che l’editor non riesce ad individuare la corretta **installazione** della JDK (Java Developer Kit) presente nell’installazione dello stack di build di Android per Unity.
Per verificare la corretta installazione è possibile accedere al menu **Unity > Preferences > External Tools** e verificare la corretta directory JDK. Spesso tale directory è perfettamente corretta.
Quello che è necessario fare ulteriormente è definire una **variabile** di **ambiente** Windows in modo che sia universalmente riconosciuta dal sistema. Per farlo accedere “Modifica variabili di ambiente per l’account” in Windows (cercandolo attraverso il menu di ricerca) ed inserire uan nuova variabile chiamata **JAVA\_HOME** avendo cura di inserire come valore la directory di installazione **JDK** (la stessa trovata nel menu External Tools di Unity).

Non dovrebbe essere necessario riavviare ne Unity ne il sistema operativo e sarà possibile creare la proprio build Android da Unity.
Se la build Android si blocca su “building scene 0”
---------------------------------------------------
Potrebbe essere necessario settare alcune impostazione nel menu **Asset > Mobile Dependency Resover > Android Resolver > Settings**, nel modo seguente:

Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-unable-to-find-jar-in-the-system-path-unity-in-unity-per-android%2F)
Login
---
# TopDown Engine - Motore grafico per giochi dall'alto - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/topdown-engine/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/topdown-engine/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/topdown-engine/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
TopDown Engine – Motore grafico per giochi dall’alto
====================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
24 Maggio 2022
TopDown Engine è il componente **Unity** che tutti dovrebbero avere, o perlomeno provare, per sviluppare un videogioco **top down dall’alto** sia **2D** che **3D**. Include moltissimi esempi con componenti di gestione AI, pathfinding, feedbacks, eventi e animazioni. Utilissimo anche per lo sviluppo di versioni first playable, demo e prototipi.
[UNITY Assets Store](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftemplates%2Fsystems%2Ftopdown-engine-89636)
Potrebbe interessarti anche:
----------------------------
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come contribuiscono i Collider tra padre e figli…](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/topdown-engine/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/topdown-engine/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Ftopdown-engine%2F)
Login
---
# Scrivere un file su disco al termine di una build Unity con la funzione OnPostprocessBuild - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Scrivere un file su disco al termine di una build Unity con la funzione OnPostprocessBuild
==========================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
4 Ottobre 2023
Può capitare, nello sviluppo di applicativi in **Unity**, di avere la necessità di far compiere una azione all’editor al termine di una build.
Uno dei casi più semplici è quello di dover scrivere un **file** all’interno della **directory** in cui l’eseguibile viene generato (ad esempio per creare una documentazione oppure un file contenente le info di sistema come company name, product name o numero di versione).
La funzione che ci viene in aiuto è **OnPostprocessBuild** che viene chiamata proprio al termine di ogni **build** eseguita dall’editor.
Per compiere questa operazione è necessario creare un file .cs ed inserirlo obbligatoriamente nella cartella \\Assets\\Editor che includa la funzione statica OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) e parametrizzata con \[PostProcessBuildAttribute(1)\]
Da notare che la funzione statica passa anche due utili **parametri**: target e pathToBuildProject
Di seguito un esempio completo (da notare che l’esempio riporta anche la direttiva di compilazione solo per build Windows, cosa ovviamente non indispensabile se servisse per altre piattaforme).
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using System.IO;
using UnityEngine.WSA;
public class PostProcessBuild : MonoBehaviour
{
[PostProcessBuildAttribute(1)]
public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
{
#if UNITY_STANDALONE_WIN
string path = pathToBuiltProject.Substring(0, pathToBuiltProject.LastIndexOf('/'));
string filename = "info.txt";
string finalPath = path + "/" + filename;
string companyName = UnityEngine.Application.companyName;
string productName = UnityEngine.Application.productName;
string textToWrite = companyName + "/" + productName;
//Write file
StreamWriter writer = new StreamWriter(finalPath, true);
writer.WriteLine(textToWrite);
writer.Close();
Debug.Log("File '" + finalPath + "' written on " + target.ToString());
#endif
}
}
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Perchè usare Time.deltaTime in Unity](https://www.crearevideogiochi.it/perche-usare-time-deltatime-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Pubblicare una build Unity tramite SteamPipeGUI di…](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[0Likes](https://www.crearevideogiochi.it/scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fscrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild%2F)
Login
---
# Creare un timer con possibilità di pausa in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/creare-un-timer-con-possibilita-di-pausa-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/creare-un-timer-con-possibilita-di-pausa-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/creare-un-timer-con-possibilita-di-pausa-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Creare un timer con possibilità di pausa in Unity
=================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
18 Agosto 2023
Una delle necessità più comuni durante lo sviluppo di un videogame, è la possibilità di creare un **timer** di gioco (da mostrare a video oppure semplicemente per statistiche interne). Se da un lato la realizzazione è semplice, dall’altro può esserci la necessità di mettere in **pausa** il **conteggio** al fine di riprenderlo dopo la pausa stessa.
Di seguito un semplice script utile alla realizzazione di un timer con possibilità di pausa.
public class Timer : MonoBehaviour
{
public Text timerText;
private float totalTime;
private bool isPaused = false;
private void Update()
{
if (!isPaused)
{
totalTime += Time.deltaTime;
int hours = Mathf.FloorToInt(totalTime / 3600);
int minutes = Mathf.FloorToInt((totalTime % 3600) / 60);
int seconds = Mathf.FloorToInt(totalTime % 60);
timerText.text = hours.ToString("00") + ":" + minutes.ToString("00") + ":" + seconds.ToString("00");
}
}
public void TogglePause()
{
isPaused = !isPaused;
}
}
Potrebbe interessarti anche:
----------------------------
* [\
\
Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Visualizzare un Interstitial ADS di Unity Level Play…](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Perchè usare Time.deltaTime in Unity](https://www.crearevideogiochi.it/perche-usare-time-deltatime-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/creare-un-timer-con-possibilita-di-pausa-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/creare-un-timer-con-possibilita-di-pausa-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcreare-un-timer-con-possibilita-di-pausa-in-unity%2F)
Login
---
# Come risolvere il problema della preview non visualizzata dei prefab di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere il problema della preview non visualizzata dei prefab di Unity
=============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Febbraio 2024
Può capitare che durante l’utilizzo di **Unity**, quando ad esempio si importano prefab da pacchetti asset esterni, non vengano visualizzate le **preview** nell’editor di progetto e dunque sia pressoché impossibile individuare a colpo d’occhio il prefab necessario. Questo problema sembra essere legato soprattutto alla **pipeline URP** e alla versione 2022 di Unity.

E’ possibile provare 2 soluzioni al problema:
1. Selezionare contemporaneamente tutti i prefab dei quali non viene visualizzata la preview e disabilitare e riabilitare contemporaneamente il **Mesh Renderer** dall’Inspector.
2. Selezionare contemporaneamente tutti i prefab dei quali non viene visualizzata la preview, premere tasto destro e selezionare ‘**Reimport**‘.
Entrambi i metodi ricreano istantaneamente le **preview** dei **prefab** selezionati.

Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity%2F)
Login
---
# Scollegare una copia di un progetto Unity da Plastic SCM - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/scollegare-una-copia-di-un-progetto-unity-da-plastic-scm/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/scollegare-una-copia-di-un-progetto-unity-da-plastic-scm/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/scollegare-una-copia-di-un-progetto-unity-da-plastic-scm/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Plastic SCM](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Scollegare una copia di un progetto Unity da Plastic SCM
========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Dicembre 2022
In alcune circostante può rendersi necessario **scollegare** un progetto **Unity** gestito tramite **[Plastic SCM](https://unity.com/products/plastic-scm)
**, ad esempio quando se ne vuole fare un **backup**. L’obiettivo è quindi mantenere il progetto originale collegato a Plastic mentre scollegarne completamente la sua copia.
NOTE: [qui la nostra guida per eseguire il backup di un progetto Unity](https://www.crearevideogiochi.it/come-fare-il-backup-di-un-progetto-unity-e-risparmiare-spazio/)
* Eseguire la semplice **copia** di tutta la cartella principale del progetto (avendo cura di posizionarsi sul changeset desiderato)
* Nella cartella della copia, eliminare la cartella .plastic dalla root principale (cartella nascosta)
* Nella cartella della copia, eliminare i files .gitattributes, .gitignore, hidden\_changes.conf e ignore.conf dalla root principale
* Nella cartella della copia, aprire il file \\packages\\manifest.json in modo testuale ed eliminare la riga com.unity.collab.proxy
* Nella cartella della copia, aprire il file \\packages\\package-lock.json in modo testuale ed eliminare completamento l’oggetto com.unity.collab-proxy
A questo punto la copia del progetto sarà completamente **scollegata** da Plastic SCM, quindi senza le informazioni di **sincronizzazione** e senza i packages necessari per gestirne il versioning.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [")\
\
Configurare un progetto Unity esistente per Unity…](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[0Likes](https://www.crearevideogiochi.it/scollegare-una-copia-di-un-progetto-unity-da-plastic-scm/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/scollegare-una-copia-di-un-progetto-unity-da-plastic-scm/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fscollegare-una-copia-di-un-progetto-unity-da-plastic-scm%2F)
Login
---
# Calcolare le proprietà di una camera ortogonale di Unity affinché visualizzi sempre specifici oggetti in scena - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/calcolare-le-proprieta-di-una-camera-ortogonale-di-unity-affinche-visualizzi-sempre-specifici-oggetti-in-scena/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/calcolare-le-proprieta-di-una-camera-ortogonale-di-unity-affinche-visualizzi-sempre-specifici-oggetti-in-scena/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/calcolare-le-proprieta-di-una-camera-ortogonale-di-unity-affinche-visualizzi-sempre-specifici-oggetti-in-scena/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Calcolare le proprietà di una camera ortogonale di Unity affinché visualizzi sempre specifici oggetti in scena
==============================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
15 Maggio 2023
Nell’uso di camera dinamiche di Unity, può essere necessario fare in modo che degli oggetti specifici in scena siano **sempre visibili** dalla camera che li sta visualizzando. Questo significa individuare le **proprietà** della **camera** rispetto agli oggetti stessi. Si tratta dunque di fare in modo che lo **spazio** occupato dagli oggetti sia sempre incluso nello spazio della camera.
Per far questo ci vengono in aiuto i **Colliders** i quali, se interrogati opportunamente, ci consento di conoscere le loro caratteristiche volumetriche correnti e dunque generare un volume che contenga tutti quelli che vogliamo includere e trovare le corrispondenti proprietà della camera **ortogonale** che li deve visualizzare. E’ una procedura abbastanza semplice in quanto la camera ortogonale è, per definizione, priva di alcune caratteristiche che aggiungerebbero complessità a questo calcolo.
Di seguito la funzione che permette di ottenere il valore di **Position** e **Size** delle camera ortogonale in oggetto, includendo anche la possibilità che tale calcolo venga fatto sugli **assi** XY oppure XZ (nel primo caso una visualizzazione ortogonale in profondità, nel secondo dall’alto). Da notare che la funzione ritorna un oggetto composto da 3 elementi.
public (Vector3 center, float size, Bounds bound) CalculateOrthoSize(List colliders, float expandOffset = 1.0f, CalculateOrthoSizeType type = CalculateOrthoSizeType.XZ)
{
var bounds = colliders[0].bounds;
for(int i=1; i< colliders.Count; i++ ) { bounds.Encapsulate(colliders[i].bounds); }
bounds.Expand(expandOffset);
var vertical = bounds.size.y;
if (type == CalculateOrthoSizeType.XZ) { vertical = bounds.size.z; }
var horizontal = bounds.size.x * componentCamera.pixelHeight / componentCamera.pixelWidth;
var size = Mathf.Max(horizontal, vertical) * 0.5f;
var center = bounds.center;
if (type == CalculateOrthoSizeType.XY) { center += new Vector3(0, 0, 10); }
else { center += new Vector3(0, 10, 0); }
return (center, size, bounds);
}
E’ possibile quindi utilizzare il risultato della funzione affinché imposti i parametri della camera corrente, nel modo seguente:
var result = this.CalculateOrthoSize(this.ListColliders, 1.0f);
componentCamera.orthographicSize = result.size;
transform.position = result.center;
_Nell’immagine di copertina, presa dal gioco [GGWG](https://www.instagram.com/ggwg_official/)
, è possibile notare come la camera ortogonale riprenda completamente le caselle dalla 4 alla 14._
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come evitare che AudioClip identici riprodotti nello…](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
[0Likes](https://www.crearevideogiochi.it/calcolare-le-proprieta-di-una-camera-ortogonale-di-unity-affinche-visualizzi-sempre-specifici-oggetti-in-scena/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/calcolare-le-proprieta-di-una-camera-ortogonale-di-unity-affinche-visualizzi-sempre-specifici-oggetti-in-scena/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcalcolare-le-proprieta-di-una-camera-ortogonale-di-unity-affinche-visualizzi-sempre-specifici-oggetti-in-scena%2F)
Login
---
# Android Archivi - Pagina 2 di 2 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/android/page/2/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/android/page/2/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/android/page/2/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Android
[](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Disabilitare l’oscuramento dello schermo per inattività su dispositivi Android/iOS in giochi sviluppati con Unity](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/)
In alcuni contesti di videogiochi o applicazioni può essere necessario disabilitare l'oscuramento per inattività dello schermo, come ad esempio in cutscene, introduzioni o momenti in cui non vi è interazione…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/#respond)
[](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore ‘RenderTexture.Create failed depth/stencil format unsupported – D32 SFloat S8 UInt (94)’ per Android in Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/)
Può capitare, durante il runtime di un applicativo Unity compilato per Android, di incorrere nell'errore "RenderTexture.Create failed depth/stencil format unsupported - D32 SFloat S8 UInt (94) - There is no…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “CommandInvokationFailure: Gradle build failed” in Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/)
Quando si cerca di compilare un progetto Unity per Android, si può incorrere nell'errore "CommandInvokationFailure: Gradle build failed" al termine del processo di creazione del bundle Android. Questo tipo di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/)
[](https://www.crearevideogiochi.it/categoria/unity/android/page/2/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fdisabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity%2F)
Login
---
# Campagna Kickstarter di successo: il giorno perfetto di lancio - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
Campagna Kickstarter di successo: il giorno perfetto di lancio
==============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
25 Gennaio 2022
Per chi deve lanciare una campagna **Kickstarter** una delle primissime paure che incontra è quella di individuare il **giorno** corretto per il lancio al fine di massimizzare la resa.
La guida seguente nasce dal ricapitolo di alcuni interventi di Anya Combs (Director of games di Kickstarter) e dall’analisi di diverse **esperienze** di chi ha lanciato campagne ampiamente finanziate.
La guida ovviamente va intesa come un semplice punto di partenza per avere chiari alcuni aspetti nella valutazione del **lancio** della propria campagna di crowdfunding e non come un dogma da seguire alla lettera, dopotutto ogni campagna è diversa, come lo è il suo creatore.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/#)
MESE: Evitare i mesi delle ricorrenze
-------------------------------------
E’ indubbio che sia necessario evitare i mesi in cui i potenziali finanziatori sono portati and **investire** altrove.
E’ questo il caso dei mesi del Black Friday e le varie ricorrenze. Nello specifico è quindi meglio evitare i mesi di ottobre, novembre e dicembre.
I mesi su cui concentrarsi sono dunque quelli nella prima metà dell’anno, indicativamente **marzo**, **maggio** e **luglio**.
GIORNO: Evitare il weekend
--------------------------
Da analisi interne di Kickstarter risulta che il sito è meno navigato nel weekend, specificatamente il venerdì, il sabato e la domenica. Per questo motivo è meglio non avviare la propria campagna in questi giorni ma concentrarsi altrove.
Al contrario i giorni di inizio settimana sono quelli più visitati e dunque con più potenziale per il lancio di una campagna di successo: **lunedì**, **martedì** e **mercoledì**.
ORA: Evitare la mattina inoltrata e la sera
-------------------------------------------
Non vi è un orario preciso di lancio, anche perché dipende molto dall’area geografica in cui il proprio target di riferimento opera. Se inoltre l’idea è quella di un target globale questa regola perde molto di significato.
Ad ogni modo, da diverse analisi, risulta che può essere efficace lanciare la campagna alle **8:00 del mattino** oppure **dalle 12:00 alle 15:00** ma evitando sicuramente la tarda mattina e la sera dopo le 20:00.
Qualche idea di lancio
----------------------
Giusto per esercizio di stile, di seguito alcune date che potrebbero riassumere quanto detto nel post.
* Martedì alle 8:00 – in Marzo
* Mercoledì alle 12:00 – in Maggio
* Lunedì alle 14:00 – in Luglio
Potrebbe interessarti anche:
----------------------------
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcampagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio%2F)
Login
---
# Campagna Kickstarter di successo: 5 cose da NON fare - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
Campagna Kickstarter di successo: 5 cose da NON fare
====================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
27 Gennaio 2022
Nella [precedente guida](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
abbiamo visto cosa fare per una campagna Kickstarter di successo.
In questo post invece cercheremo di capire quali sono gli **errori** da **evitare** assolutamente durante lo sviluppo ed il lancio di una campagna **crowdfunding** efficace e di successo.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/#)
1\. Non pubblicare aggiornamenti
--------------------------------
Uno degli errori principali che commette chi pubblica campagne su Kickstarter è quello di lanciare la campagna stessa e poi dimenticare completamente la fase di pubblicazione degli **aggiornamenti**. Gli aggiornamenti sono utili sia per chi ha già finanziato (per seguire lo stato della campagna) ma soprattutto per mostrare ai possibili finanziatori che il progetto e la campagna sono seguiti **costantemente**, sono aggiornati e sono l’attuale **priorità** dello sviluppatore.
La regola è quindi quella di pubblicare al lancio già alcuni update ma soprattutto cercare di pubblicare aggiornamenti ogni giorno, o perlomeno ogni 2/3 giorni.
2\. Giorno di lancio sbagliato
------------------------------
Purtroppo alcune campagne, seppur impostate a dovere, falliscono per una scelta fatta a monte: il **periodo** di lancio. Come riassunto in questo post, i mesi preferibili sono marzo, maggio e luglio, i giorni lunedì, martedì e mercoledì e l’orario alle 8:00 oppure dalle 12:00 alle 15:00
Sottovalutare il periodo di **lancio** è un errore che potrebbe costare caro.
Regola generale da tenere a mente: evitare i mesi di fine anno e il weekend.
3\. Abusare degli Stretch Goals
-------------------------------
La funzionalità di stretch goals non è ufficialmente implementata da Kickstarter ma è una attività che permette di indicare **obiettivi** successivi a quello di finanziamento effettivo. Da un lato questa pratica viene usata onestamente per sviluppare funzionalità aggiuntive o distribuzioni (ad esempio: versione Nintendo Switch, localizzazione in ulteriori lingue, nuovi nemici e caratteristiche, etc) dall’altra però spesso viene usata in modo “illecito” impostando inizialmente una cifra **inferiore** ai bisogni e con i goals successivi arrivare alla cifra necessaria.
Questa pratica è assolutamente sconsigliata da Kickstarter (oltre che ad essere rischiosa e disonesta) che invece consiglia di impostare il proprio “**founding goal**” direttamente alla cifra di cui si ha bisogno e gli stretch goals successivi unicamente per attività **aggiuntive** e di **perfezionamento**.
4\. Affidarsi unicamente alla stampa
------------------------------------
Molto spesso si tende a pensare che youtuber o streamer influenti possano aiutare a portare centinaia di finanziatori semplicemente perché viene citato il progetto oppure viene addirittura giocato in diretta. Purtroppo la realtà dei fatti è un’altra in quanto questo tipo di canali è spesso seguito non per quello che mostrano (il contenuto, la qualità, etc.) ma per la sola personalità di chi ci sta giocando.
Di fatto non bisogna sperare che al lancio, avendo condiviso con youtuber o streamer famosi il proprio progetto, questo ottenga finanziatori ma, anzi, il risultato sarà probabilmente deludente. Rimane il fatto che comunque è una via che si può comunque percorrere.
5\. Sparire completamente
-------------------------
Similarmente all’essere onesti e alla pubblicazione di costanti aggiornamenti, è bene che dopo il lancio e dopo l’avvenuto finanziamento, non si sparisca completamente. Questo perché potrebbe far pensare ai finanziatori che il progetto sia **naufragato**, che non verrà mai sviluppato o che addirittura la campagna sia stata una mera **truffa**. Finanziatori scontenti inoltre potrebbero parlar male del progetto su piattaforme **social** (Twitter, Facebook, Twitch, etc) aggiungendo difficoltà a quelle già presenti.
E’ necessario quindi evitare di sparire ma interagire con la community di finanziatori pubblicando updates e novità sullo progetto mostrando come procede il suo sviluppo effettivo.
Potrebbe interessarti anche:
----------------------------
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Campagna Kickstarter di successo: il giorno perfetto…](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcampagna-kickstarter-di-successo-5-cose-da-non-fare%2F)
Login
---
# Visualizzare caratteri cirillici in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/visualizzare-caratteri-cirillici-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/visualizzare-caratteri-cirillici-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/visualizzare-caratteri-cirillici-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Visualizzare caratteri cirillici in Unity
=========================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
5 Febbraio 2024
Uno degli aspetti fondamentali della gestione **multilingua** di un progetto **Unity** è quello di capire come poter visualizzare **lettere** particolari e **ideogrammi** attraverso i normali fonts utilizzati nella UI, magari sfruttando le potenzialità di TextMeshPro.
Per quanto riguarda la visualizzazione di **caratteri cirillici** (ad esempio utilizzati nella **lingua russa**, ucraina, bulgara, etc – [qui la lista completa](https://it.wikipedia.org/wiki/Alfabeto_cirillico)
) è necessario prestare attenzione ai codici **esadecimali** utili ad estrarre tali caratteri dai font scelti. Fondamentale è che i caratteri devono essere supportati dal font stesso; questo è un elemento importante per la riuscita della visualizzazione, dunque anche la ricerca del font corretto richiederà sforzi e test.
[A questo link potete trovare](https://fonts.google.com/specimen/Alegreya)
un font che supporta i caratteri russi (utilizzato anche nell’esempio riportato sotto)
Per estrarre i caratteri cirillici da un font è necessario quindi specificare, nel Font Asset Creator, i seguenti **intervalli** esadecimali: 0020-007F,0400-04FF (attenzione a non inserire spazi tra la punteggiatura)
A questo punto è possibile salvare l’**asset** del font di Unity e utilizzarlo nella gestione delle scritte e diciture dell’applicativo.

Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[0Likes](https://www.crearevideogiochi.it/visualizzare-caratteri-cirillici-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/visualizzare-caratteri-cirillici-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fvisualizzare-caratteri-cirillici-in-unity%2F)
Login
---
# 7 consigli per costruire una community da sfruttare nel lancio di un videogioco indie su Kickstarter - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
7 consigli per costruire una community da sfruttare nel lancio di un videogioco indie su Kickstarter
====================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
17 Maggio 2022
Il lancio di una campagna Kickstarter, così come il seguire la sua evoluzione durante tutta la durata, è una fase molto delicata e che ha il massimo valore durante i primissimi giorni.
Abbiamo già visto [cosa fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
, [cosa NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
e quale può essere [il giorno perfetto](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
per il lancio, ma prima di tutto questo è necessario prepararsi al meglio costruendo una community che possa valorizzare la campagna nel modo migliore. Di seguito alcuni consigli da seguire durante lo sviluppo del proprio videogame indie.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/#)
1\. Costruisci la community prima che ti serva
----------------------------------------------
Prima si inizia e meglio è. Costruire una community nel momento in cui serve è probabilmente la scelta sbagliata perché per costruirla serve molto **tempo** e molti sforzi, mentre l’obiettivo è quello di lanciare la campagna il prima possibile. Per questo motivo è consigliato creare fin da subito i profili dedicati al videogioco sui social che si intendono usare (Twitter, Instagram, Facebook, Tik Tok, etc). Oltre a questo è consigliato acquistare un dominio con il nome del gioco e costruire un semplice sito web / landing page per descrivere in dettaglio il gioco stesso e le sue evoluzioni.
2\. Sfrutta i profili personali
-------------------------------
Sicuramente, nel momento in cui si sta per iniziare lo sviluppo del gioco, si possiedono già i propri **profili personali** social (Facebook, Linkedin, Discord, etc). Non bisogna dimenticare che questi sono una fonte importantissima per veicolare i media e le evoluzioni del gioco stesso in quanto già presidiati, già lanciati e con followers attivi (siano essi amici o collegamenti professionali). Il consiglio è quindi di sfruttare i propri profili social per **pubblicare**, o **ricondividere**, i post dedicati allo sviluppo del videogioco. Un ulteriore consiglio è quello di pubblicare su gruppi Facebook e Reddit dedicati allo sviluppo.
3\. Segui altri sviluppatori e gli influencer
---------------------------------------------
Per poter costruire una community ed una rete solida di follower è necessario prima di tutto vedere quello che fanno gli altri sviluppatori e gli influencer. Due modalità diverse di approccio ai social ma entrambe valide e da studiare nel dettaglio. Il consiglio è quello di seguire queste persone, capire **quando**, **cosa** e **come** pubblicano analizzando le modalità, i testi, gli hastag e i **tempi** di pubblicazione. Inoltre è possibile capire chi sono i loro follower ed eventualmente richiedere noi stessi la connessione a quest’ultimi.
4\. Segui gli #hastag giusti
----------------------------
Instagram e Twitter sono basati principalmente sul concetto di **hashtag**. Se si decide di utilizzare questi due social per pubblicare il proprio lavoro è necessario capire come funzionano e quali hashag sono da usare e quali da ignorare. Creare una propria **lista** di hashtag è fondamentale per associare i propri contenuti ai concetti chiave ed aiutare gli **algoritmi** a posizionarli nel modo corretto (oltre a permettere all’audience di trovarli facilmente).
5\. Condividi video, screenshot e immagini del gioco
----------------------------------------------------
I videogames, così come i social, sono basati principalmente su **contenuti visuali**. Per questo motivo, durante lo sviluppo, è bene creare una propria collezione di immagini, video e screenshot della lavorazione. Ai follower piace vedere immagini di promozione ma anche immagini che rappresentano le **evoluzioni**, i **bug** e i **tecnicismi** utilizzati nello sviluppo. Questo genererà interesse da parte di videogiocatori, altri sviluppatori, stampa e influencer.
6\. Realizza una demo giocabile del gioco
-----------------------------------------
E’ assodato che le campagne per videogames di Kickstarter più finanziate sono quelle che propongono il **download di una demo** giocabile del gioco stesso. Questo permette agli utenti, ed eventualmente sostenitori, di toccare con mano quello che andranno a **finanziare**. Inoltre, questo approccio, permette di far capire ai propri follower che il prodotto esiste, funziona e non è unicamente una idea da realizzare dando credibilità a tutto il progetto. E’ possibile pubblicare la demo sul proprio sito web dedicato al gioco o eventualmente su itch.io
La demo inoltre permette di poter far giocare amici interessati ma anche **tester** e altri sviluppatori che potrebbero dare consigli e suggerimenti su come evolvere il gioco, risolvere **bug** e implementare dinamiche di **gameplay** differenti.
7\. Crea una mailing list dedicata
----------------------------------
Una delle attività che più valide è quella di riuscire a creare una **mailing list** di **indirizzi** da poter contattare al momento del lancio della campagna Kickstarter. E’ bene quindi premunirsi fin da subito di un sistema di raccolta email ed **invio** massivo (ad esempio Mailchimp, ma anche Mailup o Sendinblue). Sarà quindi possibile creare dei gruppi di invio in modo da dividere i semplici interessati dai tester, gli sviluppatori dai backers.
Consigli Extra
--------------
* Valutare la creazione di una pagina Steam fin da subito dove raccogliere gli interessati attraverso la Wishlist
* Valutare la creazione di una pagina di pre-lancio della campagna Kickstarter che permetta agli interessati (e potenziali bakers) di iscriversi e restare aggiornati sull’avvio
* Non utilizzare sistemi automatici, semi automatici o bot per far crescere i propri followers
* Non sottovalutare che i primi interessati al gioco potrebbero essere i propri amici e conoscenti
* Utilizzare le stories di Instagram, ma anche di Whatsapp, per veicolare i contenuti del gioco
* Valutare la realizzazione di una demo giocabile direttamente nel browser web (anche se il gioco sarà poi unicamente per console e dispositivi mobile)
* Sfruttare le community su Discord e Twitch per espandere le proprie conoscenze e relazioni sui diversi canali
Potrebbe interessarti anche:
----------------------------
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
* [\
\
Campagna Kickstarter di successo: il giorno perfetto…](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2F7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter%2F)
Login
---
# Decompilare un gioco Unity per recuperare asset perduti - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/decompilare-un-gioco-unity-per-recuperare-asset-perduti/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/decompilare-un-gioco-unity-per-recuperare-asset-perduti/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/decompilare-un-gioco-unity-per-recuperare-asset-perduti/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Decompilare un gioco Unity per recuperare asset perduti
=======================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
Può capitare di avere la necessità di recuperare degli **asset grafici** (**mesh**, **texture**, **shader**, font, sprite, audio, animazioni, etc) che si trovano nel proprio **gioco compilato**, magari avendo perduto gli originali.
In nostro soccorso viene un **decompilatore** di giochi Unity chiamato **AssetStudio**.
In sostanza, scegliendo la cartella dove risiede il gioco compilato, permette di decompilare il progetto e recuperare la gerarchia della scena, le classi e la lista completa degli asset.

All’interno vi è anche un ottimo e utile **visualizzatore 3D** degli asset da averne una anteprima.
Selezionando l’asset desiderato sarà possibile **esportare** in formato .**obj** gli asset desiderati così da averli a disposizione nuvoamente. E’ presente anche una funziona per esportazione multipla di tutti gli asset presenti.
Trovate il repository del progetto su GitHub [qui](https://github.com/Perfare/AssetStudio)
Trovate il file della GUI pre-compilato per Windows [qui](https://github.com/Perfare/AssetStudio/releases/tag/v0.16.47)
Trovate una versione recente compilata da noi [qui](https://www.danieleferla.it/download/AssetStudio.v0.15.23.7z.zip)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/decompilare-un-gioco-unity-per-recuperare-asset-perduti/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/decompilare-un-gioco-unity-per-recuperare-asset-perduti/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fdecompilare-un-gioco-unity-per-recuperare-asset-perduti%2F)
Login
---
# Come testare una build di Unity per Linux in Windows - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-testare-una-build-di-unity-per-linux-in-windows/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-testare-una-build-di-unity-per-linux-in-windows/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-testare-una-build-di-unity-per-linux-in-windows/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come testare una build di Unity per Linux in Windows
====================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
28 Dicembre 2023
Quando si vuole rilasciare una applicazione o un gioco Unity anche per **Linux** è necessario testarla nello stesso ambiente. Una semplice soluzione è quella di installare una **macchina virtuale** Linux in ambiente **Windows** e testare la build direttamente da lì. Di seguito i passaggi da effettuare:
* Installare Hyper-V per Windows 10 seguendo [questa guida](https://learn.microsoft.com/it-it/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v)
* Creare una macchina virtuale seguendo [questa procedura](https://learn.microsoft.com/it-it/virtualization/hyper-v-on-windows/quick-start/quick-create-virtual-machine)
avendo cura di selezionare nella Creazione Rapida il sistema Linux desiderato (es: Ubuntu 22.04 LTS)
* Installare entrambi i moduli di Linux IL2CPP e Mono attraverso lo Unity Hub (di default non vengono installati)
* Avviare Unity e nel menu di Build Settings selezionare Linux come Target Platform
* Buildando la versione Linux verrà generata una cartella contenente due files e una directory necessari all’avvio; trasferirli nella macchina virtuale creata, ad esempio zippandoli e usando WeTransfer tra i due sistemi
* In Linux decomprimere i files in una cartella
* Cliccare il tasto destro del mouse sul file con estensione .x86\_64, selezionare Proprietà e avere cura di attivare l’opzione per rendere eseguibile il file (di default disattivata)
* Eseguire il file .x86\_64

Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Pubblicare una build Unity tramite SteamPipeGUI di…](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/come-testare-una-build-di-unity-per-linux-in-windows/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-testare-una-build-di-unity-per-linux-in-windows/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-testare-una-build-di-unity-per-linux-in-windows%2F)
Login
---
# Campagna Kickstarter di successo: 8 cose da fare - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
Campagna Kickstarter di successo: 8 cose da fare
================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
19 Gennaio 2022
Anya Combs (Director of games di Kickstarter) è indubbiamente la manager più influente in quanto a stretto contatto con gli sviluppatori e tutti coloro che pubblicano giochi sulla piattaforma di **crowdfunding** Kickstarter.
Prendendo spunto da diversi talk da lei tenuti, di seguito una lista di **cose DA FARE** per avere successo con la propria campagna **Kickstarter**.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/#)
1\. Pubblicare una DEMO del gameplay di gioco
---------------------------------------------
Un delle discriminanti fondamentali per avere successo è quella di realizzare una **demo giocabile** del proprio videogioco. Gli utenti difficilmente comprano i videogames a scatola chiusa e prediligono finanziare giochi dei quali è già stato sviluppato un concept e perlomeno un **prototipo** giocabile. Questo fa anche capire che non è solo una idea nella propria testa ma che si è speso del tempo per creare qualcosa di giocabile e valutabile. Se non avete una demo, non lanciate la campagna.
2\. Pubblicare un video, possibilmente corto
--------------------------------------------
Altro tempo speso bene è sicuramente quello nella realizzazione di un video. Questo dovrebbe contenere sia immagini di gioco che **intermezzi** animati (se presenti); non necessariamente un trailer ben confezionato ma un video che mostri diverse parti del gioco, dal **gameplay** ai dialoghi, dalle scene animate ai **menu**. Inoltre non deve annoiare quindi possibilmente corto e sicuramente dal ritmo incalzante e poco noioso. Se non avete un video, non lanciate la campagna.
3\. Pubblicare GIF animate del gameplay
---------------------------------------
Una peculiarità della piattaforma è quella di poter pubblicare **immagini** animate informato GIF. Questo permette alla campagna di essere attrattiva in quanto si tratta di piccoli video all’interno del testo principale della campagna ma che rendono la pagina dinamica e in movimento spezzando il ritmo della lettura e mostrando dettagli del gioco. Inoltre queste immagini **animate** sono sempre utili anche la pubblicazione su Twitter (che predilige GIF ai video).
4\. Costruire una community
---------------------------
Per sfruttare al meglio il giorno di lancio della campagna è necessario avere una community a cui comunicare l’effettivo avvio e che possa **condividere** tale evento. Per questo motivo il consiglio è quello di aver costruito una community di interessati **prima del lancio** della campagna in modo da sfruttarla al momento del lancio. Questo permette di **massimizzare** i primi giorni di campagna raccogliendo più fondi possibili in modo da rendere la campagna stessa più attrattiva per i futuri finanziatori (infatti si tende a finanziare qualcosa che è già stato finanziato da altri).
5\. Scegliere accuratamente l’immagine principale
-------------------------------------------------
L’immagine di **copertina** della campagna è quella che rappresenta in pieno il potenziale del nostro gioco. Deve dunque essere creata appositamente per la campagna al fine di renderla attrattiva, interessante e dunque finanziata massivamente. Non è consigliato quindi caricare unicamente uno **screenshot** di gioco oppure banalmente solo il **logo** ma creare una composizione che rappresenti lo spirito del gioco, del gameplay, delle caratteristiche e della storia.

6\. Essere sempre onesti
------------------------
E’ necessario **promettere** quello che si sa di mantenere. Nessuno vuole finanziare una campagna per un prodotto che non verrà mai realizzato oppure che, una volta realizzato, non corrisponde a quanto promesso. E’ dunque inutile promettere caratteristiche, funzionalità e complessità di gioco solo per rendere interessante la campagna quando si sa benissimo che non verranno implementate. Serve essere **onesti** prima con se stessi e poi con i potenziali finanziatori.
7\. Impostare campagne da 30-35 giorni
--------------------------------------
Da indagini interne di Kickstarter stessa, risulta che le campagne di 30/35 giorni hanno più successo di campagne su meno giorni (ad esempio da 20 giorni). Una delle motivazioni è quella che in America i pagamenti degli **stipendi** possono cadere ogni 2 settimane e dunque in 30 giorni si ha la possibilità di **intercettare** questo evento due volte (quindi il potere di spesa in quel momento). In Italia questo evento cade solitamente una volta al mese dunque, a maggior ragione, ha senso creare una campagna di 30/35 giorni di finanziamento.
8\. Sfruttare la pagina di Coming Soon
--------------------------------------
Una delle ultime funzionalità introdotte da Kickstarter è la pagina di “Coming soon” che permette a tutti gli interessati di iscriversi alla **lista d’attesa** per il lancio della campagna. E’ una pagina importante in quanto permette di essere diffusa **prima** del lancio stesso (attraverso le bio dei social, newsletter, condivisioni, etc) con la possibilità di ottenere subito dei possibili finanziatori che verranno **avvisati** via email nel momento in cui la campagna verrà lanciata ufficialmente.
Consigli BONUS
--------------
* Campagne di successo hanno almeno 8 goals
* Cerca di arrivare al finanziamento del 30% della campagna nel minor tempo possibile (sfruttando il lancio)
* Finanzia tu stesso, con l’account con cui farai la tua campagna, altre campagne sulla piattaforma
Potrebbe interessarti anche:
----------------------------
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Kickstarter vs Indiegogo: quale piattaforma di…](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Campagna Kickstarter di successo: il giorno perfetto…](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[0Likes](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcampagna-kickstarter-di-successo-8-cose-fare%2F)
Login
---
# Come risolvere l'errore "Questa release non è conforme al requisito dei 64 bit di Google Play" in Google Play Console per Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore “Questa release non è conforme al requisito dei 64 bit di Google Play” in Google Play Console per Unity
===============================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
21 Ottobre 2024
Può capitare che durante la **pubblicazione** del proprio applicativo **Unity** sullo store Google Play, venga visualizzato l’errore “Questa release non è conforme al requisito dei 64bit di Google Play” in **Google Play Console**.

Questo errore indica che il file **apk** o l’**asset bundle** non sono stati compilati per il supporto ai dispositivi con architettura **64bit**.
Per risolvere questo problema è necessario andare in File > Build Settings… > Player > Other Settings e cambiare i parametri nel modo seguente:
* Scripting Backend: verificare che sia selezionato **IL2CPP** (e non MONO, ad esempio)
* Target Architectures: selezionare la casella **ARM64** (eventualmente deselezionare la casella x86)

Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come configurare un progetto Unity per una build Android](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-questa-release-non-e-conforme-al-requisito-dei-64-bit-di-google-play-in-google-play-console-per-unity%2F)
Login
---
# Cosa è l'HD-2D - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cosa-e-hd-2d/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cosa-e-hd-2d/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cosa-e-hd-2d/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Cosa è l’HD-2D
==============

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
25 Febbraio 2022
Correva il mese di gennaio 2019 quando **Square Enix** registrava presso la WIPO (Organizzazione Internazionale della Proprietà Intellettuale) i marchi “**HD-2D**” e “**HD2D**“. Tale dicitura fu usata per presentare il lancio del gioco Octopath Traveler qualche mese prima.
Trailer di lancio di Octopath Traveler su Nintendo Switch
Realizzato attraverso Unreal Engine e con una grafica a 16 bit in pixel-art, Octopath Traveler implementa infatti per la prima volta una tecnica di utilizzo degli **sprite 2D** in pixel-art su fondali in **alta risoluzione** perfettamente integrati. I risultati sono effettivamente sbalorditivi, non solo catturano magistralmente l’attenzione e modernizzano meccaniche di gioco datate, ma incarnano anche perfettamente tutto ciò che amiamo del design visivo dei classici giochi di ruolo. Questi sprite sono nitidi, espressivi, fluidi e vivono in un mondo più grande di loro il quale prende vita attraverso effetti di acqua luccicante, erba ondeggiante, distorsione del calore e altri effetti visivi.
Cosa ci aspetta in futuro?
--------------------------
Recente la notizia che Square Enix è seriamente interessata a creare ulteriori giochi in HD-2D convertendo vecchie [IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
dello SNES.
Ma altri giochi sono in cantiere con questa tecnica, probabilmente ancora più interessanti di Octopath Traveler in quanto implementano interazioni tra sprite 2D e fondali HD in modo naturale. Un esempio è il gioco in sviluppo (e finanziato su [Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
) chiamato **Eiyuden Chronicle – Hundred Heros**.
Trailer, presentato all’E3 del 2021, di Eiyuden Chronicle
Dragon Quest 3 – Nintendo Switch
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/cosa-e-hd-2d/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cosa-e-hd-2d/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-hd-2d%2F)
Login
---
# Riconoscere a colpo d'occhio quando si è in Editmode o in Playmode di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/riconoscere-a-colpo-docchio-quando-si-e-in-editmode-o-in-playmode-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/riconoscere-a-colpo-docchio-quando-si-e-in-editmode-o-in-playmode-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/riconoscere-a-colpo-docchio-quando-si-e-in-editmode-o-in-playmode-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Riconoscere a colpo d’occhio quando si è in Editmode o in Playmode di Unity
===========================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
18 Marzo 2022
Chi utilizza Unity sa perfettamente che una delle sue migliori **funzionalità** è quella di poter modificare le proprietà di un oggetto (o meglio di una istanza) direttamente nell’editor quando si è in “**Playmode**“. Questo infatti permette di verificare a runtime il cambio di una variabile esposta al fine di osservarne il comportamento e, in caso, modificarne successivamente il codice oppure il valore di default.
E’ una funzionalità potentissima in quanto accelera la fase di **test** e di definizione dei valori delle variabili ma nasconde anche un terribile **problema**: spesso non ci si rende conto di essere in “Playmode”, modificando diversi parametri e, tornati in “Editmode”, si scopre che tali valori sono stati riportati ai valori precedenti (prima del Play), buttando così decine di minuti preziosi di lavoro.
Per evitare questo tipo di inconveniente è possibile usare una funzionalità pressoché sconosciuta di Unity che è possibile trovare in Edit > Preferences > Colors > **Playmode tint**

Pannello “Colors” nelle preferenze di Unity – Playmode tint
E’ possibile quindi impostare una tinta differente dell’editor di Unity quando si è in “Playmode” al fine di riconoscere a colpo d’occhio in quale modalità ci si trova. Al termine del modalità di play, la tinta verrà riportata a quella di default dell’editor stesso.

Editmode

Playmode
E’ indubbio che è necessario abituarsi a questo tipo di visualizzazione ma i **benefici** che ne porta sono notevoli soprattutto per il risparmio di tempo in modifiche che, in alternativa, non manterranno il loro stato.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Perchè usare Mathf.Lerp in Unity](https://www.crearevideogiochi.it/perche-usare-mathf-lerp-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
[0Likes](https://www.crearevideogiochi.it/riconoscere-a-colpo-docchio-quando-si-e-in-editmode-o-in-playmode-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/riconoscere-a-colpo-docchio-quando-si-e-in-editmode-o-in-playmode-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Friconoscere-a-colpo-docchio-quando-si-e-in-editmode-o-in-playmode-di-unity%2F)
Login
---
# Impostare la risoluzione grafica in stile 'retro' 8bit in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Impostare la risoluzione grafica in stile ‘retro’ 8bit in Unity
===============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
1 Marzo 2024
Negli ultimi tempi nel mondo dei videogiochi sta tornando alla ribalta la **grafica retro-style**, spesso definita come 480×360. Questo tipo di risoluzione permette quindi di simulare l’aspetto di giochi da **console a 8bit** degli anni ’80 donando un feeling particolare e accattivante (certo non per tutti i palati).
Per ottenere questo tipo di effetto si è portati a pensare di impostare una **risoluzione** bassa del renderer di Unity ma questo può comportare problemi di incompatibilità con alcune periferiche video, soprattutto su console.
La soluzione corretta invece è quella di creare una **Render Texture** in Unity che, opportunamente configurata e con risoluzione abbassata permette di ottenere quanto vogliamo. Nell’immagine sotto è bastato creare una Render Texture di dimensione **480×360** (ma possono essere provate risoluzioni sottomultipli di 1920×1080) ed impostare il Filter Mode su Point.

A questo punto la Render Texture deve essere impostata anche nella **Camera corrente** e poi essere associata ad una **Raw Image** del Canvas con allineamento stretchato al centro e messa in full-screen così da occupare tutto lo schermo. Il risultato in retro-style è quello che vedete nell’immagine di testa dell’articolo (per gentile concessione di Desdinova, Starmaster Prototype).
Avendo impostato la scrittura della camera sulla Render Texture (e non sul Backbuffer come normalmente avviene) sarà necessario aggiungere un’ulteriore camera con le medesime impostazioni della precedente (senza impostare questa volta la scrittura sulla Render Texture) e che si muova con essa impostandola come figlia.
Questo tipo di visualizzazione impatta intorno al 10% sugli FPS (Frame Per Seconds) per via della scrittura della scena su una Texture ma può essere **ottimizzata** per esempio cambiando la modalità di render delle ombre da Soft Mode a Hard Mode e togliendo l’Anti Aliasing.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
[0Likes](https://www.crearevideogiochi.it/impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fimpostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity%2F)
Login
---
# Serializzare oggetti in Unity con Newtonsoft.Json - Alternativa a JsonUtility - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/serializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/serializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/serializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Serializzare oggetti in Unity con Newtonsoft.Json – Alternativa a JsonUtility
=============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
8 Settembre 2022
**JsonUtility** è il namespace ufficiale di Unity per la **serializzazione** di file Json. Purtroppo però soffre di un problema non da poco: non implementa la serializzazione di array e liste. Questo, per progetto anche solo di poco evoluto, è un grosso problema che però è possibile aggirare usando una **libreria** molto famosa: **Newtonsoft.Json**
La guida completa potete trovarla a [questo indirizzo](https://www.newtonsoft.com/json/help/html/Introduction.htm)
.
Il repository Github [qui](https://github.com/JamesNK/Newtonsoft.Json)
.
Dalle versione Unity 2022: com.unity.nuget.newtonsoft-json@3.2
In questo articolo
[Toggle](https://www.crearevideogiochi.it/serializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility/#)
Come installare Newtonsoft.Json in Unity
----------------------------------------
Purtroppo la libreria non ha un package nello **Unity Asset Store** e quindi va installata tramite repository github.
Accedere quindi al **Package Manager** e cliccare sul pulsante + in alto a sinistra e cliccare successivamente “Add Package from Git url…”. A questo punto inserire la stringa ufficiale _com.unity.nuget.newtonsoft-json_ ed avviare l’installazione aggiungendo il pacchetto
Come serializzare con Newtonsoft.Json
-------------------------------------
Per serializzare un **oggetto complesso** con la libreria è necessario usare la funzione JsonConvert.SerializeObject nel modo seguente:
string json = JsonConvert.SerializeObject(this, Formatting.Indented, new JsonSerializerSettings(){ ReferenceLoopHandling = ReferenceLoopHandling.Error });
La funzione, in questo caso, prende come primo parametro l’**oggetto corrente** (ma potrebbe benissimo essere un oggetto istanziato di una qualsiasi nostra classe), il tipo di **formattazione** (indentata, più leggibile) e un parametro di **gestione dei loop** (in questo caso gli si sta dicendo di lanciare una eccezione nel momento in cui, durante la serializzazione, incontra un loop tra i parametri/sotto oggetti).
E’ necessario indicare però un paio di accorgimenti da applicare ai **parametri** della classe da serializzare.
* Per gli array mettere sempre la proprietà \[JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace)\] per evitare che aggiunga gli elementi a quelli esistenti, così facendo li ricrea come se fossero vuoti
* Per non serializzare una proprietà usare sull’attributo \[JsonIgnore\]
Come deserializzare con Newtonsoft.Json
---------------------------------------
Nella libreria è presente la funzione contraria JsonConvert.DeserializeObject ma purtroppo non ritorna l’oggetto istanziato. La funzione da usare invece è JsonSerializer().Populate che **ritorna** esattamente l’**oggetto istanziato** e inizializzato, in questo modo:
new JsonSerializer().Populate(new JsonTextReader(new System.IO.StringReader(json)), this); }
La funzione come primo parametro prende la stringa serializzata dalla funzione precedente e come secondo parametro l’oggetto da ritornare (in questo caso riempiamo l’oggetto corrente, ma potrebbe benissimo essere una istanza nuova di una classe specifica).
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[0Likes](https://www.crearevideogiochi.it/serializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/serializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fserializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility%2F)
Login
---
# Mettere in pausa il PlayMode di Unity con un unico tasto - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Mettere in pausa il PlayMode di Unity con un unico tasto
========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
20 Agosto 2024
Quando si avvia il **PlayMode** di Unity gli unici due modi per metterlo in **pausa** sono:
* Utilizzare il **pulsante** di pausa nella barra degli strumenti
* Utilizzare la **combinazione** di tasti “Ctrl + Shift + P” (in Windows)
Purtroppo però queste due **soluzioni** non sono così semplici da eseguire in quanto la prima necessita l’utilizzo del mouse mentre la seconda di due mani. Entrambe dunque fanno in modo di dover lasciare il controller di gioco (gamepad) e quindi **fermare** l’azione di gioco. Purtroppo non è possibile nemmeno cambiare la combinazione di tasti predefinita in quanto Unity non ha un editor degli shortcut.
Se volessimo quindi utilizzare **un solo tasto** per mettere in pausa PlayMode, l’unico modo è quello di utilizzare il software gratuito **AutoHotkey**, nel modo seguente:
* Scaricare ed installare [AutoHotkey](https://www.autohotkey.com/)
* Eseguire il software e creare un nuovo script vuoto (prima opzione) indicando un nome (es: UnityPausePlayMode)
* Editare il file .ahk generato dal software con un editor di testo (es: Notepad)
* Inserire la riga seguente (assicurandosi che sia l’unica presente):
* F12::^+p
* Salvare ed eseguire il file .ahk facendo doppio clic su di esso
A questo punto avremo rimappato la combinazione di tasti di default di Unity “Ctrl + Shift + P” con il tasto F12.
Durante il PlayMode ora, premendo il tasto F12 sulla tastiera, metteremo in pausa l’esecuzione dell’applicativo.
E’ possibile utilizzare qualsiasi tasto, [qui](https://www.autohotkey.com/docs/v2/)
trovate la documentazione per la scrittura degli script di AutoHotKey.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Eseguire la vibrazione del gamepad in un progetto…](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
* [\
\
Riconoscere a colpo d'occhio quando si è in Editmode…](https://www.crearevideogiochi.it/riconoscere-a-colpo-docchio-quando-si-e-in-editmode-o-in-playmode-di-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fmettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto%2F)
Login
---
# Come risolvere l'errore "Failed to present D3D11 swapchain due to device reset/removed" in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore “Failed to present D3D11 swapchain due to device reset/removed” in Unity
================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
8 Settembre 2024
Durante lo sviluppo di progetti in **Unity** può capitare di incorrere nell’errore “**Failed to present D3D11 swapchain** due to device reset/removed” che di punto in bianco blocca l’**editor** e lo chiude dopo pochi secondi (spesso è anche difficile leggere l’errore). Questo tipo di inconveniente sembra legato al sovraccarico del lavoro della **GPU** che chiede quindi un reset.

Di seguito delle possibili soluzioni al problema, dalla più funzionale (in base a ricerche in rete) fino alla più banale:
* Installare driver aggiornati della scheda video (il problema sembra accadere soprattutto per gpu NVIDIA)
* Eliminare la cartella \\Library del progetto (il riavvio del progetto sarà più laborioso in quanto Unity dovrà riscrivere la cache del componenti)
* Impostare la scheda grafica di default di Unity in Windows (attraverso il menu Settings > System > Display > Graphic Settings > Unity > Opzioni) impostando quella definita in “High Performance”
* Escludere il processo Unity.exe dal proprio antivirus
* Verficare che il file D3Dcompiler\_47.dll file sia presente nella cartella “C:\\Program Files\\Unity\\Hub\\Editor\\\[Unity version\]\\Editor\\Data\\Tools” oppure “C:\\Program Files\\Unity\\Hub\\Editor\\\[Unity version\]\\Editor”
* Impostare i parametri TDRDelay e TDRdiDelay nel registro ([qui una guida utile](https://helpx.adobe.com/substance-3d-painter/technical-support/technical-issues/gpu-issues/gpu-drivers-crash-with-long-computations-tdr-crash.html)
)
* Impostare nel QUality Setting dell’editor l’opzione LOW e riavviare il progetto
* Disabilitare la scheda grafica integrata
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [ in Windows")\
\
Come abilitare la vibrazione sul XBox Gamepad…](https://www.crearevideogiochi.it/come-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-failed-to-present-d3d11-swapchain-due-to-device-reset-removed-in-unity%2F)
Login
---
# Evitare eventi di doppie collisioni tra padre e figli in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Evitare eventi di doppie collisioni tra padre e figli in Unity
==============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Settembre 2024
In Unity, quando un oggetto padre ha dei figli con dei **collider** associati, è normale che la funzione **OnCollisionEnter** del padre riceva gli eventi di collisione generati dai collider dei figli. Questo può generare problematiche di **rilevamento** delle collisioni, conteggiando collisioni doppie, quando si vuole fare in modo che solo i collider del padre generino eventi.
Uno dei metodi più semplice per evitare questo inconveniente è quello, all’interno del metodo OnCollisionEnter, di verificare se il collider che ha generato l’evento appartiene effettivamente al GameObject del **padre** oppure a uno dei **figli**, nel modo seguente:
void OnCollisionEnter(Collision collision)
{
// Controlla se il collider appartiene al GameObject padre
if (collision.gameObject.transform == transform)
{
// Esegue il codice relativo alla collisione del padre
Debug.Log("Collisione rilevata dal padre.");
Death();
}
else
{
// Ignora le collisioni dei figli
Debug.Log("Collisione rilevata da un figlio, ignorata.");
}
}
Per un approfondimento sul tema si consiglia di consultare [questo articolo](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
.
Potrebbe interessarti anche:
----------------------------
* [\
\
Come contribuiscono i Collider tra padre e figli…](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
* [\
\
Perchè usare i Layer invece che i tag nel sistema di…](https://www.crearevideogiochi.it/perche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Serializzare oggetti in Unity con Newtonsoft.Json -…](https://www.crearevideogiochi.it/serializzare-oggetti-in-unity-con-newtonsoft-json-alternativa-a-jsonutility/)
[0Likes](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fevitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity%2F)
Login
---
# Evitare problemi di Scattering dovuti alla distanza dall'origine in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Evitare problemi di Scattering dovuti alla distanza dall’origine in Unity
=========================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
15 Settembre 2024
In Unity, quando si crea un livello in cui il giocatore si muove continuamente in una data direzione, uno dei problemi principali da considerare è la **precisione** a virgola mobile, che può diventare un problema con oggetti molto distanti dal punto di origine (coordinate 0,0,0) conosciuto con il nome di “floating-point precision issues”.
Unity utilizza un sistema di coordinate in virgola mobile (**floating-point**) a 32 bit, che ha una precisione **limitata**. Man mano che ci si allontana dall’origine, la precisione delle coordinate diminuisce, il che può causare lo “**scattering**” in una o più forme delle seguenti:
1. **Tremolio o jitter degli oggetti**: Gli oggetti della scena possono iniziare a tremare o a muoversi in modo confuso, specialmente quelli che statici o in posizioni fisse.
2. **Artefatti di rendering**: Le geometrie degli oggetti possono iniziare a distorcersi o apparire con bordi frastagliati.
3. **Problemi di z-fighting**: Le superfici che si trovano molto vicine tra loro possono sovrapporsi e iniziare a “combattere” per essere renderizzate, causando un effetto di sfarfallio o intermittenza visiva.
4. **Movimenti scattosi (stuttering)**: Gli oggetti in movimento (incluso il giocatore) possono apparire scattosi, con movimenti non fluidi a causa delle imprecisioni nelle coordinate di posizione.
5. **Errori di collisione**: La fisica e il sistema di collisioni possono iniziare a fallire o comportarsi in modo imprevedibile, con oggetti che penetrano o rimbalzano in modo errato.
6. **Ombre sfarfallanti o distorte**: Le ombre proiettate dagli oggetti possono iniziare a sfarfallare o diventare meno precise, con bordi irregolari e cambiamenti improvvisi.
7. **Problemi di illuminazione**: L’illuminazione globale o locale può diventare imprecisa, con luci che influenzano oggetti in modo irregolare o incoerente, causando ombre e riflessi inaspettati.
8. **Distorsione delle animazioni**: Le animazioni possono subire distorsioni o apparire “rotte” a causa dell’imprecisione delle coordinate delle ossa o dei modelli scheletrici.
9. **Problemi con particelle**: Gli effetti particellari possono cominciare a comportarsi in modo imprevedibile, con particelle che non seguono il loro percorso corretto o che si disperdono in modo anomalo.
10. **Glitch grafici nelle texture**: Le texture applicate agli oggetti possono apparire mal allineate o distorte quando gli oggetti sono lontani dall’origine, a causa di errori nel mapping delle coordinate UV.
Per evitare questi problemi si possono prendere in considerazione alcune soluzioni:
* **Distanza massima consigliata**: Mantenere il giocatore entro 10.000 unità dall’origine. Oltre questo limite di potrebbero cominciare a vedere delle imprecisioni.
* **Floating origin**: Una tecnica comune per evitare problemi è il “floating origin”, in cui si sposta periodicamente il mondo di gioco verso l’origine, in modo che il giocatore resti sempre vicino alle coordinate (0,0,0) anche se si sta muovendo lontano nel mondo di gioco. In questo caso, gli oggetti attorno al giocatore vengono traslati mentre il giocatore stesso rimane “fermo” rispetto all’origine.
* **Segmentazione del livello**: Invece di avere un unico lungo livello continuo, si può segmentare il livello in sezioni (anche detti “chunk”) che vengono caricati e scaricati dinamicamente mentre il giocatore si muove in avanti, riducendo la quantità di dati da gestire in una volta.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Come evitare che AudioClip identici riprodotti nello…](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
[0Likes](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fevitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity%2F)
Login
---
# Quali sono i migliori asset Unity per videogiochi del 2024 presenti sullo store? - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Quali sono i migliori asset Unity per videogiochi del 2024 presenti sullo store?
================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
22 Maggio 2024
Lo **Unity Asset Store** è senza dubbio il punto di riferimento per tutti gli sviluppatori indie, e non solo, di **videogiochi**. Contiene una moltitudine di asset (script ma anche componenti 2D e 3D) pronti all’uso, alcuni **gratuiti**, altri dal costo davvero modico per quello che offrono in termini di semplicità, facilità d’uso e risoluzioni di problematiche specifiche.
Di seguito una lista dei **migliori**, e più utili, **asset** presenti sullo store di Unity.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/#)
Corgi Engine – Motore grafico per platformer 2D e 2.5D
------------------------------------------------------

[CORGI ENGINE – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftemplates%2Fsystems%2Fcorgi-engine-2d-2-5d-platformer-26617)
Beautiful Sky Pack 02 – Skybox HD in alta risoluzione disegnati a mano
----------------------------------------------------------------------

[BEAUTIFUL SKY PACK – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2F2d%2Ftextures-materials%2Fsky%2Fbeautiful-sky-pack02-253864)
Artistic: Tilt Shift – Effetto miniatura tilt-shift per post processing
-----------------------------------------------------------------------

[ARTISTIC TILT-SHIFT – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Ffullscreen-camera-effects%2Fartistic-tilt-shift-265465)
Amplify Shader Editor – Miglior editor visuale per shader graph basato su nodi
------------------------------------------------------------------------------

[Amplify Shader Editor – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fvisual-scripting%2Famplify-shader-editor-68570)
Bakery GPU Lightmapper – Potente sistema di baking delle luci
-------------------------------------------------------------

[BAKERY – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Flevel-design%2Fbakery-gpu-lightmapper-122218)
Beautify 3 – Sistema di Post Processing potente e modulare
----------------------------------------------------------

[BEAUTIFY 3 – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Ffullscreen-camera-effects%2Fbeautify-3-advanced-post-processing-233073)
RealToon – Toon shader per progetti anime
-----------------------------------------

[REALTOON – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Frealtoon-pro-anime-toon-shader-65518)
Text Animator – Animazione di testi TextMeshPRO
-----------------------------------------------

[TEXT ANIMATOR – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Ftext-animator-for-unity-254677)
Obfuscator Pro – Cripta codice compilato per evitare furti
----------------------------------------------------------

[OBFUSCATOR PRO – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fobfuscator-pro-89589)
Potrebbe interessarti anche:
----------------------------
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fquali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store%2F)
Login
---
# Caricare da un .arr le icone per le notifiche Android in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Caricare da un .arr le icone per le notifiche Android in Unity
==============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
27 Febbraio 2026
Quando si sviluppa una app per Android può essere necessario includere anche funzionalità di **notifica**.
Unity fornisce un asset proprietario per la gestione della notifiche su **Android** e iOS e anche un manager unificato, più semplice da usare.
Qui: [https://docs.unity3d.com/Packages/com.unity.mobile.notifications@2.4/manual/index.html](https://docs.unity3d.com/Packages/com.unity.mobile.notifications@2.4/manual/index.html)
Nello specifico l’invio di una notifica al sistema Android prevede l’assegnazione di due icone, nel modo seguente:
var androidNotification = (Unity.Notifications.Android.AndroidNotification)notification;
androidNotification.SmallIcon = this.AndroidSmallIcon;
androidNotification.LargeIcon = this.AndroidLargeIcon;
androidNotification.FireTime = new NotificationDateTimeSchedule(time).FireTime;
Unity.Notifications.Android.AndroidNotificationCenter.SendNotification(androidNotification, this.AndroidChannel);
Tali icone, nelle ultime versione del pacchetto, devono essere contenute in un file .aar ([seguire la guida qui](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
).
E’ però bene precisare che, se la **LargeIcon** può essere una semplice icona PNG quadrata, la **SmallIcon** deve necessariamente essere una icona bianco/nero ed avere lo sfondo trasparente.
Potrebbe interessarti anche:
----------------------------
* [\
\
Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Creare un archivio di risorse grafiche .aar per un…](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/caricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcaricare-da-un-arr-le-icone-per-le-notifiche-android-in-unity%2F)
Login
---
# Creare screenshot pronti per la pubblicazione sui social networks in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Creare screenshot pronti per la pubblicazione sui social networks in Unity
==========================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
17 Settembre 2024
Quando si lavora ad un progetto in Unity spesso questo ha la necessità di essere mostrato ad un pubblico ampio e dislocato su diversi **social networks** attraverso immagini e **screenshot** di gioco. Purtroppo ogni social ha regole ben precise di pubblicazione e soprattutto **aspect ratio** differenti (si pensi ai post quadrati di Instagram, quelli verticali di TikTok, etc).
Se scattare uno screenshot in Unity è relativamente semplice, il problema si pone successivamente quando si deve **pubblicarlo** sui social networks. Questo implica un ulteriore e noioso passaggio attraverso **software** di editing (Photoshop, Affinity, Paint, etc) con conseguente perdita di tempo e possibilità di errore.
In nostro aiuto viene **Social Network Screenshot Creator**, disponibile sull’Asset Store di Unity, che permette di realizzare in un solo scatto i diversi formati di screenshot per i social networks, pronti per essere pubblicati senza editing.
Al momento i social supportati sono i seguenti:
* Instagram
* Facebook
* LinkedIn
* TikTok
* X/Twitter
* Youtube
[DOWNLOAD ASSET STORE](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fslug%2F295455)
[DOWNLOAD ITCH.IO](https://desdinovadev.itch.io/social-network-screenshot-creator)
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
[0Likes](https://www.crearevideogiochi.it/creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/creare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcreare-screenshot-pronti-per-la-pubblicazione-sui-social-networks-in-unity%2F)
Login
---
# Perchè usare i Layer invece che i tag nel sistema di collisioni di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/perche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/perche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/perche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Perchè usare i Layer invece che i tag nel sistema di collisioni di Unity
========================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
4 Gennaio 2023
Il **sistema di collisioni** in Unity è utilizzato per determinare quando due oggetti o più oggetti entrano in collisione e come gestire queste collisioni. Un modo comune per gestire le collisioni è utilizzare il metodo `OnCollisionEnter` o `OnTriggerEnter`, che viene chiamato quando due oggetti entrano in collisione, basato sui **collider** degli oggetti. All’interno di questi metodi, è possibile verificare se gli oggetti in collisione hanno un determinato tag utilizzando il metodo `CompareTag`.
Utilizzare il metodo `CompareTag` per gestire le collisioni ha però alcuni **svantaggi**. Innanzitutto, il metodo `CompareTag` è basato sui tag degli oggetti, che sono **semplici stringhe**. Ciò significa che è facile commettere errori di battitura o utilizzare tag non corretti, il che può portare a comportamenti inattesi o bug. Inoltre, l’utilizzo dei tag per gestire le collisioni può diventare ingombrante quando si lavora con molti oggetti e quindi con una lista di molti tag. Ciò può rendere difficile il **debug** e la manutenzione del codice.
Un modo migliore per gestire le collisioni è quello di utilizzare i **layer** di Unity. I Layer sono un sistema di **etichettatura** degli oggetti che permette di assegnare a ciascun oggetto un layer di “comportamento” specifico. È possibile poi configurare le regole di collisione per ogni layer, specificando quali layer devono entrare in collisione tra loro (attraverso il menu Physics nelle impostazioni di progetto). Ciò rende più semplice gestire le collisioni in modo organizzato e mantenere il codice più pulito, oltre che ottimizzato. Inoltre, i Layer sono più flessibili dei tag, poiché è possibile assegnare a un oggetto **più di un layer** alla volta (in realtà lo si può fare a livello di codice, non di interfaccia, oppure con un espediente padre-figlio). Ciò significa che è possibile creare **combinazioni** di layer per gestire le collisioni in modo ancora più preciso.
Di seguito un esempio di utilizzo di layer (da notare l’uso della funzione LayerMask.NameToLayer)
private void OnCollisionEnter(Collision collision)
{
// Controlla se il layer dell'oggetto in collisione è il layer "Nemico"
if (collision.gameObject.layer == LayerMask.NameToLayer("Nemico"))
{
// Gestisci la collisione con l'oggetto nemico
EnemyCollision();
}
else if (collision.gameObject.layer == LayerMask.NameToLayer("Proiettile"))
{
// Gestisci la collisione con uno sparo
BulletCollision();
}
}
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come contribuiscono i Collider tra padre e figli…](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
* [\
\
Evitare eventi di doppie collisioni tra padre e…](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
[0Likes](https://www.crearevideogiochi.it/perche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/perche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fperche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity%2F)
Login
---
# Subreddit di Reddit che dovresti seguire se sei uno sviluppatore di videogiochi indie - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Subreddit di Reddit che dovresti seguire se sei uno sviluppatore di videogiochi indie
=====================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
19 Settembre 2024
Senza dubbio **Reddit** non è l’aggregatore social più utilizzato in Italia (complice anche essere molto famoso negli Stati Uniti e quindi essere pressoché in inglese) ma è comunque una fonte inesauribile di **informazioni**, **idee** e **consigli** se gli si vuole dare una possibilità.
Esistono dei **subreddit** (sotto sezioni del social che iniziano con r/) che sono una vera fonte di ispirazione per chi sviluppa **videogiochi indie** e vuole ottenere visibilità e consigli sul proprio **progetto**.
Di seguito una lista aggiornata delle più interessanti subreddit sul gamedev:
* [r/indiegamedevforum/](https://www.reddit.com/r/indiegamedevforum/)
* [r/gamedevscreens/](https://www.reddit.com/r/gamedevscreens/)
* [r/IndieGameDevs/](https://www.reddit.com/r/IndieGameDevs/)
* [r/gamedev/](https://www.reddit.com/r/gamedev/)
* [r/IndieDev/](https://www.reddit.com/r/IndieDev/)
* [r/indiegames/](https://www.reddit.com/r/indiegames/)
* [r/IndieGaming/](https://www.reddit.com/r/IndieGaming/)
* [r/indiexpo/](https://www.reddit.com/r/indiexpo/)
* [r/SoloDevelopment/](https://www.reddit.com/r/SoloDevelopment/)
* [r/ScreenshotSaturday/](https://www.reddit.com/r/ScreenshotSaturday/)
* [r/playtesters/](https://www.reddit.com/r/playtesters/)
(possibilità di chiedere di testare il proprio prototipo/demo)
* [r/playmygame/](https://www.reddit.com/r/playmygame/)
(possibilità di chiedere di testare il proprio gioco)
* [r/freegames/](https://www.reddit.com/r/freegames/)
(lista di giochi indie gratuiti)
* [r/Unity3D/](https://www.reddit.com/r/Unity3D/)
(canale ufficiale per sviluppatori Unity)
* [r/unity\_tutorials/](https://www.reddit.com/r/unity_tutorials/)
(guide ed esempi sull’uso di Unity)
* [r/DestroyMyGame/](https://www.reddit.com/r/DestroyMyGame/)
(è possibile pubblicare screen e video del proprio gioco e ricevere critiche costruttive)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
9 canali Youtube che devi seguire se sei uno…](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
[0Likes](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/subreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fsubreddit-di-reddit-che-dovresti-seguire-se-sei-uno-sviluppatore-di-videogiochi-indie%2F)
Login
---
# Come contribuiscono i Collider tra padre e figli agli eventi di collisione in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come contribuiscono i Collider tra padre e figli agli eventi di collisione in Unity
===================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
29 Agosto 2024
Una delle situazioni più difficili da gestire in **Unity** è quando si ha un oggetto composto da diversi **figli** i quali hanno **colliders** e/o **rigidbody** associati. In tal caso è difficile monitorare quale collider ha generato gli eventi oppure se più collider concorrono a farlo.
Va detto subito: i collider dei figli di un oggetto con anch’esso un collider NON contribuiscono direttamente all’invocazione di OnCollisionEnter e gli altri eventi di collisione sull’oggetto padre. Ci sono però alcune particolarità da tenere in considerazione:
RigidBody sull’oggetto padre:
* Se un Rigidbody è presente sull’oggetto padre, e i collider sono distribuiti tra il padre e i figli, tutti i collider saranno considerati come un unico corpo rigido.
* In questo caso, qualsiasi collisione che coinvolge uno dei collider (sia del padre che dei figli) invoca tutti gli eventi **OnCollisonEnter**, **OnCollisionStay** e **OnCollisionExit** sugli script collegati al Rigidbody, che tipicamente è presente sul padre.
1. Rigidbody sui figli:
* Se i figli hanno un Rigidbody proprio, essi saranno trattati come entità separate. Le collisioni sui figli invocano gli eventi SOLO sugli script presenti su quei figli specifici.
* Il Rigidbody sul padre non riceverà gli eventi di collisione dei figli con un proprio Rigidbody.
2. Nessun Rigidbody presente ma solo Collider:
* Se né il padre né i figli hanno un Rigidbody allora i collider agiranno come statici. In tal caso gli eventi di collisione non saranno MAI invocati a meno che l’altro oggetto nella collisione non abbia un Rigidbody.
A [questo link](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/)
trovate un nostro approfondimento su come evitare eventi di doppie collisioni tra padre e figli in Unity.
Potrebbe interessarti anche:
----------------------------
* [\
\
Evitare eventi di doppie collisioni tra padre e…](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/)
* [\
\
Perchè usare i Layer invece che i tag nel sistema di…](https://www.crearevideogiochi.it/perche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Calcolare le proprietà di una camera ortogonale di…](https://www.crearevideogiochi.it/calcolare-le-proprieta-di-una-camera-ortogonale-di-unity-affinche-visualizzi-sempre-specifici-oggetti-in-scena/)
[0Likes](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity%2F)
Login
---
# Risolvere l'errore "I pacchetti del Negozio e quelli di Devcomp corrispondono" durante la pubblicazione di Steam - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
Risolvere l’errore “I pacchetti del Negozio e quelli di Devcomp corrispondono” durante la pubblicazione di Steam
================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
23 Novembre 2025
La **pubblicazione** di un gioco sulla piattaforma **Steam** può essere una procedura molto complessa in quanto contempla la pubblicazioni di build e depots. Uno degli errori più comuni è la non convalida del punto “I pacchetti del Negozio e quelli di Devcomp corrispondono” (in inglese “Store and Devcomp packages match”) nella **lista** di controllo della pubbblicazione.
Per risolvere questo problema riportiamo una lista di **verifiche** che è possibile attuare.
Verifica del pacchetto principale
---------------------------------
* Accedere ad “Amministrazione dell’applicazione”
* Cliccare sul proprio pacchetto presente in “Pacchetti del Negozio, prezzi e date di rilascio”
* In “Depot inclusi” aggiungere il depot principale della propria applicazione
* Andare nella sezione “Pubblica” principale e pubblicare le modifiche pendenti
Verifica dei pacchetti
----------------------
* Accedere ad “Amministrazione di Steamworks”
* Cliccare “Tutti i pacchetti, DLC, demo e strumenti associati”
* Nella sezione “Pacchetti promozionali o per uso speciale” cliccare su entrambi i pacchetti (Beta Testing e Developer Devcomp).
* Per ciascun pacchetto aggiungere il Depot principale. eventualmente verificare anche eliminando temporaneamente il depot e riaggiungendolo
* Andare nella sezione “Pubblica” principale e pubblicare le modifiche pendenti
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Pubblicare una build Unity tramite SteamPipeGUI di…](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Frisolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam%2F)
Login
---
# Risoluzione di errori Archivi - Pagina 2 di 2 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/page/2/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/page/2/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/page/2/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Risoluzione di errori
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “an error occured running the unity content on this page. see your browser javascript console for more info” in Unity per WebGL](https://www.crearevideogiochi.it/come-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl/)
La compilazione per build in WebGL di Unity è oggettivamente una delle situazioni più delicate in quanto il supporto a certe funzionalità, script, shader o implementazioni non è supportata o…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore ‘Building – Failed to write file: sharedassets0.assets” durante la compilazione di Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity/)
Purtroppo quello indicato è uno degli errori di Unity non documentati e anche poco "parlanti" a livello di log. Questo errore sembra essere generato da una referenza interna perduta che…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-building-failed-to-write-file-sharedassets0-assets-durante-la-compilazione-di-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “Failed to load window layout” in Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/)
In certe circostanze può capitare di non riuscire più ad aprire un progetto Unity in quanto viene generato un errore di “caricamento del layout della schermata” dell’editor del softwar
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-failed-to-load-window-layout-in-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “TLS Allocator ALLOC\_TEMP\_THREAD, underlying allocator ALLOC\_TEMP\_THREAD has unfreed allocations” in Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity/)
alcune circostanze può capitare di eseguire dei comportamenti che attraversano tutta la gerarchia della scena, solitamente per errore (in quanto è un procedura assolutamente da evitare).
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-tls-allocator-alloc_temp_thread-underlying-allocator-alloc_temp_thread-has-unfreed-allocations-in-unity/)
[](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/page/2/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-an-error-occured-running-the-unity-content-on-this-page-see-your-browser-javascript-console-for-more-info-in-unity-per-webgl%2F)
Login
---
# Come evitare che AudioClip identici riprodotti nello stesso istante distorcano il volume finale in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come evitare che AudioClip identici riprodotti nello stesso istante distorcano il volume finale in Unity
========================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Giugno 2022
Durante lo sviluppo di un applicativo o un videogioco in Unity può capitare di incorrere in un classico problema dovuto alle **forme d’onda** dei suoni stessi: eseguendo due o più suoni identici nello stesso istante si ottiene un fastidioso effetto di **aumento** del volume incontrollato. C’è da dire che questo effetto è del tutto corretto in ambito sonoro anche se ovviamente, come impatto sulla giocabilità ed esperienza utente, crea non pochi problemi.
Per risolvere, o comunque aggirare e mitigare, il problema esistono 4 possibili approcci.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/#)
1\. Non eseguire suoni identici nello stesso istante
----------------------------------------------------
Potrà sembrare la soluzione più ovvia ma per evitare il fastidioso problema è possibile implementare, a livello di struttura/codice, un sistema che eviti la riproduzione dello stesso suono contemporaneamente. Ad esempio è possibile riconoscere se un clip sta già suonando quindi escludere tutti gli altri **identici** che devono essere riprodotti. Oppure è possibile fare in modo che il generatore del suono sia unico e non differente per ogni suono. Infine se si sa per certo quali oggetti riprodurranno lo stesso suono contemporaneamente è possibile **disabilitare** tutte le fonti audio associate lasciandone una soltanto.
2\. Dividere il volume di ciascuno clip per il numero di clip riprodotti
------------------------------------------------------------------------
Riproducendo 4 suoni identici nello stesso istante la forma d’onda risultante risulta 4 volte più ampia e quindi con un **volume** 4 volte più alto. Per questo motivo si può intervenire sul volume di ciascun suono e dividerlo per il numero di clip riprodotti; in questo caso si dovrebbe ridurre ciascun suono di 3/4 del volume.
3\. Aggiungere una variazione alla forma d’onda dei clip riprodotti contemporanei
---------------------------------------------------------------------------------
Se il problema è dato dalla sovrapposizione di forme d’onda identiche, è possibile introdurre una perturbazione/**variazione** delle forma d’onda modificando di poco i valori di **Pitch** e Volume di ogni singolo clip audio. Questo presuppone quindi che il singolo clip sia riprodotto attraverso un AudioSource dedicato, in quanto solo così è possibile definire pitch e volume a livello specifico.
4\. Aggiungere al mixer di riproduzione un effetto di compressione
------------------------------------------------------------------
L’ultima soluzione prevede di operare sul **mixer** associato agli **AudioSource** con lo stesso suono. In questo caso è possibile aggiungere un effetto di compressione (**Compressor**). Il compressore di Unity è di fatto un Limiter che permette di gestire i picchi di volume oltre i 0db.

Conclusioni
-----------
Il consiglio è quello di provare ad implementare le strade possibili e individuare quale è più adatta a risolvere il proprio problema. Non si esclude che tutte le soluzioni proposte possano essere implementare contemporaneamente al fine di ridurre al minimo, se non eliminare, l’indesiderato effetto.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity%2F)
Login
---
# Come sviluppare per Oculus Quest 2 con Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come sviluppare per Oculus Quest 2 con Unity
============================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
Meta (ex Facebook) ha da un paio di anni messo in commercio **Oculus Quest 2**o ssibile interfacciarlo a **Unity** attraverso gli ultimi aggiornamenti di **Oculus Integration Toolkit**. Vediamo quindi i passi per poter configurare un ambiente di sviluppo valido e ben ottimizzato per lo sviluppo di app e giochi per la **realtà virtuale** su Oculus Quest.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/#)
Installare Unity 2020 e Android Studio
--------------------------------------
* Scaricare e installare Unity Hub
* Accedere al menu Install e installare l’ultima versione di Unity disponibile (la 2020)
* Assicurarsi di aver selezionato tra i moduli aggiuntivi anche la voce Android Build Studio e le due sottostanti Android SDK e NDK Tools e OpenJDK

Configurare Unity e l’ambiente di sviluppo
------------------------------------------
* Tramite lo Unity Hub creare un nuovo progetto avendo cura di selezionare l’ultima versione di Unity installata
* Accedere poi al menu File -> Build Settings e cambiare la modalità di compilazione da PC, Mac Linux Standalone in Android avendo cura di cambiare anche la voce Texture Compression in ASTC
* Non avviare il processo di Build per ora
* Accedere al menu Edit -> Project Settings / Player e sotto la cartella Other Settings / Rendering Graphics APIs rimuovere Vulkan
* Alla voce Identification / Override Default Package Name spuntare la casella ed inserire un nome di Package valido, ad esempio com.desdinova.oculusquestdemo
* Accedere ora al menu Window -> Asset Store e ricercare l’asset gratuito Oculus Integration e aggiungelo al progetto importandolo (installarà nel vostro progetto tutti gli asset e gli script necessari per sviluppare un applicativo per Oculus, prendendosi diversi minuti, anche 15/20)
* Potrebbe venir chiesto di abilitare e aggironare alcuni aggiornamenti di plugin OVR, confermando verrà chiesto di riavviare Unity
* Per testare velocemente una scena già impostata accedere al pannello Project -> Oculus -> VR – Scenes e caricare una delel scene presenti di demo

Importare il pacchetto Oculus Integration nel progetto Unity
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
Sbloccare la funzionalità Sviluppatore di Oculus Quest
------------------------------------------------------
* Scaricare e installare la app Oculus App sul proprio dispositivo smartphone
* Associare il proprio visore Oculus Quest 2 attraverso la funzionalità di associazione automatica
* Accedere ad Impostazioni -> Altre Impostazioni -> attivare la voce Modo Sviluppatore
* Se non avete un certificato accedere online a Developer Certificate e creare un proprio certificato valido (solo la prima volta)
[](https://prf.hn/click/camref:1101lmimc/creativeref:1011l62230)
Installare e configurare SideQuest
----------------------------------
* Accedere al sito [SideQuest](https://sidequestvr.com/setup-howto)
e installare l’ultima versione disponibile per Windows
* Assicurarsi di aver acceso e messo fuori dallo standby il dispositivo Oculus Quest 2
* Collegare il dispositivo tramite USB al computer
* Il software SideQuest dovrebbe riconoscerlo in automatico (barra in alto a sinistra)
* Nel menu in alto a destra selezionare l’icona con una cartella e una freccia verso il basso dal nome “Installa APK file from folder on computer”
* A questo punto cercare la vostra build .apk e attendete che venga copiata sul dispositivo (noterete una barra verde sul fondo di Side Quest).
Testare il progetto su Oculus Quest 2
-------------------------------------
* Scollegare dalla USB il visore ed indossatelo
* Accedere allo store interno dell’Oculus Quest avendo cura di filtrare (casellina in alto a destra) per “Non riconosciute” (cioè tutte quelle app non ufficiali).
* Nell’elenco avviare l’applicazione (che riporterà il nome definito nei primi passaggi)
Potrebbe interessarti anche:
----------------------------
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [")\
\
Le esperienze in VR per Meta Quest 3/3S che dovresti…](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/)
* [\
\
Pubblicare una build Unity tramite SteamPipeGUI di…](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[0Likes](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-sviluppare-per-oculus-quest-2-con-unity%2F)
Login
---
# Eseguire la vibrazione del gamepad in un progetto Unity tramite Rewired - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Eseguire la vibrazione del gamepad in un progetto Unity tramite Rewired
=======================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Marzo 2025
Nei giochi moderni il supporto alla **vibrazione** del **gamepad** di giocco (spesso indicata con “Rumble”) è di fondamentale importanza per la **giocabilità** e l’accessibilità. Il giocatore è abituato a sentire tra le proprie mani il **controller** vibrare in diverse situazioni, con più o meno intensità.
Attraverso il potentissimo asset Rewired ([disponibile sull’Asset Store di Unity qui](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Frewired-21676)
) è possibile gestire la vibrazione in modo molto semplice. Vi sono però alcune considerazioni da fare a riguardo:
* Il controller non deve vibrare se si sta usando la tastiera o qualsiasi altro controller
* I controller moderni hanno almeno 2 **motori** (destra/sinistra)
* E’ bene resettare sempre la vibrazione precedente prima di eseguire quella successiva
* E’ possibile impostare livelli di vibrazione differente rispetto al **feedback** da dare al giocatore
* Rewired fornisce un’unica interfaccia al Gamepad e alla sua vibrazione rispetto alle maggiori console in circolazione (Nintendo Switch inclusa, a mezzo plugin dedicato)
Di seguito uno **script** che racchiude tutto quando indicato qui sopra in modo molto semplice in quanto utilizza unicamente 2 parametri: il livello di vibrazione (valore da 0 a 1) e la durata in secondi.
public void SetVibration(float level, float duration)
{
Controller controller = playerInput.controllers.GetLastActiveController();
if (controller != null)
{
if (controller.type == ControllerType.Joystick)
{
playerInput.StopVibration();
try
{
playerInput.SetVibration(0, level, duration);
playerInput.SetVibration(1, level, duration);
}
catch { }
}
}
}
[Download REWIRED (Asset Store)](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Frewired-21676)
In [questo nostro articolo](https://www.crearevideogiochi.it/come-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows/)
è possibile invece trovare la risoluzione ad alcuni dei più comuni problemi di abilitazione della vibrazione sul controller XBox per **Windows**.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [ in Windows")\
\
Come abilitare la vibrazione sul XBox Gamepad…](https://www.crearevideogiochi.it/come-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows/)
[0Likes](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Feseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired%2F)
Login
---
# Lista dei migliori Asset Unity per videogiochi indie del 2022 - Unity Asset Store - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Lista dei migliori Asset Unity per videogiochi indie del 2022 – Unity Asset Store
=================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
13 Agosto 2022
E’ indubbio che lo **Unity Asset Store** sia il coltellino svizzero di tutti i programmatori che utilizzano Unity.
Al suo interno infatti è possibile trovare assets **gratuiti** e a pagamento che coprono qualsiasi necessità, dalla grafica 2D ai modelli 3D, dall’intelligenza artificiale, alla cinematica, dagli effetti grafici e shader al musica, dalle animazioni fino a implementazioni complesse e strutturate.
Parafrasando il detto “è inutile reinventare la ruota”, accedendo allo [Unity Asset Store](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2F)
è però possibile perdersi tra i diversi componenti che offrono le medesime capacità ma poco **documentati**, valutati negativamente oppure non aggiornati.
I migliori giochi del 2022 creati con degli Asset presi dallo Unity Asset Store
Per questo motivo, di seguito una **lista** di componenti fondamentali per lo sviluppo di videogames o applicativi, _indie_ oppure **professionali**, che possono aiutare moltissimo lo sviluppo e incrementare sensibilmente la velocità di sviluppo (o prototipazione).
In questo articolo
[Toggle](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/#)
Final IK – Gestione e controllo di tutta la cinematica inversa (bipedi, quadrupedi e meccanici)
-----------------------------------------------------------------------------------------------

[FINAL IK – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fanimation%2Ffinal-ik-14290)
AVPro – Gestione e ottimizzazione della riproduzione video (desktop, mobile e WebGL)
------------------------------------------------------------------------------------

[AVPRO – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fvideo%2Favpro-video-core-edition-181844)
DOTWeen Pro – Implementazione di animazioni basate su path e sequenze
---------------------------------------------------------------------

[DOTWEEN – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fvisual-scripting%2Fdotween-pro-32416)
Mesh Baker – Combina mesh e materiali per ottimizzare la scena e la renderizzazione dei cicli di batch
------------------------------------------------------------------------------------------------------

[MESH BACKER – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fmodeling%2Fmesh-baker-5017)
Polaris 2021 Low Poly & Mesh Terrain Editor – Creazione di asset di terreni low poly
------------------------------------------------------------------------------------

[POLARIS EDITOR – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fterrain%2Fpolaris-2021-low-poly-mesh-terrain-editor-196648)
Odin Inspector & Serializer – Estensione dell’interfaccia dell’editor per massimizzare lo sviluppo e la gestione
----------------------------------------------------------------------------------------------------------------

[ODIN INSPECTOR – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fodin-inspector-and-serializer-89041)
Dialogue System for Unity – Gestione dei dialoghi attraverso editor ad albero
-----------------------------------------------------------------------------

[DIALOG SYSTEM – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fai%2Fdialogue-system-for-unity-11672)
Ruler 2D: Align, Guides & Grid – Estensione per allineare elementi 2D della UI di Unity
---------------------------------------------------------------------------------------

[RULER 2D – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fruler-2d-align-guides-grid-extension-53951)
Curved World – Shader per curvare qualsiasi superficie e creare infinite runner, effetti “Inception”, scale a spirale, etc
--------------------------------------------------------------------------------------------------------------------------

[CURVED WORLD – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Fcurved-world-2020-173251)
TopDown Engine – Motore di gioco completo del videogames con visuale dall’alto
------------------------------------------------------------------------------

[TOPDOWN ENGINE – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftemplates%2Fsystems%2Ftopdown-engine-89636)
Rewired – Gestione completa di tutte le periferiche di input per PC, Playstation, Xbox e Nintendo Switch
--------------------------------------------------------------------------------------------------------

[REWIRED – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Frewired-21676)
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Flista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store%2F)
Login
---
# Come configurare un progetto Unity per una build Android - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come configurare un progetto Unity per una build Android
========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
24 Marzo 2025
Unity è uno strumento molto potente e permette di creare facilmente **applicazioni** per dispositivi **mobile**.
La configurazione del progetto per build **Android** però potrebbe essere difficoltosa e necessitare di verifiche per la corretta **pubblicazione** su Google Play Store.
Di seguito una lista di passaggi da configurare e verificare per velocizzare la configurazione di un progetto Unity per Android.
In Edit -> Project Settings -> Player -> Publishing Settings:
* Creare un nuovo keystore tramite il Keystore Manager
* Impostare la voce Minify sia per Release che per Debug
In Edit -> Project Settings -> Player -> Other Settings:
* Selezionare il Color Space come Linear (e non Gamma)
* Verificare alla voce Identification il proprio package name (simile a com.nomeorganizzazione.nomeapp, es: com.desdinova.databasecomuniapp).
* Verificare inoltre il numero di versione e il Bundle Versione Code.
Si tratta di un codice univoco per bundle che deve essere costantemente aumentato ogni volta che si pubblica la propria app su Google Play, non possono esserci codici uguali oppure verrà generato un errore durante la pubblicazione sullo store. Tenere dunque traccia di questo codice.
* Verificare il valore di Target Architectures abilitato per ARM64
* Modificare Active Input Handling selezionando solo uno dei due input (non usare l’opzione Both)
In File -> Build Settings -> Adaptive Performance
* Se è installato Adaptive Performance abilitare Android Provider e in automatico Frame Timing Stats
Se non si vuole utilizzare l’Adaptive Performance cliccare Ignore nella schermata che verrà mostrata durante la build.
In File -> Build Settings:
* Attivare l’opzione Build App Bundle (Google Play).
Verrà generato dalla build un file .aab e non un file .apk (nuova estenzione del Google Play)
Nota: Le seguenti indicazioni si riferiscono alla versione 6.000 di Unity
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
* [\
\
Asset e componenti indispensabili per lo sviluppo di…](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[0Likes](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-configurare-un-progetto-unity-per-una-build-android%2F)
Login
---
# Inviare notifiche push per iOS e Android in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Inviare notifiche push per iOS e Android in Unity
=================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
19 Marzo 2026
Una delle funzionalità che non possono mancare in una app realizzata in **Unity**, che sia un videogioco oppure una app non-game, è quella dell’**invio** di **notifiche** all’utente. L’uso delle notifiche aiuta nelle comunicazioni e negli eventi schedulati.
In nostro soccorso arriva il **Mobile Notification Package** ufficiale di Unity ([consultabile qui](https://docs.unity3d.com/Packages/com.unity.mobile.notifications@2.4/manual/index.html)
) e installabile tramite Asset Manager. Questo pacchetto è composto da 3 parti: la gestione delle notifiche su **Android**, la gestione delle notifiche su **iOS** e la gestione delle notifiche in modo **unificato** (una sorta di framework trasversale tra Android e iOS che facilita la programmazione delle notifiche.
Il flusso del processo di notifica si sviluppa nei seguenti passaggi:
* Inizializzazione del centro di notifiche
* Richiesta del permesso di invio notifiche al sistema operativo
* Messa in ascolto delle notifiche ricevute (con app aperta)
* Messa in ascolto delle notifiche ricevute (con app chiusa)
* Schedulazione delle notifiche
* Cancellazione delle notifiche
E’ bene specificare che ci sono delle differenze sostanziali tra Android e iOS come ad esempio i parametri di inizializzazione (il channel così come le icone delle notifiche) che è comunque necessario differenziare in fase di progettazione.
Il consiglio è di analizzare anche la voce Project Settings -> Notification che riporta alcune funzionalità specifiche per piattaforma.
Di seguito una utile classe da istanziare in scena che permette la gestione di tutto il processo di notifica e che sfrutta in gran parte il semplice sistema unificato di Unity.
using System;
using System.Collections;
using Unity.Notifications;
using UnityEngine;
public class AppNotificationsManager : MonoBehaviour
{
private int lastNotificationResponded;
[Header("Android Notification")]
public string AndroidChannel = "default";
public string AndroidChannelName = "Notifications";
public string AndroidChannelDescription = "Main notifications";
public string AndroidIconSmall = "app_icon_small";
public string AndroidIconLarge = "app_icon_large";
public Color AndroidIconColor = Color.white;
public event Action OnNotificationClicked;
public event Action OnNotificationReceived;
public NotificationsPermissionRequest Permission { get; private set; }
private static AppNotificationsManager _instance;
public static AppNotificationsManager SharedInstance
{
get
{
if (_instance == null)
{
_instance = GameObject.FindFirstObjectByType();
}
return _instance;
}
}
void Awake()
{
//Inizializza il canale di notifica su Android (su iOS non è necessario)
var args = NotificationCenterArgs.Default;
args.AndroidChannelId = this.AndroidChannel;
args.AndroidChannelName = this.AndroidChannelName;
args.AndroidChannelDescription = this.AndroidChannelDescription;
NotificationCenter.Initialize(args);
// Remove delivered notifications
NotificationCenter.CancelAllDeliveredNotifications();
//Notification listener
NotificationCenter.OnNotificationReceived += NotificationReceived;
}
IEnumerator Start()
{
//Permessi
Permission = NotificationCenter.RequestPermission();
if (Permission.Status == NotificationsPermissionStatus.RequestPending)
yield return Permission;
}
private void OnDestroy()
{
NotificationCenter.OnNotificationReceived -= NotificationReceived;
}
void NotificationReceived(Notification notification)
{
OnNotificationReceived?.Invoke(notification);
}
public int ScheduleNotification(string title, string text, string data, DateTime time)
{
return ScheduleNotification(title, text, data, 0, false, time);
}
public int ScheduleNotification(string title, string text, string data, int badge, bool showInForeground, DateTime time)
{
var notification = new Notification
{
Title = title,
Text = text,
Data = data,
ShowInForeground = showInForeground
};
if (badge > 0) notification.Badge = badge;
#if UNITY_ANDROID
var androidNotification = (Unity.Notifications.Android.AndroidNotification)notification;
if (!string.IsNullOrEmpty(this.AndroidIconSmall)) androidNotification.SmallIcon = this.AndroidIconSmall;
if (!string.IsNullOrEmpty(this.AndroidIconLarge)) androidNotification.LargeIcon = this.AndroidIconLarge;
androidNotification.FireTime = new NotificationDateTimeSchedule(time).FireTime;
androidNotification.Color = this.AndroidIconColor;
return Unity.Notifications.Android.AndroidNotificationCenter.SendNotification(androidNotification, this.AndroidChannel);
#else
return NotificationCenter.ScheduleNotification(notification, new NotificationDateTimeSchedule(time));
#endif
}
public void CancellAllNotifications()
{
NotificationCenter.CancelAllScheduledNotifications();
NotificationCenter.CancelAllDeliveredNotifications();
NotificationCenter.ClearBadge();
}
public void CancelNotification(int id)
{
NotificationCenter.CancelScheduledNotification(id);
NotificationCenter.CancelDeliveredNotification(id);
}
public void OpenNotificationSettings()
{
NotificationCenter.OpenNotificationSettings();
}
IEnumerator CheckForNotification()
{
var query = NotificationCenter.QueryLastRespondedNotification();
yield return query;
if (query.State == QueryLastRespondedNotificationState.HaveRespondedNotification)
{
if (lastNotificationResponded != query.Notification.Identifier.Value)
{
lastNotificationResponded = query.Notification.Identifier.Value;
OnNotificationClicked?.Invoke(query.Notification);
}
}
}
void OnApplicationFocus(bool hasFocus)
{
if (hasFocus)
{
StopCoroutine(CheckForNotification());
StartCoroutine(CheckForNotification());
}
}
void OnApplicationPause(bool paused)
{
if (!paused)
{
StopCoroutine(CheckForNotification());
StartCoroutine(CheckForNotification());
}
}
}
Una volta inizializzato il componente è possibile eseguire la funzione **ScheduleNotification** per **programmare** ad una certa data/orario l’invio della notifica dell’app:
AppNotificationsManager.SharedInstance.ScheduleNotification("Nome App","Testo della notifica", "{ eventuali dati della notifica }", DateTime.Now.AddDay(1));
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come contribuiscono i Collider tra padre e figli…](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Likes](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Finviare-notifiche-push-per-ios-e-android-in-unity%2F)
Login
---
# Le migliori librerie gratuite per lo sviluppo di videogiochi multiplayer in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Le migliori librerie gratuite per lo sviluppo di videogiochi multiplayer in Unity
=================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
21 Marzo 2025
Per sviluppare un gioco **multiplayer** con Unity, scegliere la giusta libreria di **networking** è fondamentale.
Esistono diverse soluzioni **gratuite** che offrono funzionalità avanzate per sincronizzare oggetti, gestire connessioni e ottimizzare le prestazioni online.
Di seguito una lista con diverse delle alternative più popolari, ognuna con **vantaggi** specifici a seconda del tipo di gioco che vuoi creare. In questo articolo, analizziamo le caratteristiche principali di ciascuna, aiutandoti a trovare la **soluzione** ideale per il tuo progetto multiplayer in **Unity**.
* **Mirror**: Fork migliorato di UNET, facile da integrare, ideale per giochi con networking server-authoritative. Supporta il networking peer-to-peer e dedicato. Per piccoli progetti.
[Scarica free](https://assetstore.unity.com/packages/tools/network/mirror-129321)
* **FishNet**: Libreria con ottimizzazioni avanzate per il networking, supporta predizione client-side e rollback per migliorare la reattività nei giochi online.
[Scarica free](https://assetstore.unity.com/packages/tools/network/fishnet-networking-evolved-207815)
* **Netcode for GameObjects**: Soluzione ufficiale di Unity per il multiplayer, pensata per giochi con architettura server-client, altamente integrata con Unity e DOTS.
[Scarica free](https://docs-multiplayer.unity3d.com/netcode/current/about/)
* **Photon**: Piattaforma di networking con vari pacchetti (PUN, Fusion, Quantum) adatta a giochi in tempo reale e con lobby scalabili nel cloud.
[Scarica free](https://assetstore.unity.com/packages/tools/network/photon-fusion-267958)
* **Purrnet**: Nuova libreria open-source per il multiplayer in Unity, focalizzata su semplicità ed efficienza, con supporto per architetture client-server.
[Scarica free](https://assetstore.unity.com/packages/tools/network/purrnet-297320)
Potrebbe interessarti anche:
----------------------------
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
* [\
\
Raccolta dei migliori asset di Unity, divisi per anno](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
[0Likes](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fle-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity%2F)
Login
---
# Visualizzare e selezionare oggetti Cast Shadow = Shadow Only nell'editor di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Visualizzare e selezionare oggetti Cast Shadow = Shadow Only nell’editor di Unity
=================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
5 Marzo 2025
Uno dei problemi dell’**editor** di Unity è che gli oggetti di cui abbiamo impostato la proprietà del Renderer **Cast Shadow** uguale a Shadow Only è che non vengono in alcun modo più visualizzati una volta settata. L’unico modo per poterli riselezionare (e dunque spostare o modificare) è quello di trovarli nella gerarchia.
In situazioni dove la scena è molto complessa si rischia spesso di non trovarli più in alcun modo se non ricordandosene il nome.
Per fortuna è possibile, attraverso il namespace Unity.Editor, interagire con gli oggetti e fare in modo di mostrarli nuovamente con possibilità di interazione. Per farlo è necessario creare uno script che traversi tutti gli oggetti in scena e mostri quelli Cast Shadow = Shadow Only. Di seguito lo script.
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using UnityEngine.Rendering;
using UnityEditor.SceneManagement;
[InitializeOnLoad]
public static class ShadowOnlyGizmoEditor
{
static ShadowOnlyGizmoEditor()
{
SceneView.duringSceneGui += OnSceneGUI;
}
private static void OnSceneGUI(SceneView sceneView)
{
// Se siamo nel prefab mode, non disegniamo nulla
if (PrefabStageUtility.GetCurrentPrefabStage() != null) return;
Handles.color = Color.yellow;
foreach (Renderer rend in Object.FindObjectsOfType())
{
if (rend.shadowCastingMode == ShadowCastingMode.ShadowsOnly)
{
//Disegna un wireframe attorno agli oggetti
Handles.DrawWireCube(rend.bounds.center, rend.bounds.size);
//Scrive il nome dell'oggetto
GUIStyle style = new GUIStyle();
style.normal.textColor = Color.yellow;
style.fontSize = 12;
style.fontStyle = FontStyle.Bold;
Handles.Label(rend.bounds.center + Vector3.up * rend.bounds.extents.y, rend.gameObject.name, style);
//Rende l'oggetto selezionabile
if (Handles.Button(rend.bounds.center, Quaternion.identity, 0.5f, 0.5f, Handles.SphereHandleCap))
{
Selection.activeGameObject = rend.gameObject;
}
}
}
}
}
#endif
Si noti nello script l’uso della direttiva di compilazione #if editor che permette di eseguire lo script unicamente quando è utilizzato l’editor di Unity e non in build. Il risultato dovrebbe essere il seguente (notare il punto centrale selezionabile)

Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
[0Likes](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fvisualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity%2F)
Login
---
# Cancellare la cache locale per testare correttamente gli Addressables di Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cancellare-la-cache-locale-per-testare-correttamente-gli-addressables-di-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cancellare-la-cache-locale-per-testare-correttamente-gli-addressables-di-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cancellare-la-cache-locale-per-testare-correttamente-gli-addressables-di-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Cancellare la cache locale per testare correttamente gli Addressables di Unity
==============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
Una delle attività più rognose della gestione degli assets in modalità Addressables è il loro **test locale** in modo corretto e pulito. Quello che genera confusione infatti è senza dubbio la presenza della **cache** locale degli assets una volta caricati alla prima esecuzione del sistema di Addressable. Questo comporta il fatto che i test successi producano delle incomprensioni in quanto si può pensare che gli assets siano stati **caricati** con le ultime modifiche quando invece sono quelli in cache.
Rimozione tramite opzione in Editor
-----------------------------------
In nostro soccorso viene una opzione, da impostare sui singoli gruppi di **Addressables**, che ci permette di cancellare la cache locale ad ogni **richiesta** degli assets in modo che venga avviata nuovamente una richiesta pulita degli assets stessi.
La si trova nel gruppo “Advanced Options” del gruppo di Addressable (non del singolo) alla **voce “Use Asset Bundle Cache**“. Disabilitando l’opzione (attiva di default) verrà disabilitata la cache.

Ovviamente si consiglia di utilizzare questa opzioni unicamente in ambito di **sviluppo**/**test** in quanto verrebbe meno una funzionalità fondamentale dell’Addressable Asset System.
Rimozione tramite script
------------------------
Un alternativa invece è quella di utilizzare una funzione apposita del sistema di Cache, richiamandolo da codice, nel modo seguente:
Caching.ClearCache();
In tal caso si consigli di seguire la guida a [questo link](https://support.unity.com/hc/en-us/articles/207710103-How-do-I-delete-AssetBundles-from-the-cache-)
anche se alcune segnalazione dicono che sia un metodo non privo di problematiche. Consigliamo dunque di usarlo con attenzione o come alternativa.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Il Mixed Mode delle luci di Unity](https://www.crearevideogiochi.it/il-mixed-mode-delle-luci-di-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/cancellare-la-cache-locale-per-testare-correttamente-gli-addressables-di-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cancellare-la-cache-locale-per-testare-correttamente-gli-addressables-di-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcancellare-la-cache-locale-per-testare-correttamente-gli-addressables-di-unity%2F)
Login
---
# Sviluppare una app XR per Meta Quest 3 in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Sviluppare una app XR per Meta Quest 3 in Unity
===============================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
11 Novembre 2024
**Meta Quest 3** non è unicamente un sistema chiuso, ma è un sistema molto aperto che permette molteplici attività tra cui lo **sviluppo** di applicativi tramite **Unity**. Meta ha quindi sviluppato un **framework** che permette di creare applicazioni e giochi in modo facile ed intuitivo sfruttando la potenza dell’**editor** di Unity.
Di seguito i passi per **configurare** un nuovo **progetto** Unity all’utilizzo dei componenti Meta e la creazione di una prima scena di test per verificarne il funzionamento.
_Come attività preliminare deve essere stata installata la app Meta Horizon sul proprio dispositivo mobile ed aver configurato il Quest 3 dalle impostazioni (procedura che Meta consiglia di eseguire alla prima accensione del visore)_.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/#)
Configurare il progetto Unity per Meta Quest 3
----------------------------------------------
* Creare un nuovo progetto Unity avendo cura di scegliere la 3D Built-in Render Pipeline e di aver installato nell’editor tutte le funzionalità per buildare una app Android (il Quest infatti utilizza Android come sistema operativo).
* Avviare il progetto Unity e switchare la piattaforma di sviluppo in Android.
* Installare la “Meta XR All-in-one SDK” installandola dallo store [qui](https://assetstore.unity.com/packages/tools/integration/meta-xr-all-in-one-sdk-269657)
.
* Selezionare dal menu principale di Unity la voce Meta > Tools > Project Setup Tools, dalla finestra avere cura di aver selezionato la tab Android (il robottino) e premere quindi “Fix All”.
* In Edit > Project Settings > XR Plugin Management cliccare “Install XR Plugin Management”.
* Una volta installato, nella tab Android, spuntare la voce Open XR (il progetto verrà riavviato in automatico)
* Collegare il Meta Quest 3 al computer tramite cavo usb ed accenderlo.
* Accedere alla app Meta Horizon sul proprio dispositivo mobile , accedere alla lista dei visori, selezionare il Quest 3, poi Impostazioni del Visore e infine abilitare la Modalità Sviluppatore. Nel visore sarà necessario confermare di volerlo abilitare per il debug via USB.
* Nel visore accedere alle impostazioni (cliccando sulla barra della carica del visore), selezionare Sviluppatore e abilitare le Impostazioni Personalizzate avendo cura che siano abilitate le Notifiche MTP.
* In Unity installare “XR Interaction Toolkit” dal menu Unity Registry del Package Manager.
* A questo punto nel menu GameObject di Unity avremo a disposizione la sottosezione XR con diversi componenti riguardanti la creazione di una scena in Meta Quest 3.
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
Creare la prima scena di test in Meta Quest 3
---------------------------------------------
* Creare una nuova scena.
* Eliminare la Camera di default già presente nella scena.
* Dal menu GameObject > XR selezionare XR Origin (inserirà in scena un nuovo oggetto).
* Impostare la proprietà “Tracking Origin Mode” su Floor.
* Inserire in scena un oggetto (un modello o anche semplicemente un cubo) avendo cura che sia davanti alla camera.
* Accedere a Edit > Project Settings > Player e nel gruppo Other Settings > Active Input Handling e verificare che sia selezionato “Input System Package (New)”.
* Accedere a File > Build Settings > Android ed impostare la voce Texture Compression su ASTC e in Run Device selezionare Meta Quest (se non è presente provare a premere il pulsante Refresh sulla destra, se ancora non disponibile verificare di aver connesso correttamente il visore al pc).
* Nella voce Device avere cura di aver selezionato il proprio Device, in caso eseguire il comando Refresh
* Qualora il proprio dispositivo non compaia nella lista accedere nuovamente alla app Meta Horizon sul proprio dispositivo mobile , accedere alla lista dei visori, selezionare il Quest 3, poi Impostazioni del Visore e infine disabilitare e riabilitare la Modalità Sviluppatore. Nel visore sarà necessario confermare di volerlo abilitare per il debug via USB.
* Eseguire quindi il comando “Build and Run” il quale creerà il file .apk della build e lo lancerà direttamente sul visore Meta Quest 3.
* Potrebbe venire richiesto l’aggiornamento della versione minima di Android SDK, eseguirlo.
* Indossando il visore si osserverà l’oggetto nell’ambiente di default di Unity.
Usare componenti preimpostati di Meta
-------------------------------------
Meta dispone di una libreria di componenti preimpostati da inserire direttamente in scena.
* Rimuovere dalla scena tutti i componenti mantenendo solo Diorectional Light e Global Volume.
* Accedere ai Meta XR Tools che si trovano sotto la barra di menu dell’ìeditor di Unity e selezionare Building Blocks.
* Dalla lista selezionare Grab Interaction e trascinarlo in scena (questo creerà degli elementi)
* Selezionare e trascinare anche Passthrough.
* Ribuildare l’applicativo e lanciarlo sul visore. Sarà possibile interagire con i controller muovendo il cubo così come interagire con l’ambiente circostante in passthrough.

Tipica scena utilizzando Meta Quest SDK
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[0Likes](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fsviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity%2F)
Login
---
# Raccolta 2023 dei migliori Asset di Unity per sviluppare videogames – Unity Asset Store - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Raccolta 2023 dei migliori Asset di Unity per sviluppare videogames – Unity Asset Store
=======================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
8 Febbraio 2023
Non esisterebbe Unity se non esistesse lo [Unity Asset Store](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2F)
, il portale che raccoglie tutte le **estensioni** per l’ambiente di sviluppo stesso. Un **portale** ricco di spunti sia per lo sviluppatore alle prime armi che per il **gamedev** incallito e che conosce bene quanto sia sbagliato utilizzare codice scritto da altri se questo è ben testato, aggiornato e recensito positivamente dalla vasta community di Unity.
Breve introduzione sull’uso dell’Asset Store di Unity
Di seguito una lista aggiornata al **2023** di interessanti **asset** che è possibile trovare sullo store e che posso aiutare lo sviluppatore in diversi contesti: dal **debug** alle **animazioni**, dalla gestione dell’editor fino a **shader** e componenti low-poly preconfezionati.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/#)
Physical Dice Roller – Sistema di lancio dei dati basato sul motore fisico con gestione delle ambiguità
-------------------------------------------------------------------------------------------------------

[PHYSICAL DICE ROLLER – **DOWNLOAD**](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fphysics%2Fphysical-dice-roller-247138)
SRDebugger – Console realtime per log, profilazione e gestione del debug
------------------------------------------------------------------------

[SRDEBUGGER – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Fsrdebugger-console-tools-on-device-27688)
TriLib 2 – Caricare modelli esterni ad Unity
--------------------------------------------

[TriLIb 2 – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fmodeling%2Ftrilib-2-model-loading-package-157548)
3D Webview for Android – Caricare pagine web in ambienti VR
-----------------------------------------------------------

[VUPLEX 3D Veb View- Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2F3d-webview-for-android-with-gecko-engine-web-browser-158778)
SC Post Effects Pack – Raccolta di 34 effetti di Post Processing
-----------------------------------------------------------------

[SC POST EFFECTS PACK – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Ffullscreen-camera-effects%2Fsc-post-effects-pack-108753)
Made Easy Rotation – Gestione delle rotazioni tra parent e child in modo semplice e veloce
------------------------------------------------------------------------------------------

[MADE EASY ROTATION – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fmade-easy-rotation-229208)
Pool Plus – Gestore generico di pool di oggetti
-----------------------------------------------

[POOL PLUS – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fintegration%2Fpool-plus-163606)
Inspector Gadgets – Miglioramento delle funzionalità dell’editor
----------------------------------------------------------------

[INSPACTRO GADGETS PLUS – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Finspector-gadgets-pro-83013)
Quibli: Anime Shader – Toon shader per pipeline URP
---------------------------------------------------

[QUIBLI: TOON SHADER – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fquibli-anime-shaders-and-tools-203178)
Unique Projectiles MEGA Pack: Raccolta di proiettili low-poly tramite Particles System
--------------------------------------------------------------------------------------

[UNIQUE PROJECTILES: DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fparticles%2Funique-projectiles-mega-pack-vol-1-229041)
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fraccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store%2F)
Login
---
# Rinominare un progetto Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/rinominare-un-progetto-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/rinominare-un-progetto-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/rinominare-un-progetto-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Rinominare un progetto Unity
============================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
31 Maggio 2024
A volte può capitare di dover **rinominare** un progetto interno di **Unity** in quanto, durante lo sviluppo, possono sorgere cambi di naming o necessità di archiviazione. Cambiare il **nome** del **progetto** è una procedura che richiedere alcuni semplici passaggi, spiegati di seguito.
* Accertarsi che tutte le istanze di Unity siano chiuse
* Rinominare la cartella principale del progetto con il nuovo nome
* Eliminare la cartella nascosta .vs all’interno della directory principale del progetto
* Eliminare il file .sln con il vecchio nome del progetto (verrà creato in automatico quello nuovo)
* Avviare Unity HUB e aggiungere alla lista il progetto con la directory dal nuovo nome (quello vecchio non verrà più mostrato)
* Lanciare il nuovo progetto dalla lista dell’HUB
* Nel menu Edit > Project Settings -> Player cambiare il Product Name con il nuovo nome
* Salvare il progetto e verificare il funzionamento
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/rinominare-un-progetto-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/rinominare-un-progetto-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Frinominare-un-progetto-unity%2F)
Login
---
# Pubblicare una build Unity tramite SteamPipeGUI di Steamworks SDK - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Senza categoria](https://www.crearevideogiochi.it/categoria/senza-categoria/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Pubblicare una build Unity tramite SteamPipeGUI di Steamworks SDK
=================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
15 Dicembre 2025
La pubblicazione del proprio **gioco** o **applicativo** su **Steam** è una procedura alquanto delicata e complessa, soprattutto per via della struttura dei **Depot** e delle build dei **pacchetti**. Un modo semplice per caricare la propria **build** è quello di utilizzate SteamPipeGUI, una interfaccia Windows che permette di gestire **upload** di grandi dimensioni e nel contempo automatizzare la procedura.
Di seguito una guida dettagliata su come procedere.
* Scaricare Steamworks SDK dall’interfaccia Steamworks (pulsante azzurro nella colonna a destra della dashboard “Scarica l’ultima versione dell’SDK”) e decomprimerla in una directory del proprio computer.
* Creare una build del proprio applicativo Unity e copiarne il contenuto nella sottodirectory \\tools\\ContentBuilder\\content
* Accedere alla dashboard della propria applicazione STEAM, Modifica le impostazioni di Steamworks -> SteamPipe -> Depot ed aggiungere un Depot (se non già presente)
* Lasciare tutte le impostazioni di default avendo cura unicamente di impostare il Sistema Operativo
* Prendere nota del numero Depot ID (solitamente è l’App ID con un valore incrementale come ultimo numero)
* Decomprimere il file \\tools\\SteamPipeGUI.zip nella directory in cui si trova ed avviare il l’interfaccia SteamPipeGUI.exe
* Nella casella App ID inserire il codice identificativo della propria applicazione (solitamente nella dashboard in alto accanto al nome principale dell’applicazione, che termina con 0)
* Procedere alla aggiunta e alla configurazione del Depot
* Nella casella Depot ID inserire il codice univoco del Depot creato poco fa
* Nella casella Build Path ID inserire la directory completa nella quale abbiamo copiato la build (…\\tools\\ContentBuilder\\content)
* Nella sezione Steam Configuration inserire i propri dati di accesso e la directory del Content Builder di STEAM (…\\tools\\ContentBuilder)
* Premere il tasto UPLOAD
* Verrà avviata una schermata del Command Prompt in cui l’SDK eseguirà i passaggi necessari all’upload tra cui la richiesta di conferma accesso tramite la Steam App o il metodo di autenticazione scelto in fase di registrazione su Steam.
* Accedere alla Sezione SteamPipe -> Build della dashboard e verificare l’aggiunta della build riferita al Depot ID
* Nell’ultima colonna della tabella delle build selezionare la build appena caricata, selezionare un ramo dell’applicazione (solitamente default) e premere “Anteprima delle Modifiche” e subito dopo il pulsante “Imposta build attiva ora” (verrà richiesta conferma tramite Steam App)
* Accedere al menu Pubblica e pubblicare le modifiche effettuate.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Risolvere l'errore "I pacchetti del Negozio e quelli…](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Dimensioni delle immagini da pubblicare nel negozio di Steam](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
[0Likes](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fpubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk%2F)
Login
---
# Creare un archivio di risorse grafiche .aar per un progetto Unity con Android Studio - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Creare un archivio di risorse grafiche .aar per un progetto Unity con Android Studio
====================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
27 Febbraio 2026
Quando sviluppiamo plugin **Android** per Unity o vogliamo distribuire una **libreria** riutilizzabile, il formato corretto non è un APK ma un **AAR (Android ARchive)**. Un file .aar è l’equivalente di una DLL nel mondo .NET: contiene codice compilato, risorse (immagini, layout, stringhe), manifest e tutto ciò che serve per essere integrato in un altro progetto. E’ un file .zip rinominato contenente una struttura predeterminata e alcuni file accessori.
Di seguito la procedura per creare un file .aar da includere in un progetto **Unity**.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/#)
Creare il progetto
------------------
Aprire **Android Studio**, creare un nuovo progetto vuoto e poi un modulo oppure aggiungere un modulo a un progetto esistente
Creare un modulo Library
------------------------
Accedere a File → New → New Module poi Android Library (sulla sinistra). Dare un nome al modulo.
NON selezionare “Phone & Tablet Module” (in quanto genera un APK non un AAR).
Aggiungere risorse (esempio con due PNG)
----------------------------------------
Accedere alla cartella “myLibrary/src/main/res/”, se non esiste creare la directory /drawable
Struttura finale:
mylibrary
└── src
└── main
└── res
└── drawable
├── icon1.png
└── icon2.png
Generare il file AAR
--------------------
Eseguire il comando “Build → Make Module ‘mylibrary'” che creerà un file .aab nella directory su disco “MyAppkcation/myLibrary/build/outputs/aar”
Includere il file .aar in un progetto Unity
-------------------------------------------
Per integrare la libreria in Unity, copiare il file .aar generato in precedenza nella directory “Assets/Plugins/Android/”.
Unity lo includerà automaticamente nella build Android.
Potrebbe interessarti anche:
----------------------------
* [\
\
Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Perchè usare i Layer invece che i tag nel sistema di…](https://www.crearevideogiochi.it/perche-usare-i-layer-invece-che-i-tag-nel-sistema-di-collisioni-di-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/creare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcreare-un-archivio-di-risorse-grafiche-aar-per-un-progetto-unity-con-android-studio%2F)
Login
---
# Configurare BepInEx e Unity Explorer per il debug di un gioco creato con Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Configurare BepInEx e Unity Explorer per il debug di un gioco creato con Unity
==============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
10 Settembre 2025
_ATTENZIONE_: La presente guida si intende unicamente a scopo illustrativo e di ricerca. Creare Videogiochi non promuove in alcun modo l’hacking e il modding di applicativi Unity senza consenso o diritti.
Il mondo del modding è pieno di applicativi che permettono di modificare e **moddare** videogames sviluppati con diversi motori grafici. Nel caso di **Unity** il più famoso è senza dubbio **Unity Explorer**. Si tratta di un plugin del framework di modding **BepInEx** e che permette, attraverso una interfaccia grafica intuitiva, di modificare diversi parametri e intercettare chiamate di un gioco sviluppato in Unity (compilato in MODO o IL2CPP).
In questa guida vedremo come i due applicativi si integrano e si configurano.
1\. Scaricare l’ultima versione di [BepInEx](https://github.com/BepInEx/BepInEx/releases)

2\. Decomprimere lo zip e copiare il contenuto nella root del gioco da **debuggare** (alcuni files singoli e una directory chiamata \\BepInEx)
3\. Eseguire il gioco e tenerlo aperto per qualche secondo (consigliati 20 secondi), poi chiuderlo
4\. Saranno state create così una serie di directory nella cartella \\BepInEx tra cui \\config che contiene un file di configurazione editabile chiamato com.sinai.unityexplorer.cfg (per utenti esperti)
5\. Scaricare l’ultima versione di [UnityExplorer](https://github.com/sinai-dev/UnityExplorer)
avendo cura di scegliere la release corretta per modalità di compilazione del gioco (MONO o IL2CPP) utilizzando i links sotto l’header della pagina Github (Thunderstore releases)

6\. Decomprimere la cartella e copiare i files nella directory \\BeInEx\\config\\sinai-dev-UnityExplorer (unity Explorer è di fatto un **plugin** di BeInEx)
7\. Eseguire il gioco ed attendere qualche secondo prima che compaia l’**interfaccia** di Unity Explorer
**NOTE**: E’ possibile che all’avvio il gioco venga chiuso forzatamente, questo può significare diverse problematiche tra cui: versione di Unity Explorer errata, malfunzionamento di BepInEx, modalità di compilazione del gioco Unity diversa (MONO o IL2CPP), etc

Credits: Sammwy: https://x.com/sammwy/status/1964123037348855998
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[0Likes](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fconfigurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity%2F)
Login
---
# Le esperienze in VR per Meta Quest 3/3S che dovresti far provare a tuo padre e tua madre di oltre 60 anni (e non solo) - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
Le esperienze in VR per Meta Quest 3/3S che dovresti far provare a tuo padre e tua madre di oltre 60 anni (e non solo)
======================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
9 Novembre 2024
Spesso ci si chiede quanto i nostri **genitori**, magari di una certa età, possano capire delle nuove **tecnologie** e, ancor più spesso, si tende a tenerli all’oscuro e distanti da esse. Ma la tecnologia è fatta per arrivare a più fruitori possibile così come ad esempio la realtà virtuale e mista che, grazie a **Meta Quest 3 e 3S** sta entrando a grandi passi nella nostra quotidianità.
Di seguito quindi una **lista** non esaustiva che include alcune delle più belle **esperienze** (gratuite e a pagamento) che è possibile installare sul proprio **visore** per far immergere i nostri anziani genitori nel mondo della VR.
.
Di seguito quindi una **lista** non esaustiva che include alcune delle più belle **esperienze** (gratuite e a pagamento) che è possibile installare sul proprio **visore** per far immergere i nostri anziani genitori nel mondo della VR.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/#)
Art Plunge
----------

[META STORE – ART PLUNGE](https://www.meta.com/it-it/experiences/art-plunge/3324033124277177)
* * *
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
First Touch
-----------

[META STORE – FIRST TOUCH](https://www.meta.com/it-it/experiences/first-touch-for-meta-quest-touch-pro-controllers/5808929989145615)
Moss
----

[META STORE – MOSS](https://www.meta.com/it-it/experiences/moss/1654565391314903/)
Theater Elsewhere
-----------------

[META STORE – THEATER ELSEWHERE](https://www.meta.com/it-it/experiences/theater-elsewhere/2515021945210953)
Blink Traveler
--------------

[META STORE – BLINK TRAVELER](https://www.meta.com/it-it/experiences/brink-traveler/3635172946605196)
Meta Quest TV
-------------

[META STORE – META QUEST TV](https://www.meta.com/it-it/experiences/meta-quest-tv/1931356740318898/)
Blueplanet VR Explore v2
------------------------

[META STORE – BLUEPLANET VR](https://www.meta.com/it-it/experiences/blueplanet-vr-explore-v2/3422717251188752/)
ForeVR Darts
------------

[META STORE – ForeVR DARTS](https://www.meta.com/it-it/experiences/forevr-darts/3831620133609128/)
Potrebbe interessarti anche:
----------------------------
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[0Likes](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fle-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo%2F)
Login
---
# Sors Adversa - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/sors-adversa/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/sors-adversa/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/sors-adversa/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
Sors Adversa
============

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
29 Dicembre 2021
**Nome del gioco**: Sors Adversa
S**viluppatore:** Desdinova.it
**Componenti del team**: 2
Li**nk**: [www.sorsadversa.com](https://www.sorsadversa.com/)
**Piattaforme**: PC / Steam, Nintendo Switch
**Motore**: Unity
**Genere**: Shmup
**Stato**: In sviluppo – DEMO Disponibile
**Galleria fotografica:**



**Descrizione**:
Sors Adversa è un tributo low-poly agli sparatutto della vecchia scuola con lunghi livelli dettagliati e combattimenti contro enormi boss. Utilizza uno grafica a scorrimento diagonale e una vasta quantità di equipaggiamento delle navi personalizzabile.
Seleziona uno dei mezzi sperimentali disponibili, personalizzalo con la tua scelta di armi e mod e pilotalo in livelli lunghi e dettagliati contro nemici impegnativi. Ingaggia e sconfiggi i nemici nella tua missione per salvare il pianeta da una minaccia sconosciuta!
Sors Adversa by Desdinova
Potrebbe interessarti anche:
----------------------------
* [ a scorrimento con visuale isometrica")\
\
Lista degli Shoot'em Up (shmup) a scorrimento con…](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[0Likes](https://www.crearevideogiochi.it/sors-adversa/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/sors-adversa/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fsors-adversa%2F)
Login
---
# Come risolvere l’errore 'RenderTexture.Create failed depth/stencil format unsupported - D32 SFloat S8 UInt (94)' per Android in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore ‘RenderTexture.Create failed depth/stencil format unsupported – D32 SFloat S8 UInt (94)’ per Android in Unity
=====================================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
31 Ottobre 2024
Può capitare, durante il runtime di un applicativo **Unity** compilato per **Android**, di incorrere nell’**errore** “RenderTexture.Create failed depth/stencil format unsupported – D32 SFloat S8 UInt (94) – There is no compatible format on this platform or this fallback to a compatible format is disabled in the import inspector.”
Questo errore è legato all’utilizzo di assets di tipo **RenderTexture** che hanno il parametro “**Depth Stencil Format**” impostato a default (D32\_SFLOAT\_S8\_UINT).

Per evitare l’errore di formato è invece necessario impostare, durante la build Android, il parametro “Depth Stencil Format” su **D21\_SFLOAT\_S8\_UINT**.
Verificare inoltre di aver selezionato la casella “Enable Compatible Format”.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Pubblicare una build Unity tramite SteamPipeGUI di…](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity%2F)
Login
---
# Il Singleton Pattern in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Il Singleton Pattern in Unity
=============================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
9 Gennaio 2026
Il **Singleton Pattern** è un pattern di progettazione che garantisce l’esistenza di una sola **istanza** di una classe e fornisce un punto di accesso globale a essa. Serve quando un sistema deve essere unico per tutta l’applicazione, come un gestore di audio, input o stato di gioco.
In Unity è spesso usato per manager globali che devono essere **accessibili** da qualunque script senza passare riferimenti. Il singleton semplifica l’**architettura** perché riduce le dipendenze esplicite tra oggetti ma va usato con attenzione perché può creare accoppiamento forte e dipendenze nascoste.
public class MySingleton : MonoBehaviour where T : Component
{
protected static T _instance;
public static bool HasInstance => _instance != null;
public static T TryGetInstance() => HasInstance ? _instance : null;
public static T SharedInstance
{
get
{
if (_instance == null)
{
_instance = FindAnyObjectByType();
if (_instance == null)
{
GameObject obj = new GameObject();
obj.name = typeof(T).Name + "_AutoCreated";
_instance = obj.AddComponent();
}
}
return _instance;
}
}
protected virtual void Awake()
{
if (!Application.isPlaying)
{
return;
}
if (_instance != null && _instance != this)
{
Destroy(gameObject);
return;
}
_instance = this as T;
}
protected virtual void OnDestroy()
{
if (_instance == this)
_instance = null;
}
}
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Awake e Start di Unity spiegati facile](https://www.crearevideogiochi.it/awake-e-start-di-unity-spiegati-facile/)
* [\
\
Visualizzare e selezionare oggetti Cast Shadow =…](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/)
[0Likes](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/il-singleton-pattern-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fil-singleton-pattern-in-unity%2F)
Login
---
# Visualizzare un Interstitial ADS di Unity Level Play Ads Mediation - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Visualizzare un Interstitial ADS di Unity Level Play Ads Mediation
==================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
9 Ottobre 2025
Unity **LevelPlay** è diventato da poco il sistema principale per la gestione degli **annunci** di Unity (dopo l’acquisizione avvenuta nel 2023 di ironSource).
Per iniziare a sviluppare la soluzione integrata di gestione degli annunci di **Unity** seguire la [seguente nostra guida](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
;
può essere utile anche seguire [questa guida ufficiale](https://developers.is.com/ironsource-mobile/unity/levelplay-starter-kit/)
di integrazione.
Di seguito invece un codice di partenza per l’implementazione di un **Interstitial ADS** di Unity Level Play Ads Mediation.
using UnityEngine;
using Unity.Services.LevelPlay;
public class AdsMediationManager : MonoBehaviour
{
private LevelPlayInterstitialAd interstitialAd;
[Header("LevelPlay Settings")]
public string AndroidAppKey = "23b121905";
public string IOSAppKey = "23b137235";
public bool IsTest = true;
public bool Logs = true;
[Header("Interstitial Settings")]
public string AndroidInterstitialAdUnitId = "led3r7a68mwqvy35";
public string IOSInterstitialAdUnitId = "l79yflyre1e1akb5";
void Start()
{
LevelPlay.OnInitSuccess += LevelPlay_OnInitSuccess; ;
LevelPlay.OnInitFailed += LevelPlay_OnInitFailed;
#if UNITY_ANDROID
LevelPlay.Init(this.AndroidAppKey);
#elif UNITY_IOS
LevelPlay.Init(this.AppKeyIOS);
#endif
}
private void LevelPlay_OnInitFailed(LevelPlayInitError obj)
{
if (this.Logs) Debug.LogWarning("LevelPlay Init Failed: " + obj.ErrorMessage.ToString());
}
private void LevelPlay_OnInitSuccess(LevelPlayConfiguration obj)
{
if (this.Logs) Debug.Log("LevelPlay Init Success - IsAdQualityEnabled: " + obj.IsAdQualityEnabled);
if (this.IsTest)
{
LevelPlay.SetMetaData("is_test_suite", "enable");
LevelPlay.LaunchTestSuite();
if (this.Logs) Debug.LogWarning("LevelPlay Test Suite: Enabled");
}
this.CreateInterstitialAd();
}
void CreateInterstitialAd()
{
//Create InterstitialAd instance
#if UNITY_ANDROID
interstitialAd = new LevelPlayInterstitialAd(this.AndroidInterstitialAdUnitId);
#elif UNITY_IOS
interstitialAd = new LevelPlayInterstitialAd(this.IOSInterstitialAdUnitId);
#endif
//Subscribe InterstitialAd events
interstitialAd.OnAdLoaded += InterstitialOnAdLoadedEvent;
interstitialAd.OnAdLoadFailed += InterstitialOnAdLoadFailedEvent;
interstitialAd.OnAdDisplayed += InterstitialOnAdDisplayedEvent;
interstitialAd.OnAdDisplayFailed += InterstitialOnAdDisplayFailedEvent;
interstitialAd.OnAdClicked += InterstitialOnAdClickedEvent;
interstitialAd.OnAdClosed += InterstitialOnAdClosedEvent;
interstitialAd.OnAdInfoChanged += InterstitialOnAdInfoChangedEvent;
}
public void LoadInterstitialAd()
{
//Load or reload InterstitialAd
interstitialAd.LoadAd();
}
void InterstitialOnAdLoadedEvent(LevelPlayAdInfo adInfo)
{
if (interstitialAd.IsAdReady())
{
interstitialAd.ShowAd();
if (this.Logs) Debug.Log("Interstitial ShowAd: " + adInfo.AdUnitId.ToString());
}
else
{
if (this.Logs) Debug.LogWarning("Interstitial Not Ready: " + adInfo.AdUnitId.ToString());
}
}
void InterstitialOnAdLoadFailedEvent(LevelPlayAdError ironSourceError){
if (this.Logs) Debug.LogWarning("Interstitial Load Failed: " + ironSourceError.ErrorMessage.ToString());
}
void InterstitialOnAdClickedEvent(LevelPlayAdInfo adInfo) {
if (this.Logs) Debug.Log("Interstitial Clicked: " + adInfo.AdUnitId.ToString());
}
void InterstitialOnAdDisplayedEvent(LevelPlayAdInfo adInfo) {
if (this.Logs) Debug.Log("Interstitial Displayed Successful: " + adInfo.AdUnitId.ToString());
}
void InterstitialOnAdDisplayFailedEvent(LevelPlayAdInfo adInfo, LevelPlayAdError error) {
if (this.Logs) Debug.LogWarning("Interstitial Displayed Failed: " + adInfo.AdUnitId.ToString());
}
void InterstitialOnAdClosedEvent(LevelPlayAdInfo adInfo) {
if (this.Logs) Debug.Log("Interstitial Closed: " + adInfo.AdUnitId.ToString());
}
void InterstitialOnAdInfoChangedEvent(LevelPlayAdInfo adInfo) {
if (this.Logs) Debug.LogWarning("Interstitial Info Changed: " + adInfo.AdUnitId.ToString());
}
}
Potrebbe interessarti anche:
----------------------------
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Inviare notifiche push per iOS e Android in Unity](https://www.crearevideogiochi.it/inviare-notifiche-push-per-ios-e-android-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Likes](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fvisualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation%2F)
Login
---
# Aggiornare i files di Unity di un progetto Xcode per iOS - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Aggiornare i files di Unity di un progetto Xcode per iOS
========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
24 Febbraio 2026
Una delle prerogative di un app **Unity** per iOS è che la build genera un cartella progetto **Xcode**.
Tale progetto poi deve essere compilato su un dispositivo con sistema operativo MacOS tramite il software di sviluppo Xcode,
Per generare una compilazione corretta da usare su dispositivi **iOS** è necessario però impostare diverse opzioni di configurazione come ad esempio il nome, il numero di versione ma anche e soprattutto certificati di distribuzione e le eventuali direttive di build.
Queste **configurazioni** però si perderebbero se ad ogni build di Unity si sovrascrivesse l’intera cartella del progetto Xcode generata da Unity, dovendola portare su un dispositivo MacOS.
La procedura quindi è quella di mantenere intatte le configurazioni del progetto Xcode ed **aggiornare** unicamente alcuni **files e cartelle** compilate da Unity. Nello specifico le cartelle da copiare e **sovrascrivere** sono le seguenti:
* /Classes
* /Data
* /Frameworks
* /Libraries
* /MainApp
* /UnityFramework
* /Unity-iPhone
* Unity-iPhone Tests
E’ importante ricordare che la cartella \\Unity-iPhone.xcodeproj è quella che include tutte le configurazioni del progetto Xcode ed è consigliato NON sovrascriverla per preservare le impostazioni.
Una volta in Xcode ricordarsi di aggiornare le informazioni di versione, che non saranno state copiate.
Per far questo verificare per il componente Unity-iPhone il campo in General – Identity – Version e in Info – Bundle version string (short)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[0Likes](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/aggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Faggiornare-i-files-di-unity-di-un-progetto-xcode-per-ios%2F)
Login
---
# VR Developer - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/vr-developer/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/vr-developer/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/vr-developer/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
VR Developer
============

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
Realtà virtuale e realtà aumentata sono termini di un nuovo paradigma tecnologico, capace di immergere le persone in un’esperienza che va oltre la percezione del mondo reale. Dopo i pionieristici tentativi cui abbiamo assistito negli scorsi decenni, le tecnologie immersive sono oggi parte di una rivoluzione già in atto, capace di ridefinire per molti versi il nostro modo di produrre, comunicare e vivere.
Le previsioni degli analisti prospettano i numeri di un business miliardario, per un vero e proprio ecosistema di figure professionali, chiamato ad affrontare le sfide della vertiginosa crescita di applicazioni e contenuti digitali richiesti in tutti gli ambiti del business.
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
L’autore propone un viaggio di scoperta, utile a definire le competenze tecniche e creative necessarie per creare i mondi virtuali e a orientarsi tra le numerose opportunità e i rischi tipici di uno scenario di profondo cambiamento. Attraverso le testimonianze dei protagonisti si offre un’indagine concreta, sfatando falsi miti e cercando di cogliere spunti e riflessioni utili a sviluppare una coscienza consapevole sugli aspetti complessi e cross disciplinari che fanno capo alle professioni della realtà virtuale.
[vedi su amazon](https://www.amazon.it/dp/B07JN5S9XK?ref_=k4w_oembed_i2LZ5cV4P7gkIL&tag=danieleferla-21&linkCode=kpd)
Potrebbe interessarti anche:
----------------------------
* [\
\
Realtà Virtuale e Realtà Aumentata](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[0Likes](https://www.crearevideogiochi.it/vr-developer/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/vr-developer/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fvr-developer%2F)
Login
---
# Realtà Virtuale e Realtà Aumentata - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
Realtà Virtuale e Realtà Aumentata
==================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
14 Gennaio 2022
Realtà aumentata, realtà virtuale, Mixed Reality, Cross Reality. Sono anni che sentiamo questi termini, eppure fino a ora tutto quello che abbiamo visto è stato qualche divertente effetto speciale e poco di più.
Si tratta solo di qualche fuoco d’artificio digitale? O possiamo aspettarci di meglio? Assolutamente sì.
Oggi finalmente i tempi sono maturi per andare oltre l’effetto WOW e per iniziare a progettare soluzioni che entrino davvero nei processi aziendali generando valore. Manutenzione industriale, formazione tecnica, scienza forense, prototipazione e salute sono solo alcuni dei settori in cui AR e VR possono modificare per sempre i processi di business.
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
Quali sono le profonde differenze psicologiche tra realtà aumentata e realtà virtuale? Dove AR e VR possono essere applicate generando valore al core business aziendale? Come la Mixed Reality può passare dall’essere un nice to have a un imprescindibile must have? Quali sono le sfide completamente nuove nel disegnare la user experience di una soluzione AR/VR?
Queste sono alcune delle domande che si affronteranno in questo libro, accompagnando il lettore attraverso esempi e casi concreti, in un viaggio alla scoperta non del futuro, ma di come già oggi sia possibile migliorare le attività di business attraverso realtà aumentata, realtà virtuale e Mixed Reality.
[VEDI SU AMAZON](https://www.amazon.it/dp/B0868W1T4H?ref_=k4w_oembed_WkDg5UdNNIflem&tag=danieleferla-21&linkCode=kpd)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
* [\
\
Il Mixed Mode delle luci di Unity](https://www.crearevideogiochi.it/il-mixed-mode-delle-luci-di-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[0Likes](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Frealta-virtuale-e-realta-aumentata%2F)
Login
---
# Cosa è il Coyote Time - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cosa-e-il-coyote-time/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cosa-e-il-coyote-time/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cosa-e-il-coyote-time/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Cosa è il Coyote Time
=====================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
26 Gennaio 2022
Tutti gli sviluppatori di videogames **platform** sanno che i **salti** e le interazioni con i blocchi sono la parte fondamentale del gioco. Senza un controllo preciso di queste meccaniche il gioco ne risentirebbe sicuramente.
Uno dei concetti fondamentali e da sapere è quello che viene definito “**Coyote Time**“.
In sostanza è quell’area di salto oltre il termine dell’ostacolo nel quale viene comunque permesso il salto. Può essere visto come una sorta di buffer entro il quale è comunque possibile interagire con la piattaforma e quindi saltare oltre. Questo approccio evita che la caduta venga percepita come prematura e la **tempistica** troppo punitiva.
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
Curiosità
---------
Uno dei primi videogiochi a introdurre questo concetto fu la Nintendo, in **Super Mario**.
Questo buffer è chiamato così perché ricorda la famosa pausa di Willy Coyote poco prima di cadere in un dirupo.

_Immagine di Copertina: [Valfaris](https://www.valfarisgame.com/)
_
Potrebbe interessarti anche:
----------------------------
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
[0Likes](https://www.crearevideogiochi.it/cosa-e-il-coyote-time/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cosa-e-il-coyote-time/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-il-coyote-time%2F)
Login
---
# Come sviluppare una app non-game per iOS e Android in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come sviluppare una app non-game per iOS e Android in Unity
===========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
12 Marzo 2026
In questo articolo verranno affrontati i diversi aspetti riguardanti lo sviluppo di una app prettamente **non-game** con Unity, engine notoriamente usato invece per lo sviluppo di videogiochi e applicativi 3D.
Sono presenti alcuni concetti di base ma anche diversi **consigli** su come **ottimizzare** lo sviluppo e trarre beneficio da un editor potente senza inficiare sulle **prestazioni** dei dispositivi mobile e sull’uso della batteria (battery drain).
In questo articolo
[Toggle](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/#)
Interfaccia utente
------------------
Nello sviluppo di una app non-game l’interfaccia utente (**UI**) è sicuramente l’elemento che fa da padrone per visualizzazione ma anche **usabilità**. Unity implementa due tipologie di gestione della UI: uno chiamato UGUI e uno, piu recente, chiamato UI Toolkit. Entrambi hanno pro e contro nel loro utilizzo ma una delle caratteristiche comuni è di non aver implementato oggetti che sono notoriamente usati nelle app non-game (ad esempio: caroselli, calendari, finestre modali, etc).
In versione ancora sperimentale è bene citare anche un nuovo framework di Unity chiamato [App UI](https://docs.unity3d.com/Packages/com.unity.dt.app-ui@2.2/manual/index.html)
.
Prima di addentrarsi nello sviluppo di **componenti custom** attraverso la UI di Unity è bene sapere che nell’Asset Store sono presenti diverse collezioni di elementi UI già pronti e ben realizzati, come ad esempio Evo UI che è possibile trovare [qui](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Fevo-ui-modern-ui-framework-310303)
Camera principale
-----------------
Qualora non sia necessario renderizzare a schermo nessuna componente 3D è bene eliminare completamente la **Camera 3D** dalla scena, questo ottimizza moltissimo la fase di rendering a schermo in quanto non vengono implementate le funzionalità di visualizzazione e di post processing della pipeline.
Safe Area
---------
Se in un videogioco normalmente la scena occupa l’intero schermo del dispositivo, in una app non-game è bene capire quanto sia importante il concetto di **SafeArea**. Su alcuni dispositivi Android o iOS alcune sezioni dello schermo potrebbero non essere visibili o non interagibili (ad esempio in fondo allo schermo, oppure sotto il notch dell’iPhone). E’ buona pratica quindi impostare il **canvas** degli elementi UI alla dimensione della SafeArea così da evitare che la UI (pulsanti o diciture) siano sempre **visibili** a schermo, in questo modo:
var safeAreaForUIToolkit = new Rect(Screen.safeArea.x, Screen.height - Screen.safeArea.y, Screen.safeArea.width, Screen.safeArea.height);
Discorso a parte va fatto per la **Navigation Bar** presente su dispositivi mobile iOS. Si tratta di un’area sopra la SafeArea dove andrebbero posizionati i pulsanti di navigazione dell’app. E’ bene sapere della sua esistenza per gestire al meglio la visualizzazione su dispositivi Apple (se con o senza Navigation Bar). Tale elemento è alto, per convenzione, 69 pixel.
Fullscreen mode
---------------
Una delle particolarità di una app non-game è quella che tendenzialmente non deve essere posta in **fullscreen** come un videogame in quanto deve permettere l’uso della **barra degli strumenti** di sistema (visibile in Android).
E’ bene quindi impostare la proprietà FullScreen Mode su Window nei Project Settings oppure da codice:
Screen.fullScreen = false;
Motori fisici
-------------
Unity implementa di base **due motori fisici**, uno 3D e uno 2D che permettono di eseguire operazioni fisiche tra GameObject (collisioni, forze, etc). In una app-non game queste funzionalità sono pressoché inutili quindi un ulteriore risparmio di risorse lo si ottiene disattivandoli, nello specifico con:
Physics.simulationMode = SimulationMode.Script;
Physics2D.simulationMode = SimulationMode2D.Script;
E’ bene ricordare la che disattivazione dei motori fisici non disattiva le funzioni Update e FixedUpdate che invece continuano ad essere eseguite.
FPS
---
I frame per secondo sono una parte fondamentale per la **fluidità** dell’app. In Unity è possibile forzare il targetFrameRate a valori desiderati così come lasciare che sia **sincronizzato** con quello dello schermo. Il consiglio è quello di verificare il valore migliore per la fluidità dell’app, molto spesso però la scelta ricade su 60FPS, impostabili in questo modo:
QualitySettings.vSyncCount = 0;
Application.targetFrameRate = 60;
Update e FixedUpdate
--------------------
In una app non-game, dove le attività sono concentrate sulle funzioni della UI, è possibile escludere completamente le funzioni **Update** e **FixedUpdate** che di fatto vengono eseguite ad ogni frame consumando risorse e batteria. Il consiglio è quelle di eliminarle completamente dagli script dei GameObject in scena.
Timeout dello schermo
---------------------
Se in un videogame il **timeout** dello **schermo** dovrebbe essere sempre disattivato (lo schermo potrebbe spegnersi durante una cutscene ad esempio), in una app-non game è preferibile impostare lo sleepTimeout sul valore di sistema (in modo che si disattivi dopo il tempo definito nelle impostazioni), nel modo seguente:
Screen.sleepTimeout = -2;
On Demand Rendering
-------------------
Una delle funzionalità meno conosciute di Unity è la possibilità di renderizzare lo schermo solo su **richiesta** e non in modo continuativo (default). Questa attività si chiama **On Demand Rendering** e permette di gestire ogni quanti FPS renderizzare la scena. In una app non-game in cui non ci sono in gioco simulazioni o visualizzazioni realtime questo può fare la differenza. Un valore uguale a 1 (default) permette il rendering realtime, valori più alti permettono di renderizzare invece ad intervalli prestabiliti di FPS.
Ad esempio, se gli FPS sono impostati a 60 e si definisce un renderFrameInterval di 6, la scena verrà renderizzata ogni 10 FPS, nel seguente modo:
OnDemandRendering.renderFrameInterval = 6;
Per evitare poi latenze al momento del touch a schermo è necessario reimpostare il valore a 1 così da eseguire un rendering immediato, nel seguente modo:
if (Input.GetMouseButton(0) || (Input.touchCount > 0))
{
Canvas.ForceUpdateCanvases();
UnityEngine.Rendering.OnDemandRendering.renderFrameInterval = 1;
}
else
{
UnityEngine.Rendering.OnDemandRendering.renderFrameInterval = 6;
}
Nascondere l’input field della tastiera di sistema
--------------------------------------------------
Una delle particolarità della **tastiera** a schermo di iOS è quella che una volta aperta mostra una casella di testo sopra di essa in cui scrivere il contenuto della **textbox** che si vuole riempire. E’ una funzionalità utile ma non è un comportamento di sistema che invece è stato implementato da Unity per facilitare l’inserimento di testi. E’ notoriamente fastidioso e può essere eliminato impostando la proprietà **shouldHideMobileInput** di tutti i componenti InputField e TMP\_InputField della scena su true, come di seguito:
List fields = FindObjectsByType(FindObjectsInactive.Include, FindObjectsSortMode.None).ToList();foreach (TMPro.TMP_InputField field in fields){field.shouldHideMobileInput = true;}
Esiste anche un parametro TouchScreenKeyboard.hideInput da impostare a true, ma sembra che nelle ultime versione di Unity questo non abbia alcun effetto.
Mettere in evidenza l’input box al focus
----------------------------------------
Una delle particolarità delle app native è quella di implementare una sistema di messa a fuoco (al centro dello schermo) delle caselle Input box, questo per facilitare l’inserimento di testo e renderlo visibile durante la digitazione. Unity purtroppo non lo implementa e deve essere realizzato da codice sfruttando la dimensione del Canvas di appartenenza e la dimensione della Input box interessata.
Notifiche in app
----------------
Una delle funzionalità che di certo sono indispensabili nello sviluppo di una app non-game è quella dell’invio delle **notifiche**. Unity mette a disposizione un potente sistema di notifiche che gestisce indipendentemente sia quelle di **Android** che quelle di **iOS** ma anche un potente framework che le gestisce in modo unificato.
[Qui](https://www.crearevideogiochi.it/wp-content/uploads/2026/03/notifiche-app-ios-android-unity.jpg)
un nostro articolo di approndimento.
Gestione della galleria fotografica
-----------------------------------
Una delle funzionalità che può essere richiesta da una app non-game è quella di poter accedere alla **camera** e alla galleria fotografica (**rullino**) di sistema. Questa funzionalità non è implementata da Unity in modo nativo in quanto necessita di chiamate a basso livello di sistema. In nostro aiuto viene un utilissimo asset gratuito chiamato “Native Gallery for Android & iOS” scaricabile [qui](https://assetstore.unity.com/packages/tools/integration/native-gallery-for-android-ios-112630)
.
Gestione dei file di sistema
----------------------------
Un’altra funzionalità utile in app non-game è quella di poter accedere ai **file di sistema** (ad esempio per recuperare un file dalla cartella download). Anche in questo caso la funzionalità non è nativa in Unity ed è possibile implementarla attraverso l’asset gratuito “Native file Picker for Android & iOS” scaricabile [qui](https://assetstore.unity.com/packages/tools/integration/native-file-picker-for-android-ios-173238)
.
Feedback aptici
---------------
Funzionalità sicuramente utile e interessante da implementare in una app non-game è quella dei **feedback** aptici (o in generale le **vibrazioni**). Tale funzionalità permette un riscontro non solo visivo di attività svolte dalla app.
Sia Android che iOS permettono questo tipo di funzionalità ma non sono implementate nativamente da Unity necessitando quindi di un asset gratuito chiamato “Mobile Haptic Feedback” scaricabile [qui](https://assetstore.unity.com/packages/tools/integration/mobile-haptic-feedback-320664)
.
Dimensione della build
----------------------
Uno degli aspetti da non sottovalutare è quello delle **dimensione**, in MB, dell’applicativo generato.
La prima **ottimizzazione** che è possibile fare è quella di eliminare completamente i **pacchetti** di default che Unity installa e che nel progetto non sono utilizzati. Un esempio potrebbe essere il Visual Scripting, oppure il Multiplayer, oppure il nuovo Input System o addirittura la URP (Universal Rendering Pipeline) in quanto la app potrebbe usare solo la componente UGUI. Il consiglio è di rimuovere man mano i pacchetti e verificare che la app non generi errori di compilazione o di visualizzazione a runtime.
Un secondo elemento importante per la **compressione** della build finale è il parametro Project Settings -> Player -> Managed Stripping Level che di default è impostato a Minimal. Questo parametro ottimizza la generazione del codice compilato e può essere impostato in modo graduale su diversi parametri, il consiglio è di provare le diverse opzioni.
Potrebbe interessarti anche:
----------------------------
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Asset e componenti indispensabili per lo sviluppo di…](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
[0Likes](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-sviluppare-una-app-non-game-per-ios-e-android-in-unity%2F)
Login
---
# Unity. Guida pratica per sviluppare applicazioni di realtà virtuale e aumentata - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Unity. Guida pratica per sviluppare applicazioni di realtà virtuale e aumentata
===============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
26 Gennaio 2022
Unity è un motore grafico multipiattaforma che consente lo sviluppo di contenuti interattivi e fornisce un set di strumenti intuitivi, accessibili e adatti a qualsiasi settore, dal mondo dei videogame alle applicazioni in ambito industriale.
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
Questa guida pratica è rivolta a chiunque desideri imparare a creare app di Realtà Virtuale o Aumentata partendo da zero attraverso esercitazioni di complessità crescente. Grazie agli strumenti e alle risorse disponibili in Unity è infatti possibile sviluppare applicazioni da testare direttamente sul PC o smartphone, senza dover acquistare un visore.
[VEDI SU AMAZON](https://www.amazon.it/gp/product/8850335563/ref=as_li_tl?ie=UTF8&camp=3414&creative=21718&creativeASIN=8850335563&linkCode=as2&tag=danieleferla-21&linkId=c0fccae46cafa30b9e3c2bc78664a0a6)
Potrebbe interessarti anche:
----------------------------
* [\
\
UNYC# - Unity e C# da zero](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/)
* [\
\
Programmare con Unity 3D](https://www.crearevideogiochi.it/programmare-con-unity-3d/)
* [\
\
Unity Tutorial: Verso la creazione di un videogioco](https://www.crearevideogiochi.it/unity-tutorial-verso-la-creazione-di-un-videogioco/)
* [\
\
Giocarsi. Gaming e gamification in contesti professionali](https://www.crearevideogiochi.it/giocarsi-gaming-e-gamification-in-contesti-professionali/)
* [\
\
Realtà Virtuale e Realtà Aumentata](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
* [\
\
Realtà aumentata per il marketing - Metodi…](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/)
[0Likes](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/unity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Funity-guida-pratica-per-sviluppare-applicazioni-di-realta-virtuale-e-aumentata%2F)
Login
---
# Hellpath - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/hellpath/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/hellpath/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/hellpath/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
Hellpath
========

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
13 Luglio 2024
**Nome del gioco**: Hellpath
**Sviluppatore:** Desdinova.it
**Componenti del team**: 1
**Piattaforme**: Windows, Web, Android
**Motore**: Unity
**Genere**: Endless-run
**Lingua:** Inglese
**Stato**: Rilasciato
**Download link:** [h](https://desdinovadev.itch.io/hellpath)
[ttps://desdinovadev.itch.io/hellpath](https://desdinovadev.itch.io/ggwg)
In questo articolo
[Toggle](https://www.crearevideogiochi.it/hellpath/#)
### Video
https://www.youtube.com/watch?v=8bwyKgR1\_fs
### Descrizione
Hellpath è un endless-run gratuito per Windows e giocabile anche sul web (HTML5).
Dovrai aiutare l’eroe di turno a fuggire dall’inferno camminando su un percorso accidentato e sempre nuovo, ne sarai capace?
Caratteristiche:
* Percorsi e oggetti casuali
* Personaggi casuali
Controlli:
* W A S D
* Frecce direzionali
* Gamepad
### Download & Play
Hellpath by Desdinova
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
GGWG: Goose Game Without Goose](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/hellpath/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/hellpath/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fhellpath%2F)
Login
---
# Configurare un progetto Unity esistente per Unity DevOps Version Control (ex Plastic SCM) - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Plastic SCM](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Configurare un progetto Unity esistente per Unity DevOps Version Control (ex Plastic SCM)
=========================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
8 Settembre 2025
La prima opzione che viene in mente di usare per gestire il **versioning** di un proprio progetto **Unity** è senza dubbio Git in quanto strumento utilizzato ampiamente nel mondo IT e ben documentato. E’ bene però sapere che Unity fornisce un sistema di versioning integrato in Unity (e con editor esterno) che permette una migliore gestione del proprio progetto. Unity DevOps Version Control (ex **Plastic SCM**) permette di gestire il versioning di un progetto Unity in modo semplice ed intuitivo.
* Installare l’ultima versione di [Unity DevOps Version Control](https://unity.com/products/unity-devops)
(in passato Plastic SCM) e avviarlo loggandosi con le credenziali del sito Unity
* Nella schermata Principale, vicino alla lista “**Repositories**” cliccare il simbolo +
* Inserire il nome del Repository (solitamente corrisponde a quello del progetto Unity)
* Contestualmente creare un workspace con lo stesso nome del repository indicando la directory del progetto esistente di Unity
* Verrà aperto il respository nel **workspace** corrente
* Cliccare la sezione “Pending Changes” sul lato sinistro, verranno mostrati tutti i **files** del progetto
* Selezionare “Added and private” dalla lista dei files, verranno selezionati tutti i files del progetto
* Aggiungere un commento nella sezione poco più sopra, ad esempio “**First commit**“
* Cliccare il pulsante “Check in” nella barra in alto, verranno caricati tutti i files del progetto nel repository **remoto** del progetto (sul Cloud)
* Verrà creato un **Changeset** dentro la sezione “Branch Explorer” sul lato sinistro.

Informazioni Utili
------------------
* Ogni volta che si esegue un comando “Check in” in “Pending Changes” (con commento) verrà creato un Changeset che sarà possibile ripristinare in futuro
* Un changeset è un punto di caricamento dei files che è possibile ripristinare a quella data/ora se si vuole tornare ad una versione precedente del progetto.
* Per creare una branch, cioè una biforcazione del progetto, è necessario cliccare il tasto destro del mouse su un changeset la voce “Create branch from this changeset” (aggiungere nome, un commento e selezionare “Switch workspace to this branch”)
* La dimensione su cloud di un progetto Unity è sensibilmente inferiore rispetto a quella su disco in quanto il sistema provvede a gestire unicamente files necessari al progetto escludendo file temporanei o di cache
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fconfigurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm%2F)
Login
---
# Creare una applicazione trasparente che gira sul Desktop di Windows in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Creare una applicazione trasparente che gira sul Desktop di Windows in Unity
============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
1 Ottobre 2025
**Transparent Desktop Window Controller** ti permette di creare una finestra trasparente per il tuo gioco o la tua applicazione in modo che giri sul Desktop di Windows.
L’asset è flessibile e semplice da utilizzare. Include numerose funzionalità pensate per le esigenze di indie game o app non-game… e molto altro ancora. E’ quindi perfetto per idle game sul desktop e applicazioni in overlay!
In questo articolo
[Toggle](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/#)
Note importanti
---------------
* Funziona solo in build, non all’interno dell’Editor
* Compatibile solo con applicazioni basate su pipeline 3D, non 2D
* Disponibile esclusivamente per Windows 10/11
Funzionalità principali
-----------------------
* 2 metodi differenti per il calcolo di trasparenza/opacità
* Rende il colore di sfondo della camera completamente trasparente
* Imposta il valore di opacità della finestra
* Funzionalità “Always on top” (sempre in primo piano)
* Funzionalità di cambio schermo
Qualità professionale
---------------------
* Guida semplice e immediata
* Documentazione chiara e dettagliata
* Aggiornamenti regolari
* Scena di esempio inclusa
[Unity Asset Store – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Ftransparent-desktop-window-controller-311549)
[ITCH.IO – DOWNLOAD](https://desdinovadev.itch.io/transparent-desktop-window-controller)
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcreare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity%2F)
Login
---
# Dimensioni delle immagini da pubblicare nel negozio di Steam - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
Dimensioni delle immagini da pubblicare nel negozio di Steam
============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
17 Novembre 2025
E’ indubbio che lo sviluppo di un videogame passa anche dalla sua **promozione** e **distribuzione**, così come è indubbio che Steam sia una delle piattaforme chiave per far conoscere e giocare il proprio videogames.
Una delle complessità di **Steam** è proprio quella di produrre il **materiale** necessario per la pubblicazione sul **negozio**. Una delle parti più complesse e delicata è quella della realizzazione delle risorse grafiche da pubblicare tra capsule, screenshots e logo.
Di seguito una lista con le dimensioni aggiornate per ciascun componente da caricare.
A [questo link](https://www.dropbox.com/scl/fo/cvkwbosmrimklcl9h0qko/AF5IPErKP-mQM_3YO1Dw2lA?rlkey=b3ad0izykq367g4luasrinw9z&e=1&dl=0)
i file PSD pronti con le dimensioni.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/#)
Capsula Intestazione: 920×430
-----------------------------
Appare in cima alla tua pagina del Negozio, nella sezione “Consigliati per te”, nella “visuale a griglia” della Libreria sul client di Steam, nella modalità di navigazione di Big Picture e negli Affari del giorno, se applicabile.
Capsula Piccola: 462×174
------------------------
Utilizzata per tutte le liste di Steam, come i risultati di ricerca, i prodotti più venduti, le nuove uscite, ecc.
Capsula Principale: 1232×706
----------------------------
Appare nella parte superiore della pagina principale nella lista degli articoli messi in evidenza e consigliati.
Capsula verticale: 748×896
--------------------------
Appare in cima alla pagina principale durante i saldi stagionali e in altre nuove pagine dei saldi.
Sfondo della Pagina: 1438×810
-----------------------------
Utilizzata come sfondo per la tua pagina del Negozio.
Capsula della Libreria: 600×900
-------------------------------
Utilizzata principalmente nella panoramica della Libreria e nelle visualizzazione delle Collezioni
Intestazione della Libreria: 920×430
------------------------------------
Appare in vari punti della Libreria del client di Steam, inclusa la sezione Giochi recenti. Se non è impostata, viene utilizzata la capsula dell’intestazione.
Eroe della Libreria: 3840×1240
------------------------------
Appare in cima alla pagina dei dettagli di questo prodotto nella Libreria dell’utente.
Logo della Libreria: 1280×720
-----------------------------
Appare in cima alla pagina dei dettagli di questo prodotto nella Libreria dell’utente, sopra la grafica dell’eroe.
Screenshot: 1920×1080
---------------------
Appaiono in lista in cima alla pagina del negozio, sotto il trailer principale.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[0Likes](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fdimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam%2F)
Login
---
# Kickstarter vs Indiegogo: quale piattaforma di crowdfunding scegliere per un gioco indie - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
Kickstarter vs Indiegogo: quale piattaforma di crowdfunding scegliere per un gioco indie
========================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
31 Maggio 2022
Sono molteplici le piattaforme di **crowdfunding** che è possibile scegliere per il lancio del proprio videogame **indie**. In questo articolo analizzeremo le differenze, aggiornate a Novembre 2025, tra le due principali ed usate: Kickstarter e Indiegogo.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/#)
1\. Tipologie di campagna
-------------------------
Kickstarter è sostanzialmente ritenuto più valido per campagne dal risvolto più concreto e produttivo come ad esempio **giochi da tavolo**, viaggi, oggetti hi-tech o videogames.
Indiegogo invece è molto più flessibile in quanto utilizzato per molteplici scopi come ad esempio produzione musicale, video, animazioni, **film** e oggetti **creativi**.
2\. Paesi
---------
Kickstarter è disponibile solo in alcuni **paesi**, nello specifico: Stati Uniti, Regno Unito, Canada, Australia, Nuova Zelanda, Paesi Bassi, Danimarca, Irlanda, Norvegia, Svezia, Germania, Francia, Spagna, Italia, Austria, Belgio, Svizzera, Lussemburgo, Hong Kong, Singapore, Messico e Giappone.
Indiegogo è disponibile in tutti i paesi del **mondo** (224 paesi), tranne quelli in cui sono applicate delle sanzioni economiche.
3\. Tipo di Pubblico
--------------------
Kikstarter ha indubbiamente un tipo di pubblico amante del design e delle funzionalità hi-tech ma con capacità di spesa più alta e meno selettiva.
Indiegogo invece ha un pubblico più sensibile al prezzo e generalmente ama acquistare gadget altamente creativi e performanti ad un costo accessibile.
4\. Costi
---------
Kickstarter trattiene a fine campagna il 5% dell’importo finanziato.
Indiegogo trattiene il 5% dell’importo sia che esso sia finanziato a meno.
5\. Gateway di pagamento per i baker
------------------------------------
Kickstarter ha come **gateway** di **pagamento** unicamente Carta di Credito e Stripe.
Indiegogo implementa Carta di Credito, Stripe e soprattutto Paypal (sicuramente più conosciuto ed accessibile).
6\. Modalità di raccolta
------------------------
Kickstarter prevede che la campagna sia ritenuta un successo unicamente al raggiungimento dell’importo **prefissato** dalla campagna. Solo allora la cifra verrà rilasciata, decurtata dei costi di gestione della piattaforma.
Indiegogo prevede due modalità di raccolta: **flessibile** e **fissa**. La prima permette all’autore di avere l’importo raccolto anche se non si è raggiunto l’obiettivo fissato, la seconda invece preve l’erogazione solo dopo il raggiungimento completo dell’obiettivo.
7\. Visite mensili uniche
-------------------------
Kickstarter dichiara di avere circa 15.5 milioni di **visite al mese**.
Indiegogo dichiara di avere circa 6 milioni di visite al mese (2.5 volte in meno rispetto a Kickstarter)
Conclusioni
-----------
Difficile consigliare una o l’altra piattaforma in quanto l’obiettivo è il medesimo, ma le modalità e soprattutto il pubblico sono oggettivamente diversi. Indubbiamente **Kickstarter** può essere considerata la **prima scelta** per avviare una campagna di crowdfunding in quanto più conosciuto e più documentato. Questo non toglie di spostare poi, al termine della campagna finanziata o meno, la propria attenzione su Indiegogo e lanciarne una successiva anche su quest’ultima. E’ una pratica usuale e che, in alcuni casi, ha permesso di raccogliere ingenti somme da entrambe le piattaforme.
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
[0Likes](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/kickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fkickstarter-vs-indiegogo-quale-piattaforma-di-crowdfunding-scegliere-per-un-gioco-indie%2F)
Login
---
# Canali Telegram che dovresti seguire se sei uno sviluppatore Unity di videogiochi indie - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Canali Telegram che dovresti seguire se sei uno sviluppatore Unity di videogiochi indie
=======================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
6 Marzo 2025
**Telegram** è un sistema di messaggistica molto potente ma anche un social network dalle mille risorse.
La differenza principale rispetto ad altre app è quella di offrire la possibilità di seguire **gruppi** e **canali**.
Purtroppo però la ricerca di questi elementi è davvero difficoltosa in quanto sia siti dedicati che bot che la ricerca interna non sono proprio efficienti.
Di seguito una lista di alcuni canali Telegram da seguire se si è **sviluppatori** indie di **videogiochi** attraverso il motore di gioco **Unity**.
* Unity3D: [https://t.me/r\_Unity3D](https://t.me/r_Unity3D)
* GameDev Platform: [https://t.me/gamedevplatform](https://t.me/gamedevplatform)
* Unity Tips for Expert & Beginners Gamedev: [https://t.me/unitytipsdev](https://t.me/unitytipsdev)
* GameDev Pulse: [https://t.me/GameDEV](https://t.me/GameDEV)
* Everyday Unity: [https://t.me/everydayUnity](https://t.me/everydayUnity)
* 80 Level: [https://t.me/LevelEightyNews](https://t.me/LevelEightyNews)
Potrebbe interessarti anche:
----------------------------
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcanali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie%2F)
Login
---
# Come risolvere l'errore "Command PhaseScriptExecution failed with a nonzero exit code" durante la compilazione con XCode - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[iOS](https://www.crearevideogiochi.it/categoria/unity/ios/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore “Command PhaseScriptExecution failed with a nonzero exit code” durante la compilazione con XCode
========================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
12 Febbraio 2026
Durante la compilazione di un progetto **Unity** per iOS tramite **XCode** potrebbe “Command PhaseScriptExecution failed with a nonzero exit code” che purtroppo non indica in alcun modo il punto esatto di generazione dell’errore essendo generico.
Per visualizzare l’errore corrispondente è necessario inserire la stringa **\-LD64** negli “Other Linker Argument” (attenzione al – davanti alla stringa).

Ricompilando il progetto è quindi possibile capire quale sia l’errore che ha generato il fallimento della build.
Solitamente tale **errore** riguarda un **permesso** da assegnare al file process\_symbol.sh in quanto non può essere eseguito. Per risolverlo è possibile accedere, tramite Terminale, alla cartella principale del progetto Unity e lanciare il comando “chmod +x process\_symbols.sh”.
A questo punto è possibile ricompilare correttamente il progetto ed eseguire l’applicativo Unity sul dispositivo scelto.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
* [\
\
Pubblicare una build Unity tramite SteamPipeGUI di…](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-command-phasescriptexecution-failed-with-a-nonzero-exit-code-durante-la-compilazione-con-xcode%2F)
Login
---
# Aprire nativamente file GLTF e GLB in Unity (con supporto a compressione DRACO) - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Aprire nativamente file GLTF e GLB in Unity (con supporto a compressione DRACO)
===============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
13 Novembre 2025
I formati **GLTF** e **GLB** negli ultimi anni sono diventati di fatto uno standard nella visualizzazione sul web in quanto molto performanti ed ottimizzati, anche grazie alla **compressione DRACO**.
DI seguito la procedura per interpretare nativamente i file GLB e GLTF nell’editor di **Unity** (esattamente come se fosse on file FBX oppure OBJ):
* Accedere al Package Manager
* In alto a destra cliccare sul + e poi su “Install package by name”
* Installare uno dopo l’altro (in questo ordine) i seguenti pacchetti:
* com.unity.cloud.gltfast
* com.unity.cloud.draco
* A questo punto sarà possibile manipolare nell’editor di Unity i file GLB e GLTF, non compressi oppure compressi con DRACO
* Se necessario riavviare l’editor di Unity
* A questi links le guide dei due pacchetti installati:
* [https://docs.unity3d.com/Packages/com.unity.cloud.gltfast@6.14/manual/features.html](https://docs.unity3d.com/Packages/com.unity.cloud.gltfast@6.14/manual/features.html)
* [https://docs.unity3d.com/Packages/com.unity.cloud.draco@5.4/manual/index.html](https://docs.unity3d.com/Packages/com.unity.cloud.draco@5.4/manual/index.html)
Note
----
Per una differente gestione del file GLTF 2.0 è possibile utilizzare anche l’asset [UnityGLTF di KhronosGroup](https://github.com/KhronosGroup/UnityGLTF)
.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Faprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco%2F)
Login
---
# Disabilitare l'oscuramento dello schermo per inattività su dispositivi Android/iOS in giochi sviluppati con Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Disabilitare l’oscuramento dello schermo per inattività su dispositivi Android/iOS in giochi sviluppati con Unity
=================================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
31 Ottobre 2024
In alcuni contesti di videogiochi o applicazioni può essere necessario disabilitare l’**oscuramento** per **inattività** dello **schermo**, come ad esempio in cutscene, introduzioni o momenti in cui non vi è interazione con lo schermo da parte dell’utente.
Contrariamente a quanto si possa pensare, questa funzionalità non è presente di default nel comportamento di un applicativo compilato in **Unity**, ad esempio per **Android** o **iOS**, e va quindi gestito manualmente.
L’approccio più corretto risulta quindi quello di **disattivare** l’oscuramento dello schermo durante la sessione di gioco e ripristinarne il funzionamento di **sistema** una volta usciti dall’applicativo.
Per fare questo è necessario creare uno script che sia persistente tra le scene (DontDestroyOnLoad) e, sfruttando la funzione Awake() e la OnApplicationQuit(), gestire il comportamento, come nello script seguente:
public class PersistentManager : MonoBehaviour
{
private void Awake()
{
// Assicura che questo oggetto persista tra le scene
DontDestroyOnLoad(gameObject);
}
void Start()
{
#if UNITY_ANDROID || UNITY_IOS
Screen.sleepTimeout = SleepTimeout.NeverSleep;
#endif
}
void OnApplicationQuit()
{
#if UNITY_ANDROID || UNITY_IOS
Screen.sleepTimeout = SleepTimeout.SystemSetting;
#endif
}
}
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[0Likes](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fdisabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity%2F)
Login
---
# La MEGA-Guida italiana all'uso degli Addressables in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
La MEGA-Guida italiana all’uso degli Addressables in Unity
==========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
10 Aprile 2025
Quando si parla di Addressables in Unity si tende generalmente a considerarlo un argomento ostico e di difficile comprensione in quanto molto complesso nella configurazione, nella gestione e nella distribuzione degli Assets.
Tale funzionalità permette di spostare gli asset dalla build principale ad un pacchetto esterno (locale e/o remoto) al fine di poterlo aggiornare senza ricompilare la build ma anche per permettere una migliore gestione dei caricamenti e della distribuzione dei dati.
Di seguito proponiamo quindi una **guida passo-passo** all’implementazione degli **Addressables** in un progetto **Unity** nuovo, per principianti ma anche esperti che vogliono approfondire alcuni aspetti secondari dell’argomento.
La guida si basa sulla versione 2.3.16 del pacchetto Addressables e realizzata con Unity 6.000.0.43f1
In questo articolo
[Toggle](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/#)
Configurazione progetto e utilizzo degli Addressables
-----------------------------------------------------
#### Installazione
* Installare l’ultima versione disponibile del pacchetto **Addressables** di Unity tramite **Package Manager**
* I file di installazione degli Addressables si troveranno quindi ora in \\Assets\\AddressableAssetsData (utile per la **configurazione** del sistema è il file “AddressableAssetSettings.asset” in essa contenuto
#### Configurazione
* Tramite Windows -> Asset Management -> Addressables -> Groups creare un nuovo **gruppo** (ad esempio “Animations”), renderlo di default ed eliminare quello creato inizialmente da Unity.
* Verificare le impostazioni del gruppo tramite Inspector, soprattutto le due path LocalPath e RemotePath.
* Trascinare dentro il gruppo appena creato i propri assets. Per ogni asset selezionare poi la voce “Simplify Addressables Name” tramite tasto destro sull’asset stesso (questo renderà più semplice richiamare gli asset specifici tramite nome da codice).
* Creare uno **script** in Unity per inizializzare e verificare il **caricamento** di asset Addressables caricati in modo asincrono, nelle due modalità di seguito.
* **CARICAMENTO ASINCRONO TRAMITE REFERENCE**: Per caricare un Asset presente nel gruppo degli Addressables creare una variabile AssetReference nello script ed associare, tramite trascinamento, l’asset a cui è riferito direttamente dal gruppo Addressable. Eseguire quindi in modo asincrono la funzione **LoadAssetAsync** della reference stessa, come segue:
public class AddressableLoader : MonoBehaviour
{
// Riferimento all'Asset Addressable (ad esempio, un prefab)
public AssetReference assetReference;
// Start è un metodo sincrono, ma usiamo un metodo asincrono separato per caricare l'asset
async void Start()
{
// Carica l'asset in modo asincrono
await LoadAssetAsync();
}
// Metodo asincrono per caricare l'asset
private async Task LoadAssetAsync()
{
// Avvia il caricamento asincrono dell'asset
AsyncOperationHandle handle = assetReference.LoadAssetAsync();
// Attendi che il caricamento finisca
await handle.Task;
// Controlla se il caricamento è stato completato con successo
if (handle.Status == AsyncOperationStatus.Succeeded)
{
// Instanzia l'asset caricato nella scena
GameObject asset = handle.Result;
Instantiate(asset, Vector3.zero, Quaternion.identity);
}
else
{
Debug.LogError("Errore nel caricamento dell'asset.");
}
}
}
* **CARICAMENTO ASINCRONO TRAMITE NOME**: per poter caricare un asset tramite nome è possibile invece usare, nel modo del tutto analogo al precedente, la funzione Addressables.LoadAssetAsync al quale si passa il nome dell’Asset (il nome semplificato presente nel gruppo di appartenenza).
public class AddressableLoader : MonoBehaviour
{
// Indica l'ID dell'asset Addressable che vuoi caricare (ad esempio, il prefab)
public string assetAddress;
void Start()
{
// Carica l'asset asincronicamente
LoadAssetAsync();
}
// Metodo per caricare l'asset asincronicamente
private void LoadAssetAsync()
{
// Chiamata asincrona per caricare l'asset
AsyncOperationHandle handle = Addressables.LoadAssetAsync(assetAddress);
// Quando il caricamento è completato, gestiamo il risultato
handle.Completed += (op) =>
{
if (op.Status == AsyncOperationStatus.Succeeded)
{
// Instanzia l'asset caricato nella scena
GameObject asset = op.Result;
Instantiate(asset, Vector3.zero, Quaternion.identity);
}
else
{
Debug.LogError("Errore nel caricamento dell'asset.");
}
};
}
}
* Eseguendo il codice verrà avviato il caricamento dell’Asset desiderato ed, in questo caso, istanziato in scena.
#### Pubblicazione su server remoto
* E’ necessario ora procedere alla **pubblicazione** degli Addressables su **server remoto** e specificarne l’indirizzo in Unity. Per fare questo accedere a Window -> Asset Managaement -> Addressables -> Profiles e modificare il profilo di Default.
Nello specifico lasciare le impostazioni di Local su Built-in mentre modificare Remote impostandolo su Custom. A questo punto:
* Specificare il percorso di Remote.LoadPath con un indirizzo remoto (es: https://www.desdinova.it/TestAddressables/\[BuildTarget\] – E’ la directory in cui risiederanno Addressables e Catalog del progetto.
* Lasciare Remote.BuildPath impostata di base su ServerData/\[BuildTarget\] – E’ la directory presente nella cartella di progetto in cui verranno salvati gli Addressables e il Catalog da copiare successivamente nel percorso remoto.
* Accedere a Window -> Asset Management -> Addressables -> Settings e verificare che la voce Build & Load Paths sia impostata su Remote:
* Se necessario abilitare l’opzione “Enable Json Catalog” per rendere il file di Catalog su disco leggibile, anche se l’operazione genera un file più grande e non compresso.
* Verificare che sia abilitato “Build Remote Catalog”.
* Accedere agli Addressables Groups e aprire la tendina **Build** in alto a destra poi New Build > Default Build Script. Verranno generati immediatamente gli Addressables nella **directory** RemoteBuildPath (lasciata a ServerData\\\[BuildTarget\]) che andranno caricati in remoto sul server.
Questa procedura deve essere sempre eseguita ad ogni modifica degli Asset presenti negli Addressables, sia essa una modifica strutturale oppure solamente il colore di un materiale.
* A questo punto, compilando la build, il progetto accederà all’apertura degli Addressables direttamente da remoto. Qualora ci fossero problemi di configurazione del server o di percorsi, gli Assets non verranno caricati generando errori a runtime.
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
Note generali
-------------
#### Build di Addressables differenti per differenti piattaforme
E’ da tenere presente che Unity specifica, e predilige, l’impostazioni delle path con il suffisso \[**BuildTaget**\] in questo modo aiuta a discriminare eventuali build per altre **piattaforme**. Se si compila per web, quella sottodirectory avrà suffisso “**WebGL**” mentre per Windows avrà “**StandaloneWindows64**” e così via.
NOTA: E’ da ricordare come build per piattaforme differenti richiedano Addressables compilati in modo specifico, non è possibile utilizzare Addressables di una build WebGL tramite una build Windows.
#### Testare gli Addressables remoti in Editor locale
E’ bene indicare che eseguendo invece l’applicativo tramite il tasto Play nell’editor, il progetto utilizzerà gli Addressables Local e non quelli remoti. Per modificare questo comportamento accedere alla schermata Addressables Groups, cliccare sulla tendina Play Mode Script in alto a destra (a fianco di Build) e scegliere **Use Existing Build** (…) il quale permette di associare la build appena creata al **Play Mode** di Unity corrente potendo così testare gli Addressables remoti facilmente in editor (e verificare eventuali errori).
E’ da precisare che Use Existing Build non caricare gli Addressables buildati in locale nella directory locale del server perchè **questi file devono essere serviti via HTTP/S**, **non può caricare file locali (file://)** in Play Mode o runtime. Quindi i files andranno sempre copiati nelal directory remota specificata nel profilo.
Se si vuole fare in modo che il Play Mode utilizzi il file buildati per il server ma nelal directory locale allora impostare la directory di build come servita da un web server (es. IIS, Unity Hosting Service, Node.js, XAMPP, etc).
#### Conoscere il peso di download del singolo Asset
Se si vuole conoscere il peso del **download** di uno specifico Assets usare Addressables.GetDownloadSizeAsync(assetName) che in modo asincrono ritorna la **dimensione** dell’Asset in bytes. E’ da indicare che ritorna il peso complessivo del gruppo in cui è incluso l’asset e non solo l’Assets, a meno che non sia in un gruppo specifico.
La particolarità di questa funzione è che se l’Asset è già in cache il valore ritornato è 0 ed è quindi utile per vedere se un Asset è già stata caricato prima di quel momento oppure è fresco (vedere punto seguente).
#### Gestione della cache remota
E’ doveroso fare alcune considerazione sulla cache degli Addressables.
Per verificare se un file di Asset è realmente in cache la prima cosa che si può pensare è quella di cancellare tale **file** dal server remoto e quindi provare ad eseguire la chiamata a quell’Asset nuovamente. Purtroppo questo tentativo fallirà con degli errori in quanto non basta **cancellare** il solo file ma serve cancellare anche i files **Catalog** remoti (questo perchè Unity trova i files di catalogo, legge il GUID del bundle necessario ma non trovandolo genera errore). Il sistema di cache si attiva unicamente quando TUTTO il catalogo ed i suoi files non sono più presenti (o cambiati).
E’ per questo motivo che quando il sistema di build degli Addressable genera nomi di bundle nuovi mantiene comunque quelli vecchi in quanto potrebbero essere ancora in cache di qualche utilizzatore. E’ bene quindi non cancellare mai tali file dal server remoto oppure farlo in modo consapevole (ad esempio dopo una build che necessita una forzatura completa degli assets).
#### Vantaggi della compressione degli Asset
E’ da indicare quanto gli Addressables espongano un **vantaggio** indiretto: quello di essere **compressi** e quindi facilitare la distribuzione. Da alcuni test è possibile ad esempio individuare come una animazione di Unity (.anim) passi da 15MB a circa 300KB compressi, oppure da 130MB a 8MB. L’utilizzo degli Addressables quindi è consigliato anche solo per la gestione e la **distribuzione** di Asset di grandi dimensioni (per questo motivo ad esempio Nintendo Switch SDK consiglia l’utilizzo proprio degli Addressables di Unity per distribuire DLC).
Utilissimo per verificare la compressione dei dati è il tool Addressable **Report** (tab Explore) che si trova in Window > Assets Management > Addressables > Groups > Tools > Window > Addressable Reports.
#### MimeType degli Addressables del server remoto
Quando si usano gli Addressables in remoto è bene verificare di abilitare i seguenti **MimeType** sul **server** (verificare che non siano già presenti, in tal caso il server potrebbe generare un **errore 500** in quanto non contempla dichiarazioni doppie):
#### Problemi CORS sul browser nel richiamare gli Addressables remoti
Uno degli annosi problemi che spesso si riscontra nell’uso degli Addressables remoti è della complessità dovuta alla protezione [CORS (Cross-Origin Resource Share)](https://aws.amazon.com/what-is/cross-origin-resource-sharing)
. Per ovviare a questo problema è possibile specificare alcuni **header** del server in modo che vengano abilitate le **origini**, i **metodi** e le **autorizzazioni** necessarie (di default molto restrittive), ad esempio:
#### Aggiornare una build Addressables
Per eseguire una **build** degli **Assets** del progetto sono presenti due possibilità in Addressables Group > Build (in alto a destra). Di seguito indichiamo la **caratteristiche** di entrambe e quando usarle per ottimizzare il proprio lavoro e la distribuzione:
* **New Build -> Default Build Script**: da usare la prima volta che si generano gli Addressables e successivamente quando si vogliono rigenerare i cataloghi e quando si sono fatte modifiche strutturali agli Addressables (ad esempio nomi, gruppi, etc) – Tutti i client dovranno riscaricare tutti gli Asset necessari in quanto anche i contenuti non cambiati veranno rigenerati.
* **Build -> Update a Previous Build**: da usare quando si fanno aggiornamenti leggeri (si cambia un materiale, si aggiunge una animazione, etc) e quando si vuole risparmiare banda/caricamenti sul client – Genera solo bundle nuovi o aggiornati creando un nuovo catalogo permettendo aggiornamenti incrementali e leggeri (in produzione).
#### Accenti nei nomi degli Addressables in una build Release
Può capitare la necessità di gestire nomi di Addressables con accenti. Per una migliore gestione della nomenclatura interna (quindi unicamente usata dal sistema) è possibile specificare che il catalogo usi nomi basati su GUID e non Full Path (default), oppure Dynamic.
Per fare questo accedere al file di configurazione **Addressables Asset Settings > Catalog > Internal Asset Naming Mode > GUID (oppure Dynamic).**
Questa proprietà permette di far usare al sistema nomi interni numerici e non testuali aumentando anche il fattore di compressione del buildato finale (per questo motivo consigliato in un profilo Release e non di sviluppo).
Addressables in un progetto WebGL
---------------------------------
#### Gestione della cache in una build WebGL
Per quanto riguarda build in **WebGL** è doveroso riportare alcuni **metodi** che purtroppo non funzionano (generando errori) in quanto WebGL usa un sistema di **cache** del **browser** e non locale alla build (non avendo accesso a filesystem del dispositivo):
* Caching.ClearCache() – ed in generale tutte le funzioni della classe Caching.
* Addressables.CleanBundleCache()
* Addressables.ClearDependencyCacheAsync(…)
In questi casi è quindi consigliato utilizzare la **direttiva** di **compilazione** _if !UNITY\_WEBGL_ per aggirare problemi di supporto alle funzionie in una build WebGL.
#### Configurazione della memoria in una build WebGL
Di default il valore della **memoria minima** usata da WebAssembly riservata alle sue operazioni è di 32MB, oggettivamente troppo pochi per la memorizzazione di Addressables. Per questo motivo è consigliato impostare la memoria minima usata da **WebAssembly** in un progetto WebGL ad un valore di **256MB**. Se sono presenti grandi files come video o animazioni è bene considerare di portarlo anche a 512MB.
Il parametro lo si trova in Edit -> Project Settings -> Player -> Publishing Settings -> WebAssembly Language Features -> Initial Memory Size (MB)
#### Gestire l’errore “RangeError: Maximum call stack size exceeded” all’avvio di una build WebGL
Durante la lavorazione di un progetto WebGL che implementa gli Addressables può capitare (non così raramente) di imbattersi nell’errore del browser “RangeError: **Maximum call stack size exceeded**“. Si tratta di un errore generico ed è legato a **conflitti** che avvengono a livello di **cache**. Spesso è legato alla creazione di una “Update a Previous Build” e non ad una “New Build”.
Per risolvere il problema è necessario vagliare le seguenti **soluzioni**:
* Aumentare la memoria minima di WebAssembly (vedere paragrafo precedente).
* Verificare che in Edit -> Project Settings -> Player -> Publishing Settings -> Decompression Fallback sia disattivato.
* Cancellare manualmente la cache della pagina che da problemi, direttamente dal browser (premere Ctrl+F5).
* Nei DevTools del browser accedere a Application -> Storage -> IndexedDB -> UnityCache e cliccare il pulsante Delete Database.
* Nei DevTools del browser accedere a Application -> Storage -> Cache Storage ed eliminare il file corrispondente al progetto incriminato (tasto destro -> Delete). Solitamente inizia con “UnityCache\_…”
* In ultima istanza eseguire un “Clean Build” degli Addressables invece di un Update.
#### Gestire l’errore “Error while downloading Asset Bundle: CRC Mismatch. Provided 4644c445, calculated f8db947d from data. Will not load AssetBundle”
Questo errore viene generato quando non vi è più corrispondenza tra il catalogo Addressables compilato e quello che l’applicativo si aspetta di caricare. Spesso succede quando si modificano delle impopstazioni di base del catalogo. La soluzione è quella di eseguire il comando “Clear Build Cache > All”, ribuildare gli Addressables ed eventualmente ribuildare l’applicativo.
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[0Likes](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fla-mega-guida-italiana-alluso-degli-addressables-in-unity%2F)
Login
---
# Usare AdsMediation LevelPlay (ex ironSource) di Unity per gestire gli annunci in-game su Android - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Usare AdsMediation LevelPlay (ex ironSource) di Unity per gestire gli annunci in-game su Android
================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
23 Settembre 2025
Era il 2022 quando Unity concludeva l’acquisizione del servizio **ironForce** per la gestione della **monetizzazione** in-game in applicativi sviluppati con il proprio editor.
Ad oggi il servizio è chiamato LevelPlay Ads Mediation e presenta una dashboard di creazione degli annunci in modo semplice, strutturato e integrato. Il sistema di Advertising fino ad ora usato per Unity diventa quindi deprecato e non riceverà più alcun supporto.
In questo articolo riportiamo una guida esaustiva per **configurare** il nuovo servizio **AdsMediation** LevelPlay di Unity (ex ironSource) che permette una migliore gestione degli **annunci** in game.
Ecco i passaggi:
* Verificare di avere un account Unity Level Play (ex ironSource) accedendo tramite [questo link](https://unity.com/products/levelplay)
eseguendo il servizio dedicato nella Dashboard di Unity.
* Connettere Unity Ads Monetization (il vecchio sistema di Unity) al nuovo account LevelPlay, utilizzando [questa guida](https://developers.is.com/ironsource-mobile/unity/unityads-mediation-guide/#step-3)
per reperire “Organization core ID” e “API Key” di Unity. A questo punto vedrete i dati del primo servizio nel secondo appena creato.

* In editor di Unity accertarsi di essere sulla Build per piattaforma Android
* Disinstallare qualsiasi pacchetto (tramite Package manager) riguardante la gestione di Ads di Unity
* Installare tramite Package Manager il pacchetto Ads Mediation (in questo esempio la versione 9.0.0)
* Non installare il Resolve Mobile Manager che viene proposto di configurare al termine dell’installazione del pacchetto
* Verificare che ci sia una cartella Assets\\Plugins\\Android, se non presente crearla (vuota); se è presente svuotarla completamente (senza cancellarla).
* In Edit > Project Setting > Player > Publish Settings verificare che “Custom Main Gradle Template” e “Custom Gradle Properties Template” siano abilitate
* Installare tramite il Package Manager il pacchetto esterno Git (tramite pulsante + in alto a sinistra) a questo indirizzo: [https://github.com/googlesamples/unity-jar-resolver.git?path=upm](https://github.com/googlesamples/unity-jar-resolver.git?path=upm)
* In Assets > External Dependency Manager > Android Resolver eseguire il comando “Force Resolve” (attendere oltre il completamento del 100%, che rimarrà in esecuzione ancora qualche istante per installare ulteriori componenti, verrà mostrata una piccola schermata di compeltamento con successo)
* Per l’implementazione del nuovo sistema di Ads in-game consultare [la guida](https://developers.is.com/ironsource-mobile/unity/levelplay-starter-kit/)
di Unity.
In [questa nostra guida](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
un è riportata l’implementazione di un componente di gestione banner interstiziali.
Risoluzione dei problemi
------------------------
* Errore “Mediation No fill”: l’errore è causato dal fatto che il proprio account non è ancora stato registrato correttamente dal sistema oppure verificato dal team di Unity, attendere qualche giorno, ed eventualmente attendere la verifica completa; alternativa potrebbe essere che si sta eseguendo in produzione il sistema di advertising in modalità di test.
* Errore di Gradle file duplicato “:launcher:checkReleaseDuplicateClasses”: eliminare uno dei due files che generano la duplicazione (hanno nomi differenti ma si riferiscono allo stesso elemento), preferibilmente lasciare esistente quello di Ads Mediation x.0.0
* Per ulteriori problemi sul pacchetto Gradle provare a cancellare i files temporanei e di cache di Unity, aprire nuovamente il progetto ed eseguire nuovamente il comando In Assets > External Dependency Manager > Android Resolver > Force Resolve
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Visualizzare un Interstitial ADS di Unity Level Play…](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Likes](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fusare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android%2F)
Login
---
# Configurare una app Android che legge file Excel in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Configurare una app Android che legge file Excel in Unity
=========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
22 Aprile 2025
In questo articolo
[Toggle](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/#)
### **Scegliere il template Unity: 2D (URP) o 2D Core**
Poiché la tua app mostra dati in una tabella e non necessita di grafica 3D complessa, **il template 2D è la scelta migliore** per alcuni motivi:
* Ottimizzato per UI e interfacce senza overhead di rendering 3D
* Ha il Canvas già pronto per l’UI
* Leggero e più veloce su dispositivi Android
Se vuoi un’interfaccia semplice e leggera → **2D Core** è sufficiente. Se non hai bisogno di effetti avanzati, rimani su 2D Core per un progetto più leggero.
Se vuoi un design più moderno, con luci ed effetti dinamici → **2D URP** è la scelta migliore. Se invece vuoi UI con effetti grafici professionali, scegli 2D URP.
### **Impostazioni del progetto**
Apri **File > Build Settings** e seleziona:
* **Piattaforma:** Android → Clicca su “Switch Platform”.
* **Target API Level:** Imposta una versione compatibile con la maggior parte dei dispositivi (es. Android 7.0 o superiore).
Ora vai in **Edit > Project Settings > Player** e imposta:
* **Resolution and Presentation:**
* Default Orientation → **Portrait**
* Allowed Orientations → Spunta solo **Portrait** e/o **Portrait Upside Down** (se vuoi supportarlo)
* * *
### **Configurare il Canvas per adattarsi a tutti gli schermi**
Per rendere l’interfaccia scalabile su qualsiasi dispositivo Android:
1. **Aggiungi un Canvas** (se non è già presente).
2. Imposta il **CanvasScaler** su:
* **UI Scale Mode:** **Scale With Screen Size**
* **Reference Resolution:** Ad esempio, **1080×1920** (risoluzione portrait standard).
* **Screen Match Mode:** **Match Width Or Height**
* **Match:** Mettilo su **0.5** per un adattamento equilibrato tra larghezza e altezza.
3. Per ogni **UI Element**, usa:
* **Anchor Points** dinamici (es. **Stretch** per elementi che devono riempire lo schermo).
* **Pivot** e **Positioning** relativi per evitare posizionamenti assoluti.
* * *
### **Supporto per diversi schermi Android**
Dato che i dispositivi Android hanno rapporti di aspetto diversi (16:9, 18:9, 21:9 ecc.), evita di usare posizioni assolute per i tuoi elementi UI. Quindi:
* Usa **Layout Groups** per gestire spaziatura e allineamento automatico.
* Testa la UI con il **Device Simulator** (finestra **Game > Device**).
### **Installare NPOI**
La libreria NPOI per caricare file Excel non è inclusa di default in Unity, quindi è necessario scaricarla:
* Vai su **[NuGet Gallery – NPOI](https://www.nuget.org/packages/NPOI)
**
* Scarica il file **.nupkg** (ad esempio, l’ultima versione disponibile)
Il file **.nupkg** è un archivio ZIP. Devi estrarre le DLL necessarie:
* **Rinomina** il file `.nupkg` in `.zip`
* **Estrai il contenuto** con WinRAR, 7-Zip o Esplora Risorse
* Dentro la cartella estratta, vai in:
* **lib/netstandard2.1/** oppure **lib/net452/**
* Prendi i file **NPOI.dll**, **NPOI.OOXML.dll**, **NPOI.OpenXml4Net.dll**, **SharpZipLib.dll**
* Crea una cartella **Plugins** nella cartella **Assets** (se non esiste già)
* Copia dentro **tutte le DLL estratte**
Per configurare NPOI è necessario:
* Seleziona le DLL dentro Unity (**Assets/Plugins**)
* Nel **Inspector**, imposta Any Platform
**Se hai errori di compatibilità**, prova a usare le versioni di **NPOI per .NET 4.5.2 o NET Standard 2.0**, perché Unity 2021+ supporta solo certe versioni .NET.
Se stai cercando di usare **NPOI** tramite NuGet in Visual Studio, devi installare i pacchetti corretti tramite il **NuGet Package Manager**. Ecco come farlo:
Aggiungi il pacchetto NuGet di NPOI:
1. In Visual Studio, clicca con il tasto destro sulla soluzione nel pannello **Esplora Soluzioni**.
2. Seleziona **Gestisci pacchetti NuGet per la soluzione**.
3. Vai alla scheda **Sfoglia** e cerca **NPOI**.
4. Seleziona il pacchetto **NPOI** e clicca su **Installa**.
In alternativa, puoi usare il **Package Manager Console** di Visual Studio per eseguire il comando:
`Install-Package NPOI`
Questo installerà le librerie NPOI direttamente nel progetto Visual Studio. Se Visual Studio non trova NPOI, prova a forzare Unity a ricreare i riferimenti:
* Vai su Edit > Preferences > External Tools
* In Generate .csproj files for, abilita “Registry Packages” e “Local Packages”
* Cancella la cartella `Library/` del progetto
* Chiudi e riapri Unity
* Apri lo script con “Open C# Project” (dal menu Assets > Open C# Project)
Ora Visual Studio dovrebbe riconoscere la libreria NPOI.
A questo punto riferisciti alla guida di NPOI, motlo semplice, per aprire un file Excel in C# con Unity.
Potrebbe interessarti anche:
----------------------------
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
[0Likes](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fconfigurare-una-app-android-che-legge-file-excel-in-unity%2F)
Login
---
# Alcune cose che dovresti sapere se utilizzi Unity 3D per sviluppare videogiochi - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Alcune cose che dovresti sapere se utilizzi Unity 3D per sviluppare videogiochi
===============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
30 Dicembre 2021
\[ELENCO IN COSTANTE AGGIORNAMENTO\]
Di seguito una _lista non ordinata_ di alcuni concetti con cui mi sono scontrato durante l’utilizzo di Unity 3D per lo sviluppo di videogiochi o simulazioni. Non vuole essere una lista esaustiva ne tanto meno una lista per esperti. Va considerata una lista per chi si approccia a Unity e riscontra dubbi, perplessità a problemi in alcuni aspetti dello sviluppo.
Gli argomenti trattati spaziano dall’editor alla fase di Game, dallo script al motore fisico passando dall’import dei modelli fino alla mappatura dei materiali.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/#)
Colliders e Centro di Massa
---------------------------
In GameObject con più di un collider triggerato, di cui uno di tipo Sphere, può succedere che il centro di massa del Rigidbody associato cambi valore continuamente. Questo genera spostamenti non voluti ed incontrollati del Rigidbody.
Il consiglio è di usare solo colliders di tipo Box quando possibile.
Motore fisico 2D e 3D
---------------------
Il motore fisico 3D è chiamato Physics, il motore fisico 2D è invece chiamato Box2D.
I due sistemi sono atomici l’uno rispetto all’altro e non possono interagire tra di loro.
Possono invece coesistere.
Debug del motore fisico
-----------------------
E’ possibile eseguire il debug runtime del motore fisico, osservando in Game i colliders, accedendo al debugger del motore tramite il menu Windows -> Analysis -> Physics Debug. Avere cura di abilitare poi la voce Force Overdraw per un debug più efficace.
StartCoroutine e StopCoroutine
------------------------------
Funzioni fondamentali, StartCoroutine() e StopCoroutine() richiedono come parametro il nome della funzione da eseguire, il modo più semplice ed efficace per eseguirle, per mantenere leggibilità e intellisense, è il seguente:
StartCoroutine(Method\_Enumerator(param1, param2, param3…));
StopCoroutine(nameof(Method\_Enumerator));
Conversione di parametri String in Float provenienti dall’editor
----------------------------------------------------------------
Per uno script MonoBehaviour il quale ha esposto un parametro String per l’editor che deve essere convertito in Float nello script, il metodo da utilizzare è quello di passare la Culture di tipo Invariant al metodo Convert in quanto preserva il valore con il punto (definendo la parte decimale) ma sopratutto consente uniformità tra le misure usate in Unity.
Nell’esempio sottostante editorValue viene specificato come “0.1” (notare il punto e non la virgola) nella finestra dell’editor, ma:
float convertedValue1 = Convert.ToSingle(editorValue) ritorna: 0.0f
float convertedValue2 = Convert.ToSingle(editorValue, System.Globalization.CultureInfo.InvariantCulture) ritorna: 0.1f
Import di modelli da software di modellazione 3D (Maya, 3ds Max, Blender…)
--------------------------------------------------------------------------
Durante la fase di export verificare che gli assi siano congrui con quelli di Unity:
* X rosso verso destra
* Y verde verso l’alto
* Z blu verso l’orizzonte
Verificare inoltre le unità di misura. Spesso non coincidono in quanto in Unity 1 corrisponde ad un metro mentre, ad esempio, in Maya 1 corrisponde ad un centimetro. Una volta importato il modello in Unity, selezionarlo e provare a disabilitare la seconda casella che riguarda la conversione automatica delle unità di misura.
Il consiglio è di utilizzare come file di interscambio il formato .FBX che include sia la definizione dei materiali a livello di facce della mesh che le animazioni. Esporta inoltre luci e camera (che in realtà potrebbero essere di troppo).
Per la cronaca, Unity può gestire senza problema i file .blend di Blender.
Abilitare l’autocomplete (intellisense) per Visual Studio
---------------------------------------------------------
Può capitare che l’editor Visual Studio non riconosca l’auto-completamento (o intellisense) degli oggetti principali. La soluzione è possibile trovarla [qui](https://www.danieleferla.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/)
.
Update vs FixedUpdate
---------------------
Update() e FixedUpdate() sono richiamate all’interno del flusso di esecuzione. E’ bene sapere che Update() deve essere utilizzato quando si interroga il sistema di Input (in quanto viene eseguito in modo atomico e sequenziale), mentre FixedUpdate() quando si eseguono operazioni che coinvolgono movimenti e interazioni con il motore fisico (velocità, collisioni, posizioni, etc). In [questo articolo](https://docs.unity3d.com/Manual/ExecutionOrder.html)
l’ordine di esecuzione ufficiale.
Time.DeltaTime vs Time.FixedDeltaTime
-------------------------------------
Spesso si trova indicato DeltaTime oppure FixedDeltaTime, il primo usato in Update() e il secondo in FixedUpdate(), in realtà il consiglio è di usare sempre Time.DeltaTime in quanto la variabile assume il valore corretto in base alla funzione in cui si trova. [Qui](https://docs.unity3d.com/ScriptReference/Time-fixedDeltaTime.html)
viene indicato chiaramente nella guida di Unity.
Di seguito un video molto esplicativo sull’uso generico di DeltaTime : [https://www.youtube.com/watch?v=vZyvdm4I0uc](https://www.youtube.com/watch?v=vZyvdm4I0uc)
Uso efficiente del metodo GetComponent
--------------------------------------
Il metodo GetComponent è uno dei più onerosi in termini di prestazioni e va usato solo nelle funzioni di Awake o Start. Qualora comunque si voglia usarlo in altri contesti è bene utilizzare la sua versione GetComponent() invece delle due GetComponent(string) o GetComponent(tyepof(T)).
Evitare l’allocazione del GetComponent
--------------------------------------
Qualora si voglia utilizzare la funzione GetComponent è bene indicare che il ritorno di tale funziona allocca un oggetto che dovrà essere verificato ( != null). E’ bene quindi prendere l’abitudine di usare invece TryGetComponent(out Component comp)
Confronto di GameObjects a null
-------------------------------
Il confronto a null di un GameObject può essere eseguito sia con gameObject = null oppure con System.Obejct.ReferenceEquals(gameObject, null). La seconda soluzione sembra essere quella più performante, anche se veramente di poco. Il consiglio è di usare quella più comoda.
Rimuovere le callback vuote
---------------------------
Le funzioni di calback più usato nei GameObject sono Awake(), Start(), Update() e FixedUpdate(). Se nel GameObejct corrente non è necessario implementarle, il consiglio è quello di rimuoverle al fine di non farle eseguire. Seppur vuote il tempo di esecuzione può comunque fare la differenza.
Duplicare elementi (CTRL+D)
---------------------------
Per duplicare qualsiasi elemento (ad esempio una materiale, una cartella di un materiale, un prefab, etc) è consigliato usare la funzione Duplica accessibile con CTRL+D e non il copia incolla CTRL+C / CTRL-V, in quanto si potrebbe incorrere in duplicazione di GUID associati agli alementi da duplicare.
Snap di elementi per renderli modulari (tasto V)
------------------------------------------------
E’ possibile decidere il vertice di cui fare lo snap sulla griglia premendo, e tenendo premuto, il tasto V e muovendo poi l’elemento sulla griglia.
Confronto della proprietà .tag
------------------------------
Se si rende necessario il confronto della proprietà .tag di un GameObject (situazione abbastanza usuale in realtà) è bene utilizzare il metodo .CompareTag(“mio tag”) e non .tag = “mio tag” in quando la prima funziona non allocca memoria, mentre la seconda si.
Flickering di mesh complanari e Clipping Planes
-----------------------------------------------
Può capitare di notare un effetto di flickering di due mesh che collidono tra loro. Questo disturbo è dato dal conflitto di arrotondamento dei floating point. Per risolvere questo fastidioso problema basta aggiustare il valore del Near Clipping Plane (solitamente impostato a 0.01) della Camera corrente. Tale valore dipende da motli fattori quindi il consiglio è di provare diversi valori, anche a runtime, prima di eliminare il disturbo.
Addressables: build di versioni differenti
------------------------------------------
Compilazioni per piattaforme differenti (es: Windows, iOS, Android) richiedono build di addressables differenti. Questo perché soprattutto gli shader dei materiali richiedono funzionalità specifiche delle piattaforma e quindi direttive differenti di compilazione. Oggettivamente questo crea complessità di rilascio anche se la generazione di tali addressables (e il loro update) è ben differenziato da Unity per le diverse piattaforme, in directory diverse, specificate con il parametro /\[BuildTarget\]
Formule matematiche nell’inspector
----------------------------------
Per calcoli veloci riguardanti i parametri di un GameObject esposti nell’inspector, è possibile scrivere direttamente nella casella di parametro semplici formule matematiche ed ottenere immediatamente il risultato. Ad esempio “100/2.5” (senza il simbolo di = davanti alla formula).
Gestione input da tastiera per build WebGL
------------------------------------------
Unity di default cattura completamente ed unicamente gli input del canvas della build WebGL indipendentemente dal focus delle caselle di testo HTML. Per disabilitare questa funzionalità è possibile usare la proprietà static [WebGLInput.captureAllKeyboardInput](https://docs.unity3d.com/6000.0/Documentation/ScriptReference/WebGLInput-captureAllKeyboardInput.html)
impostandola a false. In questo modo si potranno ricevere input da tastiera da tutti i componenti HTML presenti nella stessa pagina del canvas WebGL di Unity.
On-demand rendering per ottimizzazione delle interfacce e dei menu su mobile
----------------------------------------------------------------------------
Non è sempre auspicabile eseguire il rendering di un progetto al frame rate più alto possibile specialmente su piattaforme mobile. Solitamente si utilizza Application.targetFrameRate o Vsync count per limitare la velocità di rendering di Unity. Questo approccio non ha impatto solo sul rendering, ma anche sulla frequenza con cui viene eseguita ogni parte di Unity. La API di [rendering on-demand](https://unity.com/blog/technology/how-on-demand-rendering-can-improve-mobile-performance)
consente di disaccoppiare la frequenza di rendering dalla frequenza del loop del player, permettendo di saltare i frame di rendering mentre si esegue il resto del loop del player ad alta frequenza. Bypassare il rendering può portare a notevoli risparmi di prestazioni e di energia, pur consentendo all’applicazione di rispondere agli eventi touch e ottimizzando ad esempio l’esecuzione di menu oppure giochi a turni.
Ottimizzazione delle animazioni
-------------------------------
Quando si utilizzano intensivamente animazioni di Unity è necessario chiedersi quanto queste possano essere ottimizzate trovando il giusto compromesso tra peso e risultato estetico. Unity mette a disposizione tre possibilità compressioni delle animazioni (da impostare durante l’import e non successivamente): Off, Keyframe Reduction, Optimal. Per una analisi approfondita ed esempi di risultati consultare [questo articolo](https://techarthub.com/animation-compression-unity/)
.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Come contribuiscono i Collider tra padre e figli…](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Calcolare le proprietà di una camera ortogonale di…](https://www.crearevideogiochi.it/calcolare-le-proprieta-di-una-camera-ortogonale-di-unity-affinche-visualizzi-sempre-specifici-oggetti-in-scena/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[0Likes](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Falcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi%2F)
Login
---
# Cubettiny - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cubettiny/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cubettiny/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cubettiny/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
Cubettiny
=========

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
29 Dicembre 2021
**Nome del gioco**: Cubettiny
**Sviluppatore:** Desdinova
**Componenti del team**: 2
**Link**: [www.cubettiny.com](https://desdinovadev.itch.io/cubettiny)
**Piattaforme**: PC
**Motore**: Unity
**Genere**: Puzzle action
**Stato**: In sviluppo – DEMO disponibile
**Descrizione**:
Preparati a un viaggio cubico senza freni!
In Cubettiny, il tuo obiettivo è raccogliere cubi gialli, evitare i cubi rossi e gestire strategicamente i tuoi punti per superare ogni livello. Ogni ambientazione offre sfide diverse: dai corridoi di castelli medioevali ai paesaggi innevati, con ostacoli che metteranno alla prova i tuoi riflessi. Sfrutta i power-up, raccogli i cubi a catena e guadagna medaglie completando obiettivi sempre più impegnativi.
Con ambientazioni stravaganti, obiettivi unici e un gameplay che premia sia il coraggio che la strategia, Cubettiny è il mix perfetto di adrenalina e divertimento.
Il design del gioco Cubettiny (meccaniche, gameplay e storia) è stato creato utilizzando l’intelligenza artificiale mentre lo sviluppo (programmazione, design dei livelli e grafica) è stato realizzato da persone in carne ed ossa.
Cubettiny – A game by AI by Desdinova
[](https://www.crearevideogiochi.it/wp-content/uploads/2025/01/11-01-2025_11-26-45-Full.png)
[](https://www.crearevideogiochi.it/wp-content/uploads/2025/01/11-01-2025_11-26-57-Full.png)
[](https://www.crearevideogiochi.it/wp-content/uploads/2025/01/11-01-2025_11-26-11-Full.png)
[](https://www.crearevideogiochi.it/wp-content/uploads/2025/01/11-01-2025_11-31-30-Full.png)
Potrebbe interessarti anche:
----------------------------
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
GGWG: Goose Game Without Goose](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Ottimizzare l'uso e la scrittura delle Coroutine di…](https://www.crearevideogiochi.it/ottimizzare-luso-e-la-scrittura-delle-coroutine-di-unity-attraverso-le-action/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[0Likes](https://www.crearevideogiochi.it/cubettiny/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cubettiny/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcubettiny%2F)
Login
---
# I giochi Meta Quest 3 che dovresti giocare almeno una volta - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
I giochi Meta Quest 3 che dovresti giocare almeno una volta
===========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
29 Settembre 2025
In questo articolo riportiamo una **lista**, in continuo aggiornamento, di **videogames** per **Meta Quest3** che vale la pena provare almeno una volta con il proprio **visore** VR. Una lista con giochi di musica, strategici, in AR oppure sparatutto frenetici… per tutti i gusti.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/#)
Maestro
-------

[MAESTRO: DOWNLOAD](https://www.meta.com/it-it/experiences/maestro/6963344583787383/)
Moss
----

[MOSS: DOWNLOAD](https://www.meta.com/it-it/experiences/moss/1654565391314903/)
The Climb 2
-----------

[THE CLIMB 2: DOWNLOAD](https://www.meta.com/it-it/experiences/the-climb-2/2617233878395214/)
Underworld Overseer
-------------------

[UNDERWORLD OVERSEER: DOWNLOAD](https://www.meta.com/it-it/experiences/underworld-overseer/7249464208476495/)
Batman: Arkham Shadow
---------------------

[BATMAN ARKHAM SHADOW: DOWNLOAD](https://www.meta.com/it-it/experiences/batman-arkham-shadow/3551691271620960/)
* * *
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
Superhot VR
-----------

[SUPERHOT VR: DOWNLOAD](https://www.meta.com/it-it/experiences/superhot-vr/1921533091289407/)
Beat Saber
----------

[BEAT SABER: DOWNLOAD](https://www.meta.com/it-it/experiences/beat-saber/2448060205267927/)
A Knight in the Attic
---------------------

[A Knight in the Attic: DOWNLOAD](https://www.meta.com/it-it/experiences/a-knight-in-the-attic/4297523073681259/)
Down the Rabbit Hole
--------------------

[Down the Rabbit Hole: Download](https://www.meta.com/it-it/experiences/down-the-rabbit-hole/2476104599150595/)
Smash Drums
-----------

[Smash Drums: download](https://www.meta.com/it-it/experiences/smash-drums/3630025217090808/)
Ghost Town
----------

[Ghost Town: Download](https://www.meta.com/it-it/experiences/ghost-town/9531494193591052/)
Dungeons of Eternity
--------------------

[Dungeons of Eternity: Download](https://www.meta.com/it-it/experiences/dungeons-of-eternity/6341779295861881/)
Wall Town Wonders
-----------------

[Wall Town Wonders: Download](https://www.meta.com/it-it/experiences/wall-town-wonders/6103056399797843/)
Demeo
-----

[Demeo: Download](https://www.meta.com/it-it/experiences/demeo/3634830803298285/)
* * *
Acquista META QUEST 3 con 30€ di credito giochi
grazie a CREARE VIDEOGIOCHI
-----------------------------------------------------------------------------
Sei indeciso se acquistare il tuo visore META QUEST 3?
Utilizzando questo link di invito prima di acquistarlo, riceverai immeditamente un credito
di **30€** per scaricare i tuoi primi giochi e app dallo store!
[CLICCA PER RICEVERE L’INVITO](https://www.meta.com/referrals/link/desdinova/)
Potrebbe interessarti anche:
----------------------------
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [")\
\
Le esperienze in VR per Meta Quest 3/3S che dovresti…](https://www.crearevideogiochi.it/le-esperienze-in-vr-per-meta-quest-3-3s-che-dovresti-far-provare-a-tuo-padre-e-tua-madre-di-oltre-60-anni-e-non-solo/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
* [\
\
Visualizzare e selezionare oggetti Cast Shadow =…](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/)
* [\
\
Asset e componenti indispensabili per lo sviluppo di…](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fi-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta%2F)
Login
---
# I migliori asset Unity per sviluppatori indie presenti sull'Asset Store nel 2025 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
I migliori asset Unity per sviluppatori indie presenti sull’Asset Store nel 2025
================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
1 Gennaio 2025
Tutti gli sviluppatori **Unity** conoscono bene l’**Asset Store** in quanto fonte inesauribile di componenti e asset utili nella creazione di applicativi e **videogiochi**. Gratuiti o a pagamento che siano, sono presenti migliaia di elementi sullo store e spesso è anche solo difficile trovare quello che fa al caso giusto.
DI seguito una **lista** dei migliori componenti presenti sull’Asset Store di Unity pronta per il 2**025**.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/#)
Animancer Pro – Sistema di animazione alternativo all’Animator per la riproduzione di animazioni on-demand
----------------------------------------------------------------------------------------------------------

[ANIMANCER PRO – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fanimation%2Fanimancer-pro-293522)
On Rails Shooter System – Sistema completo per la realizzazione di videogiochi su binari
----------------------------------------------------------------------------------------

[ON RAILS SHOOTER SYSTEM – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftemplates%2Fsystems%2Fon-rails-shooter-system-73628%23reviews)
Social Network Screenshot Creator – Componente per la generazione on-click di screenshot pronti per la condivisione sui social networks
---------------------------------------------------------------------------------------------------------------------------------------

[SOCIAL NETWORK SCREENSHOT CREATOR – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fsocial-network-screenshot-creator-295455)
Advanced Edge Detection – Shader per la generazione dei bordi delle mesh in modo artistico
------------------------------------------------------------------------------------------

[ADVANCED EDGE DETECTION – download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Fadvanced-edge-detection-262863)
Wireframe Shader – Potente shader per la visualizzazione wireframe delle mesh
-----------------------------------------------------------------------------

[wireframe shader – download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Fwireframe-shader-181386)
MK Toon Stylized Shader – Toon shader flessibile per la renderizzazione di effetti cartoon e anime
--------------------------------------------------------------------------------------------------

[mk tOON sTYLIZED shADER – download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Fmk-toon-stylized-shader-178415)
vFolders 2 – Asset per organizzare le cartelle in colori, icone e bookmarks
---------------------------------------------------------------------------

[vFOLDERs 2 – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fvfolders-2-255470)
Pro Camera 2D – Sistema di integrazione camera 2D e 2.5D avanzato e pronto all’uso
----------------------------------------------------------------------------------

[PRO CAMERA 2D – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2F2d%2Fpro-camera-2d-the-definitive-2d-2-5d-camera-plugin-for-unity-42095)
Adventure Creator – Sistema completo per la realizzazione la gestione di avventure grafiche con dialoghi e puzzle
-----------------------------------------------------------------------------------------------------------------

[ADVENTURE CREATOR – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgame-toolkits%2Fadventure-creator-11896)
Lattice Modifier – Deformatore di mesh statiche e skinned per la creazione di animazioni fisiche
------------------------------------------------------------------------------------------------

[LATTICE MODIFIER – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fanimation%2Flattice-modifier-for-unity-293850)
DeepVoice AI – Componente Text-to-Voice per l’integrazione di parlato generato con intelligenza artificiale (95+)
-----------------------------------------------------------------------------------------------------------------

[DEEPVOICE AI – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgenerative-ai%2Fdeepvoice-ai-text-to-voice-251738)
Infinite Runner Engine 3D – Sistema completo per la creazione di giochi di tipo ‘infinite runner’
-------------------------------------------------------------------------------------------------

[INFINITE RUNNER 3D – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftemplates%2Fsystems%2Finfinite-runner-engine-3d-60326)
Feel – Sistema dinamico di feedback ed effetti grafici
------------------------------------------------------

[FEEL – DOwnload](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fparticles-effects%2Ffeel-183370)
A\* Pathfinding Project Pro – Sistema di pathfinding avanzato ottimizzato per grandi mappe e ostacoli dinamici
--------------------------------------------------------------------------------------------------------------

[A° PATHFINDING PROJECT PRO – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fbehavior-ai%2Fa-pathfinding-project-pro-87744)
Behaviour Designer – Sistema di creazione alberi comportamentali per l’Intelligenza Artificiale
-----------------------------------------------------------------------------------------------

[Bahaviour Designer – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fvisual-scripting%2Fbehavior-designer-behavior-trees-for-everyone-15277)
Mesh Slicer – Componente per tagliare a runtime mesh arbitrarie con gestione dei buchi interni e della fisica
-------------------------------------------------------------------------------------------------------------

[MESH SLICER – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fmodeling%2Fmesh-slicer-59618)
Shapes – Libreria per disegnare grafica vettoriale in realtime
--------------------------------------------------------------

[SHAPES – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fparticles-effects%2Fshapes-173167)
Salsa Lipsync – Sistema di sincronizzazione viso, espressioni ed emote
----------------------------------------------------------------------

[SALSA LYPSYNC DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fanimation%2Fsalsa-lipsync-suite-148442)
GUI Pro: Casual Game 2D GUI – Elementi grafici 2D per interfaccia videogiochi casual e hypercasual
--------------------------------------------------------------------------------------------------

[GUI Pro – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2F2d%2Fgui%2Fgui-pro-casual-game-176695)
Pixel Point UV Editor – Cambiare facilmente i colori di un modello dall’editor scegliendo dalla texture atlas (utile per personalizzare modelli Synty POLYGON)
--------------------------------------------------------------------------------------------------------------------------------------------------------------

[PIXEL POINT UV EDITOR – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fpixel-point-uv-editor-204685)
Gridbox Prototype Materials – I migliori materiali gratuiti per prototipazione scene
------------------------------------------------------------------------------------

[GRIDBOX PROTOTYPE MATERIALS – DOWNLOAD](https://assetstore.unity.com/packages/2d/textures-materials/gridbox-prototype-materials-129127)
Prefab World Builder – Tool per velocizzare il level design e il posizionamento di props nell’editor di Unity
-------------------------------------------------------------------------------------------------------------

[PREFAB WORLD BUILDER – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Flevel-design%2Fprefab-world-builder-185406)
VR Interaction Framework – Framework per la creazione di applicativi e giochi VR pronti all’uso
-----------------------------------------------------------------------------------------------

[VR INTERACTION FRAMEWORK – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftemplates%2Fsystems%2Fvr-interaction-framework-161066)
GPU Instancer – Visualizza migliaia di oggetti in scena mantenendo prestazioni elevate
--------------------------------------------------------------------------------------

[GPU INSTANCER – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fgpu-instancer-117566)
Hot Reload – Modifica il codice sorgente a runtime senza ricompilare
--------------------------------------------------------------------

[HOT RELOAD – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fhot-reload-edit-code-without-compiling-254358)
Grabbit – Sistema di level design e posizionamento di prefab basato sulla fisica
--------------------------------------------------------------------------------

[GRABBIT – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fgrabbit-editor-physics-transforms-182328)
Dungeon Creator – Sistema per la creazione di stanze collegate tra loro in pochi click.
---------------------------------------------------------------------------------------

[DUNGEON CREATOr – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Flevel-design%2Fdungeon-creator-306060)
Multiversal Vehicle Controller: Pro – Sistema completo per la gestione dei movimenti realistici dei veicoli
-----------------------------------------------------------------------------------------------------------

[Multiversal Vehicle Controller – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fphysics%2Fmultiversal-vehicle-controller-pro-car-physics-controller-255161)
Asset Inventory 2 – Manager per la gestione degli asset del progetto in modo efficiente
---------------------------------------------------------------------------------------

[ASSET INVENTORY 2 – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fasset-inventory-2-275893)
Essential KIT Mobile – Tool per l’accesso unificato a funzionalità native iOS e Android
---------------------------------------------------------------------------------------

[EEssential KIt Mobile – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fintegration%2Fessential-kit-mobile-ios-android-v3-301752)
Potrebbe interessarti anche:
----------------------------
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Quali sono i migliori asset Unity per videogiochi…](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/)
[0Likes](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fi-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025%2F)
Login
---
# Redazione Archivi - Pagina 2 di 2 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/redazione/page/2/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/redazione/page/2/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/redazione/page/2/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Redazione
[](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
Meta (ex Facebook) ha da un paio di anni messo in commercio Oculus Quest 2o ssibile interfacciarlo a Unity attraverso gli ultimi aggiornamenti di Oculus Integration…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/#respond)
[](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
[](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Alcune cose che dovresti sapere se utilizzi Unity 3D per sviluppare videogiochi](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
\[ELENCO IN COSTANTE AGGIORNAMENTO\] Di seguito una lista non ordinata di alcuni concetti con cui mi sono scontrato durante l'utilizzo di Unity 3D per lo sviluppo di videogiochi o simulazioni.…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/#respond)
[](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[](https://www.crearevideogiochi.it/cubettiny/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Cubettiny](https://www.crearevideogiochi.it/cubettiny/)
Il primo gioco in cui il game design è stata scritto completamente dall’intelligenza artificiale, lo sviluppo realizzato da umani.
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cubettiny/#respond)
[](https://www.crearevideogiochi.it/cubettiny/)
[](https://www.crearevideogiochi.it/sors-adversa/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Sors Adversa](https://www.crearevideogiochi.it/sors-adversa/)
Sors Adversa è un tributo low-poly agli sparatutto della vecchia scuola con lunghi livelli dettagliati e combattimenti contro enormi boss. Utilizza uno grafica a scorrimento diagonale e una vasta quantità…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/sors-adversa/#respond)
[](https://www.crearevideogiochi.it/sors-adversa/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Nasce il portale ‘Creare Videogiochi’](https://www.crearevideogiochi.it/nasce-creare-videogiochi/)
Nasce il portale 'Creare Videogiochi' dalla passione verso i videogiochi, lo sviluppo e tutta la scena indie nazionale ed internazionale. Qualcosa che manca nel panorama italiano di questo settore. Un…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/nasce-creare-videogiochi/#respond)
[](https://www.crearevideogiochi.it/nasce-creare-videogiochi/)
[](https://www.crearevideogiochi.it/categoria/redazione/page/2/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-sviluppare-per-oculus-quest-2-con-unity%2F)
Login
---
# Raccolta dei migliori asset di Unity, divisi per anno - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Raccolta dei migliori asset di Unity, divisi per anno
=====================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
28 Ottobre 2025
la redazione di **Creare Videogiochi** ogni anno crea a mantiene una lista degli **asset** di Unity presenti sull’Asset Store meritevoli di attenzione in quanto specifici, ben documenti, aggiornati e di facile utilizzo. Queste liste sono redatta per aiutare sviluppatori **indie** e non nei loro progetti, integrando plugin e **componenti** dedicati.
Questo articolo vuole essere un contenitore di tali **liste**, divise per **anni**, al fine di farne un indice semplice da consultare.
* [I migliori asset Unity del 2026](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [I migliori asset Unity del 2025](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [I migliori asset Unity del 2024](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/)
* [I migliori asset Unity del 2023](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/)
* [I migliori asset Unity del 2022](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
Potrebbe interessarti anche:
----------------------------
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Tutti gli ebook free gratuiti rilasciati da Unity](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
[0Likes](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fraccolta-dei-migliori-asset-di-unity-divisi-per-anno%2F)
Login
---
# Unity 6 Shaders and Effects Cookbook - 5° edizione - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Unity 6 Shaders and Effects Cookbook – 5° edizione
==================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
5 Agosto 2025
**“Unity 6 Shaders and Effects Cookbook”** di John P.Doran è un libro di 500 pagine che racchiude tutto lo scibile riguardante la generazione e la scrittura di **shader** in Unity 6, anche grazie e soprattutto al potente Shader Graph.
Il libro passa da una breve introduzione ai Post Processing URP per entrare a gamba tesa sull’uso dell’editor degli shader, al texture mapping, alla manipolazione delle geometrie fino all’ottimizzazione e agli effetti fullscreen.
Il modo di spiegare dell’autore molto pragmatico, ricco di immagini d’aiuto e con esempi calzanti permette di farsi una idea più precisa del processo di creazione degli shader e conoscere a fondo alcuni trucchi ed aspetti del sistema. Serve ovviamente tempo per padroneggiare la tecnica, ma il libro è davvero un buon inizio per **Unity 6**.
[VEDI SU AMAZON](https://www.amazon.it/Unity-Shaders-Effects-Cookbook-captivating-ebook/dp/B0DJNR9DZK/)
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Raccolta 2023 dei migliori Asset di Unity per…](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[1Like](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Funity-6-shaders-and-effects-cookbook-5-edizione%2F)
Login
---
# 9 canali Youtube che devi seguire se sei uno sviluppatore indie - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
9 canali Youtube che devi seguire se sei uno sviluppatore indie
===============================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
23 Febbraio 2022
Indubbiamente la vita dello **sviluppatore indie** (o indiedev come si usa sulle biografie social) è ricca di difficoltà in quanto non si deve fare unicamente la parte dello sviluppatore ma anche quella del level designer, del sound designer, dell’animatore e di tutte le componenti che riguardano la pubblicazione di un videogioco (non per ultime le fasi di rilascio, founding e marketing).
Per venire in aiuto a tutto questo, di seguito una **lista di canali Youtube** che non si possono perdere per districarsi nell’enorme mole di lavoro in capo ad un indiedev.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/#)
Infallible Code
---------------
[](https://www.youtube.com/c/InfallibleCode)
[https://www.youtube.com/c/InfallibleCode](https://www.youtube.com/c/InfallibleCode)
AudoDev
-------
[](https://www.youtube.com/c/AuroDev)
[https://www.youtube.com/c/AuroDev](https://www.youtube.com/c/AuroDev)
Get Indie Gaming
----------------
[](https://www.youtube.com/c/GetIndieGaming)
[https://www.youtube.com/c/GetIndieGaming](https://www.youtube.com/c/GetIndieGaming)
Game Developers Conference
--------------------------
[](https://www.youtube.com/c/Gdconf)
[https://www.youtube.com/c/Gdconf](https://www.youtube.com/c/Gdconf)
[Blackthornprod](https://www.youtube.com/c/Blackthornprod)
-----------------------------------------------------------
[](https://www.youtube.com/c/Blackthornprod)
[https://www.youtube.com/c/Blackthornprod](https://www.youtube.com/c/Blackthornprod)
[Imphenzia](https://www.youtube.com/c/Imphenzia)
-------------------------------------------------
[](https://www.youtube.com/c/Imphenzia)
[https://www.youtube.com/c/Imphenzia](https://www.youtube.com/c/Imphenzia)
[Samuele Sciacca](https://www.youtube.com/c/samuelesciacca)
------------------------------------------------------------
[](https://www.youtube.com/c/samuelesciacca)
[https://www.youtube.com/c/samuelesciacca](https://www.youtube.com/c/samuelesciacca)
**Ben Cloward**
------------------
[](https://www.youtube.com/@BenCloward)
[https://www.youtube.com/@BenCloward](https://www.youtube.com/@BenCloward)
Juniper Dev
-----------

[https://www.youtube.com/@JuniperDev](https://www.youtube.com/@JuniperDev)
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Cosa è il Recovery Design](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/)
[0Likes](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2F7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie%2F)
Login
---
# Asset e componenti indispensabili per lo sviluppo di una app non-game per Android con Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Asset e componenti indispensabili per lo sviluppo di una app non-game per Android con Unity
===========================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
22 Aprile 2025
Unity è sicuramente un sistema potente ed affidabile per la creazione di videogiochi e applicazioni grafica multimediali. Viene però molto meno usato però nella realizzazione di **app Android** non-games di consultazione (esempio: app catalogo, app di informazioni, app di interrogazione database, app e-commerce, etc) soprattutto perchè loro sviluppo non è **nativo** e dunque non propone elementi **grafici** e **ottimizzazioni** proprie di uno sviluppo con Android Studio. La controparte però è quella di avere comunque un motore versatile con un risparmio di tempo di sviluppo e di risorse (si pensi al fatto quando non sia necessario eseguire porting multipli: windows, web, android, ios, etc).
Di seguito una lista di assets presenti sull’**Asset Store** di Unity che permettono di realizzare una **applicazione mobile Android** in tutto e per tutto, con diverse funzionalità native e ottimizzazioni notevoli.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/#)
UGUI Super ScrollView: vista scrollabile (e griglia di elementi) ottimizzata per applicazioni mobile con riciclo degli elementi visibili
----------------------------------------------------------------------------------------------------------------------------------------

[UGUI – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Fugui-super-scrollview-86572)
Native WebView: componente per aprire pagine web in una applicazione Android
----------------------------------------------------------------------------

[Native WebView – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fintegration%2Fnative-webview-269796)
Essential Kit V3: Implementazione di servizi nativi Android
-----------------------------------------------------------

[Essential Kit V3 – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fintegration%2Fessential-kit-v3-iap-leaderboards-cloud-save-notifications-galle-301752)
Google Maps View: Sistema di embed di Google Maps per Android
-------------------------------------------------------------

[Google Maps View – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fintegration%2Fgoogle-maps-view-82542)
Shortcut Manager: componente per l’integrazione di scorciatoie in una app Android
---------------------------------------------------------------------------------

[Shortcut Manager – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fintegration%2Fshortcuts-manager-for-android-191767)
True Shadow – UI Soft Shadow and Glow: ombre realistiche, soft e glow per oggetti UI (supporta TextMeshPRO)
-----------------------------------------------------------------------------------------------------------

[TRUE SHADOW – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Ftrue-shadow-ui-soft-shadow-and-glow-205220)
Clean Flat Icons: Raccolta di oltre 4000 icone in stile flat
------------------------------------------------------------

[CLAN FLAT ICONS – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2F2d%2Fgui%2Ficons%2Fclean-flat-icons-98117)
Native Gallery for Android & iOS: Componente per la gestione della galleria e la fotocamera su smartphone
---------------------------------------------------------------------------------------------------------

[Native Gallery – DOWNLOAD](https://assetstore.unity.com/packages/tools/integration/native-gallery-for-android-ios-112630)
Native File Picker: Componente per la gestione di caricamenti di import e export di file
----------------------------------------------------------------------------------------

[Native File Picker](https://assetstore.unity.com/packages/tools/integration/native-file-picker-for-android-ios-173238)
Evo UI: Raccolta di componenti per interfaccia grafica web e app
----------------------------------------------------------------

[EVO UI – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Fevo-ui-modern-ui-framework-310303)
Mobile Haptic Feedback: Sistema di generazione vibrazioni aptiche per dispositivi mobile
----------------------------------------------------------------------------------------

[Mobile Haptic Feeback – DOWNLOAD](https://assetstore.unity.com/packages/tools/integration/mobile-haptic-feedback-320664)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Cosa è una IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
[0Likes](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fasset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity%2F)
Login
---
# Libri e eBook per sviluppatori - Pagina 2 di 2 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/libri/page/2/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/libri/page/2/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/libri/page/2/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Libri
La nostra sezione Libri e eBook per sviluppatori di videogiochi indie. Troverete sicuramente qualche libro che fa al caso vostro.
[](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [UNYC# – Unity e C# da zero](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/)
“Voglio creare un videogioco ma non so da dove iniziare..” Avete già scritto questa domanda su decine di forum e le risposte parlavano dell’acquisto onerosi corsi di formazione? Oppure vi hanno consigliato…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/#respond)
[](https://www.crearevideogiochi.it/unyc-unity-e-c-da-zero/)
[](https://www.crearevideogiochi.it/scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
#### [Scopri i videogiochi con i Promessi sposi (e viceversa)](https://www.crearevideogiochi.it/scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa/)
La cultura letteraria ha ignorato i videogiochi per anni. Poi, in tempi più recenti, li ha utilizzati come possibile mezzo per spiegare la letteratura. Quasi nessuno, però, aveva tentato l’operazione…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa/#respond)
[](https://www.crearevideogiochi.it/scopri-i-videogiochi-con-i-promessi-sposi-e-viceversa/)
[](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
#### [Realtà aumentata per il marketing – Metodi disruptive e phygital experience per unire il mondo fisico e digitale](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/)
Cos'è la realtà aumentata e perché sta acquisendo sempre più importanza nelle strategie di marketing dei grandi brand? Non solo esperienze da "Wow-Effect" che lasciano sbalorditi i tuoi clienti, ma…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/#respond)
[](https://www.crearevideogiochi.it/realta-aumentata-per-il-marketing-metodi-disruptive-e-phygital-experience-per-unire-il-mondo-fisico-e-digitale/)
[](https://www.crearevideogiochi.it/vr-developer/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
#### [VR Developer](https://www.crearevideogiochi.it/vr-developer/)
Realtà virtuale e realtà aumentata sono termini di un nuovo paradigma tecnologico, capace di immergere le persone in un’esperienza che va oltre la percezione del mondo reale. Dopo i pionieristici…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/vr-developer/#respond)
[](https://www.crearevideogiochi.it/vr-developer/)
[](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
#### [Lavorare con i videogiochi](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/)
Attualmente circa metà della popolazione mondiale gioca ai videogiochi, non è più possibile ignorare un mercato in così grande espansione. Ma cosa succede dietro le quinte? Come vengono creati i…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/#respond)
[](https://www.crearevideogiochi.it/lavorare-con-i-videogiochi/)
[](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
#### [Realtà Virtuale e Realtà Aumentata](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
Realtà aumentata, realtà virtuale, Mixed Reality, Cross Reality. Sono anni che sentiamo questi termini, eppure fino a ora tutto quello che abbiamo visto è stato qualche divertente effetto speciale e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/#respond)
[](https://www.crearevideogiochi.it/realta-virtuale-e-realta-aumentata/)
[](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Game Development Patterns with Unity 2021](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/)
David Baron è uno sviluppatore di giochi con oltre 15 anni di esperienza nel settore. Ha lavorato per alcuni noti studi di giochi AAA, mobili e indie a Montreal, in…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/#respond)
[](https://www.crearevideogiochi.it/game-development-patterns-with-unity-2021/)
[](https://www.crearevideogiochi.it/categoria/libri/page/2/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Funyc-unity-e-c-da-zero%2F)
Login
---
# Marketing per sviluppatori indie- Pagina 2 di 2 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/marketing/page/2/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/marketing/page/2/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/marketing/page/2/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Marketing
[](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
#### [9 canali Youtube che devi seguire se sei uno sviluppatore indie](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
Indubbiamente la vita dello sviluppatore indie (o indiedev come si usa sulle biografie social) è ricca di difficoltà in quanto non si deve fare unicamente la parte dello sviluppatore ma…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/#respond)
[](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
[](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
[Video](https://www.crearevideogiochi.it/categoria/unity/video/)
#### [15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
Di seguito una lista non ordinata dei migliori canali Youtube riguardanti lo sviluppo di videogiochi e applicazioni utilizzando come strumento Unity. Si passa da semplici tutorials per iniziare fino a…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/#respond)
[](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
#### [Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
Nella precedente guida abbiamo visto cosa fare per una campagna Kickstarter di successo. In questo post invece cercheremo di capire quali sono gli errori da evitare assolutamente durante lo sviluppo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/#respond)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
#### [Campagna Kickstarter di successo: il giorno perfetto di lancio](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
Per chi deve lanciare una campagna Kickstarter una delle primissime paure che incontra è quella di individuare il giorno corretto per il lancio al fine di massimizzare la resa. La…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/#respond)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-il-giorno-perfetto-di-lancio/)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[Kickstarter](https://www.crearevideogiochi.it/categoria/marketing/kickstarter/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
Anya Combs (Director of games di Kickstarter) è indubbiamente la manager più influente in quanto a stretto contatto con gli sviluppatori e tutti coloro che pubblicano giochi sulla piattaforma di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/#respond)
[](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[](https://www.crearevideogiochi.it/categoria/marketing/page/2/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2F7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie%2F)
Login
---
# I videogiochi indie su Steam che dovresti tenere d'occhio - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
I videogiochi indie su Steam che dovresti tenere d’occhio
=========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
8 Novembre 2024
In questo articolo proponiamo una **lista** di **videogiochi** indie attualmente presenti su **Steam**, ma non ancora rilasciati o in Early Access, che catturano l’attenzione per lo stile grafico particolare, il gameplay innovativo e ricchezza di dettagli.
Una lista continuamente in aggiornamento che racchiude tutto l’entusiasmo, le capacità e l’inventiva degli sviluppatori indie di tutto il mondo.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Riprodurre filmati con Video Player nella build…](https://www.crearevideogiochi.it/riprodurre-filmati-con-video-player-nella-build-webgl-di-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[0Likes](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fi-videogiochi-indie-su-steam-che-dovresti-tenere-docchio%2F)
Login
---
# Come risolvere l'errore "CommandInvokationFailure: Gradle build failed" in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come risolvere l’errore “CommandInvokationFailure: Gradle build failed” in Unity
================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
21 Ottobre 2024
Quando si cerca di compilare un progetto **Unity** per **Android**, si può incorrere nell’errore “CommandInvokationFailure: **Gradle build failed**” al termine del processo di creazione del bundle Android.
Questo tipo di errore riguarda uan specifica impostazione del proprio **progetto**, e non dell’editor di Unity, che va abilitata con una modifica **manuale**.
Accedere alla sottocartella seguente presente nella **directory** di lavoro del proprio progetto:
\[project directory\]\\Library\\Bee\\Android\\Prj\\IL2CPP\\Gradle
Editare il file gradle.properties con un editor di testo ed aggiungere la riga seguente (se già presente impostarle il valore a true):
android.enableR8=true

Riavviare il progetto Unity ed eseguire nuovamente la compilazione.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [ di Unity per gestire gli annunci in-game su Android")\
\
Usare AdsMediation LevelPlay (ex ironSource) di…](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
[0Likes](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity%2F)
Login
---
# Cosa è il Power Creep - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cosa-e-il-power-creep/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cosa-e-il-power-creep/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cosa-e-il-power-creep/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Cosa è il Power Creep
=====================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
29 Aprile 2026
Il **Power Creep** si riferisce al modo in cui videogiochi già rilasciati possono essere in qualche modo “sbilanciati” dal graduale **aumento** di potenza dei contenuti rilasciati successivamente, rendendo di fatto quelli rilasciati precedentemente del tutto **inutili**. Per spingere i giocatori a continuare a giocare (o a spendere), gli sviluppatori devono rendere i nuovi personaggi, le armi o le carte più appetibili. Più un gioco è in circolazione da tempo (ed aggiornato) e più questo fenomeno è evidente.
Facciamo un esempio.
Se la nuova spada che è stata rilasciata infliggesse lo stesso danno di quella che già si possiede, non si avrebbe motivo di faticare per ottenerla. Di conseguenza, la nuova spada farà un po’ più di danno (o comunque avrà caratteristiche migliori). Ripetendo questo processo per anni dal primo rilascio del gioco, la curva di potenza va dritta verso l’alto.
In realtà questo concetto ha una cattiva **reputazione** del mondo dei videogiochi. Senza un adeguato **bilanciamento**, il Power Creep può rendere inutili ore di gioco e portare a una stagnazione della competizione, soprattutto se applicato a MMO, carte collezionabili, etc. Si pensi ad esempio al giocatore che non ha l’ultimo **equipaggiamento** disponibile (es perchè ha appena iniziato), viene immediatamente annientato da chi invece lo possiede.
Esistono dei modi per **mitigare** questo fenomeno come ad esempio quello di aggiornare vecchi contenuti e portarli ai livelli di quelli recenti oppure invece di rendere un oggetto più forte si inventa una meccanica differente.
Esempi di questo fenomeno si possono vedere in Genshin Impact (è il caso più discusso sul web), Destiny2, Magic the Gathering e Pokemon.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[0Likes](https://www.crearevideogiochi.it/cosa-e-il-power-creep/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cosa-e-il-power-creep/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-il-power-creep%2F)
Login
---
# Raccolta 2026 dei migliori asset Unity per creatori di videogiochi che puoi trovare sull'Asset Store - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Raccolta 2026 dei migliori asset Unity per creatori di videogiochi che puoi trovare sull’Asset Store
====================================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
2 Gennaio 2026
Come ogni anno proponiamo una **raccolta** corposa di Asset presenti sullo **Store** di Unity per facilitare lo sviluppo e la creazione di videogiochi e app in **Unity**. Risorse importanti, gratuite o a pagamento, che permettono di **semplificare** e **velocizzare** il lavoro di ogni giorno, dal gamedev più esperto fino al junior alla prime armi.
Di seguito la nostra lista del **2026** di Asset Unity che include sistemi avanzati di gestione dei dati e delle procedure ma anche elementi grafici 2D e 3D per tutte le necessità. Asset **recenti**, **aggiornati** e con recensioni e feedback positivi per un approccio di qualità allo sviluppo di **videogiochi** e **app** multimediali con Unity che siano essere per Windows, smartphone Android e iOS oppure Realtà Virtuale.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/#)
Low Poly Ultimate Pack: Raccolta di elementi grafici 3D in stile low-poly
-------------------------------------------------------------------------

[Low poly ultimate pack – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2F3d%2Fprops%2Flow-poly-ultimate-pack-54733)
RayFire for Unity: Sistema di distruzione e fratture di elementi 3D, in editor e runtime
----------------------------------------------------------------------------------------

[RAYFIRE – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgame-toolkits%2Frayfire-for-unity-148690)
Toony Colors Pro 2: Shader parametrico per la realizzazione di materiali in stile cartoon
-----------------------------------------------------------------------------------------

[TOONY COLORS PRO 2 – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Ftoony-colors-pro-2-8105)
Button Pro: Script di personalizzazione dei colori, materiali e sprite degli stati di pulsanti UI
-------------------------------------------------------------------------------------------------

[BUTTON PRO – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Fbutton-pro-304100)
Modern UI PACK: Libreria UI 2D per interfacce moderne, basato su Native UI
--------------------------------------------------------------------------

[MODER UI PACK – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Fmodern-ui-pack-201717)
More Effective Coroutines: Sistema avanzato di implementazione delle coroutine
------------------------------------------------------------------------------

[MORE EFFECTIVE COROUTINES – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fanimation%2Fmore-effective-coroutines-pro-68480)
Hot Reload: Sistema di modifica del codice a runtime senza necessità di ricompilare il progetto
-----------------------------------------------------------------------------------------------

[HOT RELOAD – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fhot-reload-edit-code-without-compiling-254358)
Easy Save: Sistema efficiente e completo di salvataggio e caricamento dati (con funzionalità di Autosave)
---------------------------------------------------------------------------------------------------------

[EASY SAVE – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Feasy-save-the-complete-save-game-data-serializer-system-768)
Universal Device Preview: Sistema per la visualizzazione in anteprima su più di 200 dispositivi (smartphone e console portatili)
--------------------------------------------------------------------------------------------------------------------------------

[Universal Device Preview – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Funiversal-device-preview-82015)
Chat UI: Sistema integrato di chat di messaggistica (con emoticons e file upload)
---------------------------------------------------------------------------------

[CHAT UI – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Fchat-ui-169082)
NWH Vehicle Physics 2: Sistema completo di gestione della fisica di qualsiasi veicolo (autovetture, moto e truck)
-----------------------------------------------------------------------------------------------------------------

[NWh Vehicle Physics 2 – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fphysics%2Fnwh-vehicle-physics-2-166252)
Mesh Extractor 2: Tool che separa mesh, materiali e textures di un asset singolo in base alla sua composizione
--------------------------------------------------------------------------------------------------------------

[MESH EXTRACTOR 2 – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fmodeling%2Fmesh-extractor-2-separate-meshes-materials-and-textures-281521)
Procedural Walk Animation: Sistema avanzato di generazione animazioni procedurali di camminata
----------------------------------------------------------------------------------------------

[Procedural Walk Animation – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fanimation%2Fprocedural-walk-animation-244662)
Dungeon Architect: Componente per la generazione procedurale di dungeon e livelli
---------------------------------------------------------------------------------

[Dungeon Architect – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fdungeon-architect-53895)
RaycastPro : Collezione di tool e 80 componenti 2D e 3D per l’individuazione avanzata di collisioni tramite a ree e raggi
-------------------------------------------------------------------------------------------------------------------------

[ReycastPro – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fphysics%2Fraycastpro-214714)
Fake Stop Motion: Componente per l’esecuzione di qualsiasi movimento in stile Stop-Motion (passo uno)
-----------------------------------------------------------------------------------------------------

[FAKE STOP MOTION – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fanimation%2Ffake-stop-motion-277627)
Build for iOS/macOS on Windows: Tool per compilare un build iOS in Windows senza la necessità di un Mac
-------------------------------------------------------------------------------------------------------

[Build for iOS/macOS on Windows – DownLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fbuild-for-ios-macos-on-windows-15522)
Tail Animator: Componente per la simulazione elastica e procedurale di estremità (code, arbusti, tentacoli, etc)
----------------------------------------------------------------------------------------------------------------

[TAIL ANIMATOR – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fanimation%2Ftail-animator-121819)
Runtime Transform Gizmo: Sistema di manipolazione degli oggetti a runtime (utile per editor o applicazioni interattive)
-----------------------------------------------------------------------------------------------------------------------

[Runtime Transform Gizmo – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fmodeling%2Fruntime-transform-gizmos-basic-47273)
Linework – Outlines and Edge Detection: Sistema di generazione di outline e riempimenti
---------------------------------------------------------------------------------------

[LINEWORK – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Flinework-outlines-and-edge-detection-294140)
Obi Fluid: Sistema particellare per la generazione di fluidi
------------------------------------------------------------

[OBI FLUID – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fphysics%2Fobi-fluid-63067)
Voxel Play 3: Motore grafico in voxel
-------------------------------------

[Vocel Play 3 – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgame-toolkits%2Fvoxel-play-3-310775)
Obi Rope: Sistema di gestione corde e nodi
------------------------------------------

[OBI ROPE – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fphysics%2Fobi-rope-55579)
Transparent Desktop Window Controller: Componente per rendere trasparente la schermata di un applicativo Unity sul desktop di Windows (utile per applicativi HUD e idle game)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[TRANSPARENT DESKTOP WINDOWS CONTROLLER – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fgui%2Ftransparent-window-controller-311549)
Text Physics: Trasforma un testo TextMeshPRO in componenti 2D con gestione della fisica
---------------------------------------------------------------------------------------

[TEXT PHYSICS – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Fphysics%2Ftext-physics-327652)
ProPixelizer: Shader per la renderizzazione di oggetti 3D come fossero disegnati in Pixel Art 2D
------------------------------------------------------------------------------------------------

[ProPixelizer – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Ffullscreen-camera-effects%2Fpropixelizer-realtime-3d-pixel-art-177877)
Perfect Culling: Sistema di Pixel Perfect Occlusion Culling basato su bake della scena
--------------------------------------------------------------------------------------

[PERFECT CULLING – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fperfect-culling-occlusion-culling-system-193611)
Low Poly Animated Animals: Raccolta di 80 animali animati in stile low poly
---------------------------------------------------------------------------

[LOW POLY ANIMATED ANIMALS – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2F3d%2Fcharacters%2Fanimals%2Flow-poly-animated-animals-93089)
Tile World Creator 4: Motore di generazione tile maps dinamico
--------------------------------------------------------------

[Tile WORLD CREATOR 4 – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Flevel-design%2Ftileworldcreator-4-320067)
Piglet glTF : importer di file nativi glTF e GLB in Unity (in editor e runtime)
-------------------------------------------------------------------------------

[PIGLET GLTF IMPORTER – DOWNLOAD](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Fpiglet-gltf-importer-173425)
F Texture Tools: Editor per texture con integrazione di funzionalità seamless e cambio colore
---------------------------------------------------------------------------------------------

[F Texture Tools – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Ftools%2Futilities%2Ff-texture-tools-274837)
Meadow Environment – Stylized Pack: Raccolta di oltre 350 prefab per la creazione di ambienti forestali cozy, in 3 differenti biomi
-----------------------------------------------------------------------------------------------------------------------------------

[MEADOW ENVIRONMENT – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2F3d%2Fenvironments%2Ffantasy%2Fmeadow-environment-stylized-pack-314902)
Stylized Water 3 – Sistema di creazione di acqua in low-poly e stilizzate
-------------------------------------------------------------------------

[Stylized Water 3 – Download](https://prf.hn/click/camref:1101lmimc/[p_id:1100l440593]/destination:https%3A%2F%2Fassetstore.unity.com%2Fpackages%2Fvfx%2Fshaders%2Fstylized-water-3-287769)
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Raccolta dei migliori asset di Unity, divisi per anno](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
* [\
\
Asset e componenti indispensabili per lo sviluppo di…](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[0Likes](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fraccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store%2F)
Login
---
# Cosa è il Recovery Design - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Cosa è il Recovery Design
=========================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2026
In questo articolo
[Toggle](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/#)
Il fallimento non è il problema: è il recupero che decide se un giocatore rimane in gioco
-----------------------------------------------------------------------------------------
In moltissimi videogiochi, il **fallimento** è lo stato più frequente.
Platform, roguelike, soulslike: **morire** non è un’eccezione, è la norma. Il giocatore passa gran parte del tempo a sbagliare, cadere, essere sconfitto. Eppure alcuni giochi riescono a trasformare questa ripetizione di fallimenti in apprendimento, motivazione e soddisfazione, mentre altri perdono il giocatore dopo poche ore.
La differenza non sta nel fallimento in sé, ma in come il gioco gestisce il momento che avviene subito dopo.
Il rage quit non avviene durante il gioco, ma dopo la morte
-----------------------------------------------------------
Un punto spesso sottovalutato: il **rage quit** non succede mentre si gioca, ma nei secondi immediatamente successivi al fallimento.
È in quel momento che il giocatore:
* posa il controller
* sospira
* guarda lo schermo nero o la schermata di morte
* decide se riprovare… o chiudere il gioco
Quel brevissimo intervallo è il momento più pericoloso per la retention.
Ed è proprio lì che entra in gioco il **recovery design**.
Il recupero determina l’apprendimento
-------------------------------------
Dopo un fallimento possono accadere due cose:
* **Recupero** efficace → miglioramento
* **Recupero** frustrante → disconnessione emotiva
Se il giocatore riesce a tornare in gioco rapidamente, con una chiara comprensione di cosa è andato storto, il fallimento diventa informazione.
Se invece il recupero è lento, punitivo o confuso, il fallimento diventa solo dolore.
Il gioco non deve evitare la **frustrazione**, ma incanalarla.
Un buon recupero costruisce fiducia e resilienza
------------------------------------------------
Quando un gioco comunica implicitamente “Puoi farcela. Ti sosteniamo, anche quando sbagli.”, il giocatore è più disposto a:
* tentare sfide più difficili
* rischiare maggiormente
* sperimentare nuove soluzioni
La **fiducia** nasce quando il sistema non umilia il fallimento, ma lo integra nel percorso. È così che si costruisce la resilienza del giocatore.
Cosa prova un giocatore dopo aver fallito
-----------------------------------------
Subito dopo una sconfitta, spesso in modo inconscio, il giocatore si pone alcune **domande**:
* Cosa è andato storto?
* È stato giusto?
* Quanto sono stato penalizzato?
* Ho voglia di riprovare?
Un buon recovery design risponde a queste domande senza usare parole.
Lo fa attraverso **tempi**, **feedback**, tono, e **struttura** del sistema.
I pilastri fondamentali di un buon Recovery Design
--------------------------------------------------
### 1\. Rientro rapido (Fast Re-Entry)
Più breve è il tempo tra fallimento e nuovo tentativo, minore è la frustrazione.
Esempi eccellenti:
* **Celeste** → respawn istantaneo
* Super Meat Boy → montaggio delle morti + retry immediato
* Hades → la morte è un reset narrativo, non uno stop punitivo
Loading lunghi, menu, schermate inutili o cutscene spezzano il ritmo e amplificano la rabbia.
### 2\. Progresso preservato
La perdita totale è devastante per un giocatore. Le alternative più sane possono invece essere:
* mantenere XP, sblocchi, conoscenza del mondo o scorciatoie
* trasformare la perdita in meta-progresso
* permettere il recupero delle risorse perse giocando bene
Il fallimento deve fare male, ma non deve cancellare l’esperienza.
### 3\. Feedback chiaro e leggibile
Un giocatore deve capire perché quale motivo è morto. Un buon feedback può essere:
* mostrare chiaramente il colpo finale
* evidenziare l’errore (posizionamento, timing, avidità)
* evitare rumore visivo e confusione
Se il fallimento non insegna nulla, non è una lezione: è solo frustrazione.
### 4\. Inquadratura emotiva del fallimento
Il modo in cui il gioco “parla” della morte è cruciale. Invece di “Sei MORTO”, potremmo dire:
* “Riprova”
* “Ci sei andato vicino”
* “La morte fa parte del viaggio”
Il framing emotivo può trasformare la rabbia in determinazione.
Non cambia la difficoltà, cambia la percezione.
### 5\. Reti di sicurezza graduali
I sistemi di recupero possono aiutare molto i giocatori in difficoltà:
* un filo di salute in più
* nemici leggermente più lenti
* segnali di attacco più chiari
* assist opzionali
La chiave è aiutare senza umiliare. Il giocatore non deve sentirsi “scarso”, ma supportato.
Conclusione
-----------
La maggior parte delle volte il fallimento in un videogioco è inevitabile. L’abbandono no.
Un buon videogioco non elimina la sconfitta, ma si prende cura del giocatore nel momento in cui sbaglia.
Ed è proprio lì, in quei pochi secondi dopo la morte, che si decide se un gioco verrà ricordato come frustrante… o come memorabile.
Potrebbe interessarti anche:
----------------------------
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[0Likes](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cosa-e-il-recovery-design/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-il-recovery-design%2F)
Login
---
# Daniele Ferla, Autore presso Creare Videogiochi - Pagina 2 di 16
[Skip to content](https://www.crearevideogiochi.it/author/administrator/page/2/#content_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/author/administrator/page/2/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Daniele Ferla
155 articles published
02
[Gen 2026](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta 2026 dei migliori asset Unity per creatori di videogiochi che puoi trovare sull’Asset Store](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
Come ogni anno proponiamo una raccolta corposa di Asset presenti sullo Store di Unity per facilitare lo sviluppo e la creazione di videogiochi e app in Unity. Risorse importanti, gratuite…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/#respond)
[](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
15
[Dic 2025](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Senza categoria](https://www.crearevideogiochi.it/categoria/senza-categoria/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Pubblicare una build Unity tramite SteamPipeGUI di Steamworks SDK](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
La pubblicazione del proprio gioco o applicativo su Steam è una procedura alquanto delicata e complessa, soprattutto per via della struttura dei Depot e delle build dei pacchetti. Un modo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/#respond)
[](https://www.crearevideogiochi.it/pubblicare-una-build-unity-tramite-steampipegui-di-steamworks-sdk/)
23
[Nov 2025](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
[](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Risolvere l’errore “I pacchetti del Negozio e quelli di Devcomp corrispondono” durante la pubblicazione di Steam](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
La pubblicazione di un gioco sulla piattaforma Steam può essere una procedura molto complessa in quanto contempla la pubblicazioni di build e depots. Uno degli errori più comuni è la…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/#respond)
[](https://www.crearevideogiochi.it/risolvere-lerrore-i-pacchetti-del-negozio-e-quelli-di-devcomp-corrispondono-durante-la-pubblicazione-di-steam/)
17
[Nov 2025](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
[](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Dimensioni delle immagini da pubblicare nel negozio di Steam](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
E' indubbio che lo sviluppo di un videogame passa anche dalla sua promozione e distribuzione, così come è indubbio che Steam sia una delle piattaforme chiave per far conoscere e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/#respond)
[](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
13
[Nov 2025](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
[](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Aprire nativamente file GLTF e GLB in Unity (con supporto a compressione DRACO)](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
I formati GLTF e GLB negli ultimi anni sono diventati di fatto uno standard nella visualizzazione sul web in quanto molto performanti ed ottimizzati, anche grazie alla compressione DRACO. DI…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/#respond)
[](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
28
[Ott 2025](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
[](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta dei migliori asset di Unity, divisi per anno](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
la redazione di Creare Videogiochi ogni anno crea a mantiene una lista degli asset di Unity presenti sull'Asset Store meritevoli di attenzione in quanto specifici, ben documenti, aggiornati e di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/#respond)
[](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
09
[Ott 2025](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
[](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Visualizzare un Interstitial ADS di Unity Level Play Ads Mediation](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
Unity LevelPlay è diventato da poco il sistema principale per la gestione degli annunci di Unity (dopo l'acquisizione avvenuta nel 2023 di ironSource). Per iniziare a sviluppare la soluzione integrata…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/#respond)
[](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
01
[Ott 2025](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
[](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Creare una applicazione trasparente che gira sul Desktop di Windows in Unity](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
Transparent Desktop Window Controller ti permette di creare una finestra trasparente per il tuo gioco o la tua applicazione in modo che giri sul Desktop di Windows. L’asset è flessibile…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/#respond)
[](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
29
[Set 2025](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [I giochi Meta Quest 3 che dovresti giocare almeno una volta](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
In questo articolo riportiamo una lista, in continuo aggiornamento, di videogames per Meta Quest3 che vale la pena provare almeno una volta con il proprio visore VR. Una lista con…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/#respond)
[](https://www.crearevideogiochi.it/i-giochi-meta-quest-3-che-dovresti-giocare-almeno-una-volta/)
23
[Set 2025](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Usare AdsMediation LevelPlay (ex ironSource) di Unity per gestire gli annunci in-game su Android](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
Era il 2022 quando Unity concludeva l'acquisizione del servizio ironForce per la gestione della monetizzazione in-game in applicativi sviluppati con il proprio editor. Ad oggi il servizio è chiamato LevelPlay…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/#respond)
[](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[](https://www.crearevideogiochi.it/author/administrator/page/2/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fusare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android%2F)
Login
---
# Come creare mappe PBR per videogames con Materialize (software gratuito) - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-creare-mappe-pbr-per-videogames-con-materialize-software-gratuito/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-creare-mappe-pbr-per-videogames-con-materialize-software-gratuito/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-creare-mappe-pbr-per-videogames-con-materialize-software-gratuito/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come creare mappe PBR per videogames con Materialize (software gratuito)
========================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
21 Marzo 2022
I materiali PBR (**Physical Based Rendering**) sono indubbiamente una evoluzione che ha fatto bene al mondo dei videogiochi (soprattutto AAA) e stanno prendendo piede sempre più anche in ambiti non prettamente videoludici (si pensi ai **configuratori** 3D per prodotti online oppure **simulazioni** nel web o strumenti di **marketing** per le reti vendite).
E’ possibile trovare moltissime risorse gratuite (e non) che offrono materiali PBR già pronti, ad esempio [freepbr.com](https://freepbr.com/)
oppure [sharetextures.com](https://www.sharetextures.com/)
Qualora invece si volesse creare da zero tali materiali è necessario disporre di diverse **textures** (**mappe**) che ne definiscono il comportamento. Le principali sono:
* Diffuse Map
* Normal Map
* Height Map
* Metallic Map
* Smoothness Map
* Edge Map
* Ambient Occlusion Map (AO)
In nostro aiuto viene un semplice ma potentissimo **software** **gratuito** chiamato **Materialize** (usato anche per lo sviluppo dei materiali di Uncharted). E possibile scaricarlo [qui](https://boundingboxsoftware.com/materialize/index.php)
per Windows.
La potenzialità di questo software è che si può partire da una semplice Diffuse Map (o Albedo o Color) e generare le restanti attraverso l’impostazione di diversi **parametri**. Inoltre è possibile rendere le mappe di tipo “**seamless**” cioè replicabili su due assi UV (x,y) in modo da utilizzarle su superfici ampie, funzionalità indubbiamente indispensabile.
Qui sotto un video esplicativo delle funzionalità del software Materialize. Potete trovare molti altri tutorial su Youtube che ne spiegano le potenzialità.
Materialize inoltre propone un pacchetto di **shaders** per Unity e Unreal Engine già preimpostati per divertirsi a modificare i parametri direttamente dentro il motore.
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[0Likes](https://www.crearevideogiochi.it/come-creare-mappe-pbr-per-videogames-con-materialize-software-gratuito/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-creare-mappe-pbr-per-videogames-con-materialize-software-gratuito/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-creare-mappe-pbr-per-videogames-con-materialize-software-gratuito%2F)
Login
---
# 15 canali Youtube che devi seguire se sviluppi in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
[Video](https://www.crearevideogiochi.it/categoria/unity/video/)
15 canali Youtube che devi seguire se sviluppi in Unity
=======================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
31 Gennaio 2022
Di seguito una lista non ordinata dei **migliori canali** **Youtube** riguardanti lo sviluppo di videogiochi e applicazioni utilizzando come strumento **Unity**. Si passa da semplici **tutorials** per iniziare fino a operazioni complesse quali la creazione di **shader**, sistemi di pooling, **pattern** di sviluppo e riproduzione di **effetti** di videogames famosi.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/#)
Daniel Ilett
------------
[](https://www.youtube.com/c/DanielIlett)
[https://www.youtube.com/c/DanielIlett](https://www.youtube.com/c/DanielIlett)
Dilmer Valecillos
-----------------
[](https://www.youtube.com/c/DilmerV)
[https://www.youtube.com/c/DilmerV](https://www.youtube.com/c/DilmerV)
Jason Weimann
-------------
[](https://www.youtube.com/c/Unity3dCollege)
[https://www.youtube.com/c/Unity3dCollege](https://www.youtube.com/c/Unity3dCollege)
[Brackeys](https://www.youtube.com/c/Brackeys)
-----------------------------------------------
[](https://www.youtube.com/c/Brackeys)
[https://www.youtube.com/c/Brackeys](https://www.youtube.com/c/Brackeys)
[Jimmy Vegas](https://www.youtube.com/c/JimmyVegasUnity)
---------------------------------------------------------
[](https://www.youtube.com/c/JimmyVegasUnity)
[https://www.youtube.com/c/JimmyVegasUnity](https://www.youtube.com/c/JimmyVegasUnity)
[AmbiensVR](https://www.youtube.com/c/AmbiensVR)
-------------------------------------------------
[](https://www.youtube.com/c/AmbiensVR)
[https://www.youtube.com/c/AmbiensVR](https://www.youtube.com/c/AmbiensVR)
Ned Makes Games
---------------
[](https://www.youtube.com/channel/UCQrD9U5-jVdmzF2Bt7cjtNg)
[https://www.youtube.com/channel/UCQrD9U5-jVdmzF2Bt7cjtNg](https://www.youtube.com/channel/UCQrD9U5-jVdmzF2Bt7cjtNg)
Gabriel Aguiar Prod
-------------------
[](https://www.youtube.com/channel/UCtb1s859RTxx-RIgFs5ZVQA)
[https://www.youtube.com/channel/UCtb1s859RTxx-RIgFs5ZVQA](https://www.youtube.com/channel/UCtb1s859RTxx-RIgFs5ZVQA)
GameDevBill
-----------
[](https://www.youtube.com/channel/UC__2zJ9MPxfA943H13K6x8g)
[https://www.youtube.com/channel/UC\_\_2zJ9MPxfA943H13K6x8g](https://www.youtube.com/channel/UC__2zJ9MPxfA943H13K6x8g)
Harry Alisavakis
----------------
[](https://www.youtube.com/channel/UCLtZO3JNOp_Mfc4v0PA7_-A)
[https://www.youtube.com/channel/UCLtZO3JNOp\_Mfc4v0PA7\_-A](https://www.youtube.com/channel/UCLtZO3JNOp_Mfc4v0PA7_-A)
GameDevHQ
---------
[](https://www.youtube.com/channel/UCR_3ge9-CEhA6USXMuthwDw)
[https://www.youtube.com/channel/UCR\_3ge9-CEhA6USXMuthwDw](https://www.youtube.com/channel/UCR_3ge9-CEhA6USXMuthwDw)
Code Monkey
-----------
[](https://www.youtube.com/channel/UCFK6NCbuCIVzA6Yj1G_ZqCg)
[https://www.youtube.com/channel/UCFK6NCbuCIVzA6Yj1G\_ZqCg](https://www.youtube.com/channel/UCFK6NCbuCIVzA6Yj1G_ZqCg)
Sebastian Lague
---------------
[](https://www.youtube.com/channel/UCmtyQOKKmrMVaKuRXz02jbQ)
[https://www.youtube.com/channel/UCmtyQOKKmrMVaKuRXz02jbQ](https://www.youtube.com/channel/UCmtyQOKKmrMVaKuRXz02jbQ)
Arcade Hero
-----------
[](https://www.youtube.com/channel/UCiXaicxkZII4DfWROkodLwA)
[https://www.youtube.com/channel/UCiXaicxkZII4DfWROkodLwA](https://www.youtube.com/channel/UCiXaicxkZII4DfWROkodLwA)
Sharped
-------
[](https://www.youtube.com/channel/UCN_lf6rJJxnW7dbkQUIzH-g)
https://www.youtube.com/channel/UCN\_lf6rJJxnW7dbkQUIzH-g
Sunny Valley Studio
-------------------

https://www.youtube.com/c/sunnyvalleystudio
Potrebbe interessarti anche:
----------------------------
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
9 canali Youtube che devi seguire se sei uno…](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
* [\
\
5 canali Youtube che devi seguire se sviluppi in…](https://www.crearevideogiochi.it/5-canali-youtube-che-devi-seguire-se-sviluppi-in-gamemaker-studio/)
* [\
\
Lista dei migliori Asset Unity per videogiochi indie…](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
[0Likes](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2F15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity%2F)
Login
---
# Organizzare la gerarchia in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/organizzare-la-gerarchia-in-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/organizzare-la-gerarchia-in-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/organizzare-la-gerarchia-in-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
[Video](https://www.crearevideogiochi.it/categoria/unity/video/)
Organizzare la gerarchia in Unity
=================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
30 Dicembre 2021
Semplice ma efficace metodo per organizzare al meglio la gerarchia composta dai GameObjects del nostro progetto in Unity.
Potrebbe interessarti anche:
----------------------------
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
9 canali Youtube che devi seguire se sei uno…](https://www.crearevideogiochi.it/7-canali-youtube-che-devi-seguire-se-sei-uno-sviluppatore-indie/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[0Likes](https://www.crearevideogiochi.it/organizzare-la-gerarchia-in-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/organizzare-la-gerarchia-in-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Forganizzare-la-gerarchia-in-unity%2F)
Login
---
# Estensioni di Google Chrome per la gestione di Steam - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
Estensioni di Google Chrome per la gestione di Steam
====================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
3 Settembre 2025
Di seguito una esaustiva **raccolta** di **estensione** per il browser web **Google Chrome** che permettono l’arricchimento della pagina del sito **Steam** attraverso funzioni e proprietà utili come ad esempio il guadagno medio del gioco, le fluttuazioni di prezzo, la reperibilità su servizi di abbonamento, etc.
Ora i propri videogiochi preferiti non avranno più segreti!
In questo articolo
[Toggle](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/#)
SteamDB – Gestione prezzi, ultimo aggiornamento, wuiklinks e altro
------------------------------------------------------------------

[DOWNLOAD](https://chromewebstore.google.com/detail/steamdb/kdbmhfkmnlmbkgbabkdealhhbfhlmmon?utm_source=SteamDB)
Steam Ravenue Calculator – Mostra gli introiti indicativi del gioco
-------------------------------------------------------------------

[DOWNLOAD](https://chromewebstore.google.com/detail/steam-revenue-calculator/gjhejidajnchnadcangcodljgdmenipa?hl=en&pli=1)
Augmented Steam – Prezzi in diverse valute, ricerca migliroata e note
---------------------------------------------------------------------

[DOWNLOAD](https://chromewebstore.google.com/detail/augmented-steam/dnhpnfgdlenaccegplpojghhmaamnnfp)
Alike03’s Subscription Info – Verifica la disponibilità su piattaforme di sottoscrizione
----------------------------------------------------------------------------------------

[DOWNLOAD](https://chromewebstore.google.com/detail/alike03s-subscription-inf/jecikjbpiedagpmibmgpfgnkfpomgeok)
Show Great on Deck on Steam – Verifica con SteamDeck e rating su ProtonDB
-------------------------------------------------------------------------

[DOWNLOAD](https://chromewebstore.google.com/detail/show-great-on-deck-on-ste/olagniaikhbmpdgghoifgloijcndfled)
BONUS: Steamworks Extras – Migliorie nella visualizzazione dei propri dati di gioco in Steamworks
-------------------------------------------------------------------------------------------------

[DOWNLOAD](https://chromewebstore.google.com/detail/steamworks-extras/cdobnjfogldjaihapojppnopiaccgpag)
AI warning for Steam – Alert fullscreen per l’individuazione di giochi sviluppati con uso di AI
-----------------------------------------------------------------------------------------------

[DOWNLOAD](https://chromewebstore.google.com/detail/ai-warning-for-steam/clegcobheppnnigaaeelfkeomjcngmnh?pli=1)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Dimensioni delle immagini da pubblicare nel negozio di Steam](https://www.crearevideogiochi.it/dimensioni-delle-immagini-da-pubblicare-nel-negozio-di-steam/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
[0Likes](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Festensioni-di-google-chrome-per-la-gestione-di-steam%2F)
Login
---
# Lista degli Shoot'em Up (shmup) a scorrimento con visuale isometrica - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
Lista degli Shoot’em Up (shmup) a scorrimento con visuale isometrica
====================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
1 Marzo 2022
Con l’avvento della console di gioco Nintendo Switch, il genere di gioco **shmup** (Shoot’em Up) ha trovato una nuova casa grazie anche alla portabilità della console stessa. Il genere in oggetto è indubbiamente molto vasto in quanto contempla gli **sparatutto** a scorrimento orizzontale, verticale, euro shmup etc.
Un genere però poco citato, anche perché poco diffuso, è quello degli shmup a scorrimento **diagonale** che sfruttano la visuale in modo **isometrico**, indubbiamente più complessi, soprattutto da sviluppare. In alcuni casi questi implementano anche sistemi per spostarsi in altezza ed evitare ostacoli o nemici.
Di seguito la **lista**, ordinata per data di uscita, con il risultato della nostra ricerca per questo genere di shmup che meriterebbe molta più attenzione e nuove pubblicazioni.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/#)
Zaxxon (1982)
-------------

Super Zaxxon (1982)
-------------------

H.a.t.e (1982)
--------------

Blue Max (1983)
---------------

Blue Max 2001 (1984)
--------------------

Future Spy (1984)
-----------------

Jet Bomber (1985)
-----------------

Isolated Warrior (1991)
-----------------------

Viewpoint (1992)
----------------

Zaxxon’s Motherbase 2000 (1995)
-------------------------------

The reap (1997)
---------------

Royal Edoma Engine (2005)
-------------------------

Ke-Tsu-No-Ana (2016)
--------------------

Sors Adversa \[[link al sito web\]](https://www.instagram.com/sors.adversa)
----------------------------------------------------------------------------
[](https://www.instagram.com/sors.adversa)
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
[0Likes](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/lista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Flista-degli-shootem-up-shmup-a-scorrimento-con-visuale-isometrica%2F)
Login
---
# 19+ film, serie e miniserie da vedere se vuoi avviare una startup - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
19+ film, serie e miniserie da vedere se vuoi avviare una startup
=================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
24 Febbraio 2022
L’idea di uno **studio di sviluppo di videogiochi** può essere allettante, creativa ed entusiasmante, soprattutto perchè nasce da una passione. Per questo motivo di seguito una **lista dei film** e della **serie TV** più interessanti da vedere per darsi la carica e l’ottimismo che serve. Alcuni famosi, altri meno, per passare qualche ora di svago e, perché no, prendendo qualche spunto da adattare al proprio progetto o startup!
In questo articolo
[Toggle](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/#)
I pirati della Silicon Valley
-----------------------------
Il film che tutti gli startupper dovrebbe vedere. Punto. Racconta la storia della nascita di Microsoft e delle vicessitudini con la Apple, anche lei nascente negli stessi anni. Un film ricco di spunti, di riflessioni e di un pizzico di nostalgia per un’epoca ormai passata (quella dove le aziende si potevano ancora realizzare in un garage di casa).
Steve Jobs
----------
Seppur lento e a tratti noioso, rappresenta una serie di fasi della vita del fondatore della Apple con un accento particolare anche alla situazione sentimentale e alle vicende legate alla figlia. Un film d’autore, con una sceneggiatura solida e ben montata. Meno americano di quanto può sembrare.
Jobs
----
Realizzato nello stesso periodo del precedente ma con una veste ed una sceneggiatura più incalzante, hollywoodiana. Descrive la nascita della Apple fino agli ultimi giorni del suo creatore attraverso un racconto veritiero, frizzante e molto interessante. Rispetto al precedente risulta più gradevole e digeribile anche da palati meno raffinati.
The Social Network
------------------
Per chi fosse curioso di conoscere la nascita e la crescita esponenziale di Facebook questo film è irrinunciabile. Dai primi giorni di università del fondatore Mark Zuckerberg fino ai giorni nostri passando per battaglie legali e rapporti personali. Confezionato perfettamente senza momenti di noia e con un ritmo incalzante. Da vedere assolutamente.
Gli stagisti
------------
Film divertente e senza pretese che vuole raccontare la vita all’interno del campus di Google, altamente tecnologico e perfettamente strutturato. Seppur frivolo, è un buon film che permette di conoscere l’azienda più importante al mondo dall’interno.
The Circle
----------
Film passato quasi inosservato seppur con Tom Hanks nella parte di un guru e fondatore di una azienda di intelligenza artificiale e sicurezza. Racconta le vicende di una ragazza che diventa protagonista di un sistema di controllo avanzatissimo realizzato attraverso microcamere che ne studiano il comportamento e che non le lascerà scampo se non attraverso una “fuga” finale. Interessante.
The Founder
-----------
Racconta la storia della nascita del franchise McDonald’s attraverso la vita del suo fondatore, passando dai primi accordi verbali alle battaglie legali. Un pizzico di cinismo, un tocco di bravura, il film mette in mostra luci ed ombre di un grande gruppo della ristorazione fast-food. Da vedere solo se non si vuole più entrare in uno dei loro locali.
Silicon Vallery (serie)
-----------------------
Non è possibile non citare questa vera e propria perla, diventata un culto tra startupper, sviluppatori e sognatori. Racconta l’evoluzione da semplice prototipo (un algoritmo di compressione) ad azienda di “successo” di una app sviluppata da un gruppo di ragazzi squattrinati e decisamente poco ferrati sul mondo delle startup. Imperdibili le 6 stagioni da vedere tutte d’un fiato.
Mythic Quest (serie)
--------------------
La serie per eccellenza per chi sviluppa videogames, Mythic Quest, parla proprio di una società di sviluppo alle prese con lo sviluppo e il mantenimento giornaliero di un MMO. Una serie spassosa che mette in luce le difficoltà, estremizzate, che ogni giorno si possono incontrare nella realizzazione di un videogame dalla proporzioni bibliche (il paragone con Blizzard è doveroso).
The Consultant (serie)
----------------------
The Consultant è una serie dallo humor nero ed un thriller, tutto insieme. A dire il vero il fatto che sia ambientata in una società di sviluppo di videogiochi fondata da un ventenne prodigio è in realtà solo un pretesto per inscenare una serie che tiene incollati fino alla fine, dal soggetto non originale e soprattutto con un ottimo Christoph Waltz.
The Playlist (miniserie)
------------------------
The Playlist racconto la nascita di Spotify. Lo fa in una maniera originale in quanto ogni puntata è “vista” dai diversi protagonisti coinvolti (il creatore, il produttore musicale, l’avvocato, etc) che via via ricostruiscono tutta la vicenda nei minimi particolari.
Indie Game: The Movie (documentario)
------------------------------------
Seppur datato 2012, questo documentario racconta la nascita di alcuni videogiochi indie come Super Meat Boy e Braid. A quel tempo gli indiegame erano ancora davvero considerati degli azzardi commerciali in quanto ancora senza finanziamenti, publisher o distribuzione di massa. Il documentario racconta da vicino i momenti di sconforto e quelli di soddisfazione dei un ambiente che ancora oggi racchiude le stesse emozioni di allora.
Tetris
------
Tetris racconta la nascita e la distribuzione del gioco Tetris della Nintendo fornendo uno sguardo attento e puntuali sulle controversie avvenute per i diritti del videogames, a partire dal suo creatore fino a colui che tecnicamente ha gestito le operazioni (tra Russia e America) divenendo quasi un caso di stato.
Blackberry
----------
Il film racconta in maniera incalzante la nascita del primo cellulare, il BlackBerry, attraverso i due cofondatori nerd e l’aiuto di un CEO dai modi incalzanti fino alla completa disfatta del prodotto eclissato dai suoi diretti concorrenti della Apple e della Samsung. Non è una storia di una startup di successo ma di un clamoroso fallimento.
Mobile 101 (miniserie)
----------------------
La serie tv Mobile 101 racconta la rocambolesca storia di Nokia, e di come da azienda di elettrodomestici si trovò a dominare il mercato dei telefoni cellulari anche grazie al modello 101, il più piccolo smartphone di allora. Ma è anche una narrazione stile ‘Davide contro Golia’ e un viaggio negli anni ’80 e nella rivoluzione tecnologica.
Bezos – La storia di un genio
-----------------------------
Biopic sull’ascesa del fondatore di Amazon, da un garage e una scrivania fatta con una porta, fino all’impero delle vendite online che tutti conosciamo. Un film biografico, ambientato negli anni 90, che spiega l’avvio di una libreria online anche grazie al finanziamento del padre che, purtroppo, non tutti possono vantarsi di avere. Doppiaggio italiano da telenovela, fate un favore alle vostre orecchie e guardatelo in originale. Ovviamente disponibile su Prime Video.
Il codice da un miliardo di dollari (miniserie)
-----------------------------------------------
Miniserie che racconta la travagliata e sfortunata storia dello sviluppo di TerraVision, applicazione 3D per la visualizzazione di mappe satellitari, anni prima dell’uscita di Google Earth (1993 contro 2021). La miniserie ricorda molto la sceneggiatura del film The Social Network in quanto incentrata sulla battaglia legale tra la ART+COM di Berlino ed il gigante statunitense Google.
Swiped
------
Il film autobiografico racconta la vita di Whitney Wolfe la quale ha contribuito a creare 2 delle app di dating più famose al mondo: Tinder e Bumble. Attraverso un racconto romanzato si passa dai primi momenti di sconforto alla scelta del nome della app fino alle battaglie legali legate a sessismo in ufficio, fino ad arrivare alla nascita di Bumble come alternativa etica e sicura a Tinder. Diventerà la più giovane miliardaria al mondo.
Sexify (serie)
--------------
Serie polacca che racconta la spericolata creazione di una app dai contenuti sessuali sviluppata da una studentessa e due sue amiche da modi molto differenti tra loro. La prima stagione si concentra sulla ideazione e la scoperta di nuovi modi di vivere il sesso, la seconda sulla gestione vera e propria della startup tra finanziatori e problemi di liquidità.
Potrebbe interessarti anche:
----------------------------
* [\
\
15 canali Youtube che devi seguire se sviluppi in Unity](https://www.crearevideogiochi.it/15-canali-youtube-che-devi-seguire-se-sviluppi-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
* [\
\
Cosa è il 2.5D](https://www.crearevideogiochi.it/cosa-e-il-2-5d/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2F7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames%2F)
Login
---
# Differenze tra le pipeline di Unity (Built-in, URP e HDRP) - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)
==========================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
2 Gennaio 2023
In Unity, la pipeline di **rendering** è il processo attraverso il quale vengono trasformati i dati delle mesh, dei materiali e delle luci in un’immagine 2D che viene visualizzata sullo schermo. La pipeline di rendering include tutti i passaggi necessari per elaborare gli oggetti 3D nella scena, come la trasformazione delle coordinate, il calcolo dell’illuminazione e il rendering dei pixel sullo schermo.
Esistono diverse pipeline di rendering disponibili in Unity, ognuna con le proprie caratteristiche e funzionalità. La **pipeline standard** di Unity (Built-in Render Pipeline) è la pipeline di rendering predefinita e viene utilizzata in molte applicazioni. Tuttavia, Unity offre anche altre pipeline di rendering, come la pipeline **URP** (**Universal Render Pipeline**), che offre maggiore flessibilità e prestazioni rispetto alla pipeline standard. Ultima nata la pipeline **HDRP** (**High Definition Render Pipeline**) è una pipeline di rendering avanzata disponibile in Unity per creare contenuti ad alta definizione e con un’elevata qualità visiva (gestione delle luci a volumetrica, rendering di ombre di alta qualità e l’effetti di rimbalzo della luce).
In questo articolo
[Toggle](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/#)
Built-in Render Pipeline
------------------------
La pipeline standard offre un insieme di funzionalità di **rendering di base**, come la gestione delle luci, l’illuminazione globale e il rendering di ombre di base. Inoltre, la pipeline standard offre una limitata flessibilità nella personalizzazione del rendering, poiché è possibile modificare solo alcuni parametri di rendering predefiniti.
Il **forward rendering** è un tipo di rendering utilizzato nella pipeline standard di Unity per visualizzare gli oggetti 3D nella scena. In questo tipo di rendering, gli shader vengono applicati a ciascun vertice della mesh e il risultato viene utilizzato per il rendering dei pixel sullo schermo. Il forward rendering è meno efficiente in termini di prestazioni rispetto al deferred rendering, poiché richiede il calcolo degli shader per ogni vertice e ogni pixel della mesh.
Universal Render Pipeline (URP)
-------------------------------
La URP (Universal Render Pipeline) è una recente pipeline di rendering disponibile in Unity che offre **maggiore flessibilità e prestazioni** **migliori** rispetto alla pipeline standard. La URP utilizza un approccio basato sui materiali e offre una maggiore efficienza di rendering, poiché consente di creare e gestire gli shader in modo più semplice e veloce.
Inoltre, la URP offre una maggiore flessibilità nella personalizzazione del rendering, poiché è possibile modificare facilmente i parametri di rendering e creare effetti personalizzati utilizzando i nodi dello shader.
High Definition Render Pipeline (HDRP)
--------------------------------------
La pipeline HDRP (High Definition Render Pipeline) è una nuovissima pipeline di rendering avanzata disponibile in Unity per creare contenuti ad **alta definizione** e con un’elevata **qualità visiva**. La HDRP offre una serie di funzionalità avanzate per il rendering, come la gestione delle luci a volumetrica, il rendering di ombre di alta qualità e l’effetto di rimbalzo della luce.
La HDRP offre una maggiore efficienza di rendering ma non è supportata da tutte le piattaforme (es: Nintendo Switch). Per questo motivo, attualmente, viene usata principalmente per applicazioni realtime dall’elevata qualità visiva supportata da un potente sistema di calcolo.
Altre Pipeline
--------------
Oltre a queste Pipeline, Unity consente anche di creare **Scriptable Render Pipelines (SRP)** personalizzate. Attraverso SRP, si può implementare balla base la pipeline di rendering, specificando esattamente come devono essere resi gli oggetti per ottenere un controllo grafico ancora più preciso e ottimizzato per esigenze di visualizzazione particolari.
Potrebbe interessarti anche:
----------------------------
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
* [\
\
Il Mixed Mode delle luci di Unity](https://www.crearevideogiochi.it/il-mixed-mode-delle-luci-di-unity/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[0Likes](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fdifferenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp%2F)
Login
---
# Reimportare un modello 3D in Unity senza perdere materiali, referenze ed impostazioni - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/reimportare-un-modello-3d-in-unity-senza-perdere-materiali-referenze-ed-impostazioni/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/reimportare-un-modello-3d-in-unity-senza-perdere-materiali-referenze-ed-impostazioni/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/reimportare-un-modello-3d-in-unity-senza-perdere-materiali-referenze-ed-impostazioni/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Reimportare un modello 3D in Unity senza perdere materiali, referenze ed impostazioni
=====================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
7 Gennaio 2022
In un normale flusso di lavoro che prevede **modellazione 3D** e programmazione in Unity, capita di lavorare a diversi **aggiornamenti** dei modelli 3D utilizzati nel progetto.
Capita però di aver già definito in precedenza le impostazioni di **importazione**, i **materiali** e le **animazioni** associate. Eliminare il modello per poi reinserirlo non è quindi la scelta migliore in quanto cancellerebbe tali definizioni (file .meta) rendendo il lavoro laborioso e ripetitivo.
Per fare in modo di aggiornare il modello mantenendo le sue impostazioni attuali basta selezionare il modello interessato dalla cartella dei modelli o dai prefab e selezionare “Show in Explorer” che permetterà di aprire la cartella Unity in cui il modello risiede. A questo punto si può incollare il nuovo modello (soltiamente .obj, .fbx, .glb, etc) sovrascrivendolo a quello presente.
Rientrando in **Unity** il modello o il prefab verrà **ricaricato** automaticamente manentendo le stesse impostazioni della versione precedente.
Questa procedura risparmia notevole tempo per reimpostare le proprietà del modello stesso, soprattutto i materiali se questi sono numerosi.
Potrebbe interessarti anche:
----------------------------
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Campagna Kickstarter di successo: 5 cose da NON fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-5-cose-da-non-fare/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/reimportare-un-modello-3d-in-unity-senza-perdere-materiali-referenze-ed-impostazioni/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/reimportare-un-modello-3d-in-unity-senza-perdere-materiali-referenze-ed-impostazioni/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Freimportare-un-modello-3d-in-unity-senza-perdere-materiali-referenze-ed-impostazioni%2F)
Login
---
# Come abilitare la vibrazione sul XBox Gamepad (cablato o wireless) in Windows - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/come-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/come-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/come-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Come abilitare la vibrazione sul XBox Gamepad (cablato o wireless) in Windows
=============================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
29 Giugno 2023
Uno dei gamepad più usati in ambito Windows è sicuramente l’**XBox Gamepad Controlle**r (cablato o con funzionalità Wireless). Può capire che per diversi motivi smetta di implementare la funzionalità di vibrazione (rumble) sia durante sessioni di **gioco** ma anche durante sessioni di **sviluppo** (es: nello **Unity** editor).
Sembra non esserci una soluzione univoca ma di seguito un **fix** con una procedura che è possibile seguire per risolvere il **problema**.
Prima di tutto scaricare il [seguente pacchetto](https://www.crearevideogiochi.it/wp-content/uploads/2023/06/vibration-xbox-controller-windows.zip)
, realizzato direttamente dalla redazione di CreareVideogiochi.it, che presenta 2 possibili soluzioni:
1. Avviare ed eseguire Speedlink Strike Gamepad Driver installando i drivers inclusi attraverso l’eseguibile verificando poi in “Configura dispositivi di gioco USB” di Windows la presenza del Gamepad con nome Speedlink. Riavviare Windows e testare la vibrazione.
2. Avviare ed eseguire Force Feedback Driver for XInput che installerà il supporto **XInput** di diverse periferiche. Riavviare Windows e testare la vibrazione. Se non dovesse funzionare installare il file Delete\_DirectInputProperties(HKLM&HKCU).inf (con tasto destro – install) che rimuoverà delle informazioni dal registro e riprovare installazione e riavvio.
Copertina: [Immagine di vecstock](https://it.freepik.com/foto-gratuito/attrezzatura-futuristica-per-videogiochi-illuminata-nell-ia-generativa-del-nightclub_42214026.htm#query=gamepad&position=30&from_view=search&track=sph)
su Freepik
Potrebbe interessarti anche:
----------------------------
* [\
\
Eseguire la vibrazione del gamepad in un progetto…](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
Come evitare che AudioClip identici riprodotti nello…](https://www.crearevideogiochi.it/come-evitare-che-audioclip-identici-riprodotti-nello-stesso-istante-distorcano-il-volume-finale-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
[0Likes](https://www.crearevideogiochi.it/come-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/come-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcome-abilitare-la-vibrazione-sul-xbox-gamepad-cablato-o-wireless-in-windows%2F)
Login
---
# GGWG: Goose Game Without Goose - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
GGWG: Goose Game Without Goose
==============================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
15 Luglio 2023
**Nome del gioco**: GGWG – Goose Game Without Goose
**Sviluppatore:** Desdinova
**Componenti del team**: 2
**Social**: [https://www.instagram.com/ggwg\_official/](https://www.instagram.com/ggwg_official/)
**Piattaforme**: Windows, Android
**Motore**: Unity
**Genere**: Puzzle Game, Board Game
**Lingua:** Italiano, Inglese
**Stato**: Rilasciato
**STEAM:** [https://store.steampowered.com/app/3178900/GGWG\_Goose\_Game\_Without\_Goose/](https://store.steampowered.com/app/3178900/GGWG_Goose_Game_Without_Goose/)
**
ITCH.io:** [https://desdinovadev.itch.io/ggwg](https://desdinovadev.itch.io/ggwg)
**Google Play Store:** [https://play.google.com/store/apps/details?id=com.Desdinova.GGWG](https://play.google.com/store/apps/details?id=com.Desdinova.GGWG)
**Apple Store:** [https://apps.apple.com/it/app/ggwg-goose-game-without-goose/id6473903455](https://apps.apple.com/it/app/ggwg-goose-game-without-goose/id6473903455)
**Microsoft Store**: [https://apps.microsoft.com/detail/9nmc84p55093?hl=it-IT&gl=IT](https://apps.microsoft.com/detail/9nmc84p55093?hl=it-IT&gl=IT)
In questo articolo
[Toggle](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/#)
### Screenshots



### Descrizione
Un’avventura fantasy in cui impersonerai un intrepido eroe in una missione per liberare il regno da un malefico nemico.
Controllerai le mosse e le azioni del tuo avventuriero all’interno di un tenebroso castello abbandonato, fino all’ultima stanza.
Mostri e trappole cercheranno di fermarti nel raggiungere il tuo obiettivo e altri prodi paladini vorranno rubarti la gloria!
Tira i dadi, l’avventura ti aspetta!
* * Avanza nel castello, raggiungi l’ultima casella e sconfiggi il boss finale prima degli altri giocatori!
* * Usa strategicamente i dadi da 4, da 6 e da 8 per sopravvivere turno dopo turno!
* * Affronta scheletri, spettri e il leggendario Cavaliere Nero!
* * Ottieni tesori magici come la Spada Sacra o l’Amuleto Fortunato!
* * Sfrutta le scorciatoie per avanzare più velocemente nel castello!
* * …e soprattutto, non fidarti degli specchi!
### Caratteristiche principali
* * Regole del Goose Game strategicamente migliorate
* * Modalità giocatore singolo contro IA
* * Multigiocatore locale fino a 3 giocatori
* * Oltre 15 personaggi giocabili
* * Achievements sbloccabili
* * Trucchi speciali per le vacanze
* * Tiri di dadi realistici
* * Tutorial in-game
* * 20 minuti di gioco
### Download & Play
GGWG: Goose Game Without Goose by Desdinova
Potrebbe interessarti anche:
----------------------------
* [\
\
I videogiochi indie su Steam che dovresti tenere d'occhio](https://www.crearevideogiochi.it/i-videogiochi-indie-su-steam-che-dovresti-tenere-docchio/)
* [\
\
Estensioni di Google Chrome per la gestione di Steam](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Compilare un videogioco realizzato in Unity per la…](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/)
[0Likes](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/ggwg-goose-game-without-goose/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fggwg-goose-game-without-goose%2F)
Login
---
# Risorse Archivi - Pagina 3 di 3 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/risorse/page/3/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/risorse/page/3/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/risorse/page/3/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Risorse
[](https://www.crearevideogiochi.it/topdown-engine/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [TopDown Engine – Motore grafico per giochi dall’alto](https://www.crearevideogiochi.it/topdown-engine/)
TopDown Engine è il componente Unity che tutti dovrebbero avere, o perlomeno provare, per sviluppare un videogioco top down dall'alto sia 2D che 3D. Include moltissimi esempi con componenti di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/topdown-engine/#respond)
[](https://www.crearevideogiochi.it/topdown-engine/)
[](https://www.crearevideogiochi.it/realtime-in-game-log-console/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Realtime in Game Log Console](https://www.crearevideogiochi.it/realtime-in-game-log-console/)
Componente che permette di aggiungere una console direttamente in game che logga i messaggi di Unity. La particolarità di questo componente è la sua semplicità di integrazione, la personalizzazione del…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/realtime-in-game-log-console/#respond)
[](https://www.crearevideogiochi.it/realtime-in-game-log-console/)
[](https://www.crearevideogiochi.it/fullscreen-editor/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Fullscreen Editor – Sviluppare direttamente a schermo intero](https://www.crearevideogiochi.it/fullscreen-editor/)
Gioca, sviluppa, test e registra il tuo gioco in Fullscreen direttamente nell'editor di di Unity. Una delle problematiche di unity infatti è che la finestra Game dell'editor non è esattamente…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/fullscreen-editor/#respond)
[](https://www.crearevideogiochi.it/fullscreen-editor/)
[](https://www.crearevideogiochi.it/dotween-pro/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [DOTween Pro – Animazioni su path e sequenze](https://www.crearevideogiochi.it/dotween-pro/)
DOTween estende diverse classi di Unity con funzionalità di movimento e animazione facendo risparmiare notevole tempo di sviluppo e ricerca. Probabilmente una delle librerie più usate in Unity in quanto…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/dotween-pro/#respond)
[](https://www.crearevideogiochi.it/dotween-pro/)
[](https://www.crearevideogiochi.it/polaris-2021-low-poly-mesh-terrain-editor/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Polaris 2021 – Low Poly & Mesh Terrain Editor](https://www.crearevideogiochi.it/polaris-2021-low-poly-mesh-terrain-editor/)
Polaris è la soluzione più semplice per chi necessita di creare terreni low-poly direttamente in Unity. UNITY ASSETS STORE
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/polaris-2021-low-poly-mesh-terrain-editor/#respond)
[](https://www.crearevideogiochi.it/polaris-2021-low-poly-mesh-terrain-editor/)
[](https://www.crearevideogiochi.it/umodeler-model-your-world/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [UModeler – Model your World](https://www.crearevideogiochi.it/umodeler-model-your-world/)
UModeler è il miglior sistema di modellazione 3D interno a Unity, utile per prototipazione e ambienti low poly. UNITY ASSET STORE
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/umodeler-model-your-world/#respond)
[](https://www.crearevideogiochi.it/umodeler-model-your-world/)
[](https://www.crearevideogiochi.it/odin-inspector-and-serializer/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Odin – Inspector and Serializer](https://www.crearevideogiochi.it/odin-inspector-and-serializer/)
Odin modifica radicalmente l'aspetto dell'interfaccia di Unity implementando sistemi user-friendly e funzionalità fondamentali per l'organizzazione del progetto. UNITY Asset STORE
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/odin-inspector-and-serializer/#respond)
[](https://www.crearevideogiochi.it/odin-inspector-and-serializer/)
[](https://www.crearevideogiochi.it/graphy-ultimate-fps-counter-stats-monitor-debugger/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Graphy – Ultimate FPS Counter – Stats Monitor & Debugger](https://www.crearevideogiochi.it/graphy-ultimate-fps-counter-stats-monitor-debugger/)
Graphy è un componente che permette di mostarare a runtime il conteggio degli FPS e diverse altre opzioni senza necessità di utilizzare software esterni (es: FPS Monitor) UNITY Assets Store
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/graphy-ultimate-fps-counter-stats-monitor-debugger/#respond)
[](https://www.crearevideogiochi.it/graphy-ultimate-fps-counter-stats-monitor-debugger/)
[](https://www.crearevideogiochi.it/categoria/unity/risorse/page/3/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Ftopdown-engine%2F)
Login
---
# Cosa è il 2.5D - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/cosa-e-il-2-5d/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/cosa-e-il-2-5d/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/cosa-e-il-2-5d/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Curiosità](https://www.crearevideogiochi.it/categoria/curiosita/)
[Glossario](https://www.crearevideogiochi.it/categoria/curiosita/glossario/)
Cosa è il 2.5D
==============

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
17 Febbraio 2022
Si, esiste anche il **2.5D** ed è esattamente tra il 2D ed il 3D.
Di seguito una breve analisi del contesto e alcuni esempio di due dimensioni… e mezza.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/cosa-e-il-2-5d/#)
3D: le tre dimensioni
---------------------

Shrek in tutto il suo splendore in 3 dimensioni
Tutti noi abbiamo sentito parlare della visualizzazione in **tre dimensioni**, comunemente identificata come 3D, nel quale oggetti realizzati attraverso una modellazione grafica vengono inseriti all’interno di un mondo (o scena) dove possono muoversi ed interagire tra di loro in tutte e tre le **componenti** dello spazio (asse X, asse Y, asse Z). Di fatto questo tipo di visualizzazione cerca di replicare scenari e comportamenti simili alla **realtà**. I due esempi più comuni si possono trovare tra i videogiochi 3D moderni e i cartoni animati (Pixar e Disney degli ultimi anni in primis).
2D: le due dimensioni
---------------------

Mario Brothers, visualizzazione in 2 dimensioni
Ben più semplice il concetto di **due dimensioni** in quanto è facilmente riconducibile alla visualizzazione che si ottiene su di un **foglio** di carta. In questo caso si sviluppano disegni, ma sopratutto comportamenti, attraverso un approccio su **due assi** (nella quasi totalità dei casi asse X e asse Y). Non vi sono effetti ottici o altri artefatti, i movimenti avvengono in lunghezza ed altezza. Uno degli esempi che possiamo citare è di pensare alle innumerevoli partire a Mario Bros. dove è possibile muoversi solo avanti/indietro e su/giù attraverso i salti. La combinazione dei movimenti produce spostamenti anche in diagonale, ma sempre sui due assi.
2.5D: le due dimensioni… e mezza
--------------------------------
Parlare di 2.5D è però più complesso in quanto può essere interpretato in diversi modi, seppur mantenendone il concetto di base. In sostanza si tratta di **tecniche** che implementano in modi diversi sia concetti a due dimensioni che concetti a tre dimensioni. Molto spesso si tratta di “**espedienti**” che ne facilitano l’**interazione** oppure ne migliorano la **visualizzazione**.
Di seguito proverò a descrivere e mostrare diversi concetti di 2.5D, tutti validi.
#### 2D con simulazione del 3° asse
_Haggar e Andore Jr. di Final Fight in tutto il loro splendore da due dimensioni e mezza_
E’ forse l’approccio più semplice da interpretare e realizzare in quanto l’aspetto grafico è oggettivamente su due dimensioni ma i movimenti dell’oggetto nello spazio cercano di simulare il movimento sul 3° asse (solitamente l’asse Z della profondità) creando un effetto ottico di movimento in tutte le direzioni anche se ottenuto con slittamento dei piani.
#### 3D con movimenti solo su 2 assi
_R-Type Final, completamente realizzato in 3D ma movimenti in due 2D_
Questo tipo di visualizzazione è realizzata completamente in tre dimensioni attraverso la modellazione degli oggetti inseriti in un ambiente 3D ma i movimenti e l’interazione sono esclusivamente su due dimensioni. Viene quindi sfruttata la profondità e l’ambiente circostante solo per creare “atmosfera”. Un ottimo uso di questa tecnica la possiamo vedere in R-Type Final ma anche magistralmente usata nella recente [IP](https://www.crearevideogiochi.it/cosa-e-una-ip/)
Unravel (immagine di copertina del post). Questa tecnica è spesso chiamata side-scrolling (e la controparte vertical-scrolling).
In questa categoria anche il picchiaduro Street Fighter IV o il più recente platform Replaced.
#### Sprite 2D in mondo 3D
DOOM(1193) della ID Software. Il mondo è 3D ma si nota facilmente come i nemici e gli elementi siano 2D.
È l’esatto opposto del punto precedente. In questo caso abbiamo un mondo esplorabile liberamente in 3D (asse X, Y, Z), ma i personaggi o gli oggetti sono sprite 2D che “guardano” sempre verso la telecamera (detti billboard). Uno dei primi esempi, e dei più citati, è DOOM della ID Software (1993). In periodi più recenti ricordiamo Mario Paper e Octopath Traveler.
#### Visuale isometrica
Sim City, gioco dalla visuale isometrica 3.5D
In questo contesto rientrano tutti i giochi realizzati con grafica 2D in visuale isometrica con angolo fisso a 45° e costituita da tiles 2D (prerenderizzate) che vengono piazzate su di un terreno solitamente in 3D semplificato.
Un esempio di questo tipo di gioco è il famoso Sim City.
#### Un caso ambiguo: 2D con aspetto grafico 3D pre-renderizzato
Donkey Kong Country per SNES, platform 2D realizzato con sprite prerenderizzati 3D
Questo è un utilizzo “ambiguo” della grafica in tre dimensioni in quanto viene utilizzata unicamente per realizzare, di fatto, sprite 2D evitandone quindi la realizzazione grafica manuale. Il motore grafico quindi è sviluppato in due dimensioni, così come i movimenti ma la grafica finale è precalcolata (pre-renderizzata) in tre dimensioni e convertita in sprite. Molto spesso viene considerato erroneamente 2.5D ma è in realtà è unicamente 2D.
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [\
\
Evitare problemi di Scattering dovuti alla distanza…](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
* [\
\
Cosa è il Voxel](https://www.crearevideogiochi.it/i-voxel-la-versione-3d-del-pixel/)
[0Likes](https://www.crearevideogiochi.it/cosa-e-il-2-5d/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/cosa-e-il-2-5d/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcosa-e-il-2-5d%2F)
Login
---
# Risorse Archivi - Pagina 2 di 3 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/risorse/page/2/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/risorse/page/2/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/risorse/page/2/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Risorse
[](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta 2023 dei migliori Asset di Unity per sviluppare videogames – Unity Asset Store](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/)
Non esisterebbe Unity se non esistesse lo Unity Asset Store, il portale che raccoglie tutte le estensioni per l'ambiente di sviluppo stesso. Un portale ricco di spunti sia per lo…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/#respond)
[](https://www.crearevideogiochi.it/raccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store/)
[](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Gaia Pro 2021 – Terrain & Scene Generator](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/)
Gaia Pro è il più potente asset per la generazione di mondi procedurali per Unity. Permette di creare in semplice passi terreni e ambientazioni procedurali per mobile, dekstop, VR e…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/#respond)
[](https://www.crearevideogiochi.it/gaia-pro-2021-terrain-scene-generator/)
[](https://www.crearevideogiochi.it/dialogue-system-for-unity-gestione-dei-dialoghi/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Dialogue System for Unity – Gestione dei dialoghi](https://www.crearevideogiochi.it/dialogue-system-for-unity-gestione-dei-dialoghi/)
Dialogue System for Unity permette di aggiungere dialoghi e quest al proprio gioco. E' un sistema robusto e potente sviluppato attraverso un editor a nodi accessibile tramite UI, molto leggero…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/dialogue-system-for-unity-gestione-dei-dialoghi/#respond)
[](https://www.crearevideogiochi.it/dialogue-system-for-unity-gestione-dei-dialoghi/)
[](https://www.crearevideogiochi.it/ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Ruler 2D: Align, Guides & Grid: Estensione per allineare elementi 2D Unity](https://www.crearevideogiochi.it/ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity/)
Ruler 2D è un'estensione di Unity che permette di allineare elementi 2D tra loro, raggruppandoli. Di fatto va a colmare una grande lacuna di Unity stesso che durante la fase…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity/#respond)
[](https://www.crearevideogiochi.it/ruler-2d-align-guides-grid-estensione-per-allineare-elementi-2d-unity/)
[](https://www.crearevideogiochi.it/pun-2-unity-multiplayer-networking/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [PUN 2 – Unity Multiplayer Networking](https://www.crearevideogiochi.it/pun-2-unity-multiplayer-networking/)
PUN è tutto quello che serve per integrare funzionalità multiplayer nei propri giochi e lanciarli globalmente. Ci si può dimenticare quindi di hosting, problemi di connessione e di latenza. PUN…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/pun-2-unity-multiplayer-networking/#respond)
[](https://www.crearevideogiochi.it/pun-2-unity-multiplayer-networking/)
[](https://www.crearevideogiochi.it/rewired-gestione-delle-periferiche-di-input-per-unity/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Rewired – Gestione delle periferiche di input per Unity](https://www.crearevideogiochi.it/rewired-gestione-delle-periferiche-di-input-per-unity/)
Rewired permette di gestione tutte le periferiche di input in maniera organizzata a strutturata. Permette di creare profili e di gestire la rimappatura dei tasti e delle funzionalità in maniera…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/rewired-gestione-delle-periferiche-di-input-per-unity/#respond)
[](https://www.crearevideogiochi.it/rewired-gestione-delle-periferiche-di-input-per-unity/)
[](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Lista dei migliori Asset Unity per videogiochi indie del 2022 – Unity Asset Store](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
E' indubbio che lo Unity Asset Store sia il coltellino svizzero di tutti i programmatori che utilizzano Unity. Al suo interno infatti è possibile trovare assets gratuiti e a pagamento…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/#respond)
[](https://www.crearevideogiochi.it/lista-dei-migliori-asset-unity-per-videogiochi-indie-del-2022-unity-asset-store/)
[](https://www.crearevideogiochi.it/flat-kit-toon-shading-and-water/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Flat Kit: Toon Shading and Water](https://www.crearevideogiochi.it/flat-kit-toon-shading-and-water/)
Flat Kit è una soluzione integrata per ottenere il classico effetto cel-shading (stile fumetto, per intenderci) da applicare alla scena Unity come post processing. Di seguito alcune funzionalità interessanti: Polished…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/flat-kit-toon-shading-and-water/#respond)
[](https://www.crearevideogiochi.it/flat-kit-toon-shading-and-water/)
[](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Final IK – Cinematica inversa](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/)
Pressoché considerato da tutti l'asset definitivo per gestire la cinematica inversa (Inverse Kinamtics - IK) in Unity. Semplicissimo da installare, configurare ed usare permette di ottenere il risultato della cinematica…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/#respond)
[](https://www.crearevideogiochi.it/final-ik-cinematica-inversa/)
[](https://www.crearevideogiochi.it/avpro-video/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
[Video](https://www.crearevideogiochi.it/categoria/unity/video/)
#### [AVPro Video – Gestione alternativa dei video](https://www.crearevideogiochi.it/avpro-video/)
AVPro Video - Core Edition è un componente per l'editor di Unity che permette di gestire in modo perfetto ed incredibile i video riprodotti nelle applicazioni Unity. Gestisce file in…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/avpro-video/#respond)
[](https://www.crearevideogiochi.it/avpro-video/)
[](https://www.crearevideogiochi.it/categoria/unity/risorse/page/2/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fraccolta-2023-dei-migliori-asset-di-unity-per-sviluppare-videogames-unity-asset-store%2F)
Login
---
# Compilare un videogioco realizzato in Unity per la pubblicazione su Microsoft Store - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Compilare un videogioco realizzato in Unity per la pubblicazione su Microsoft Store
===================================================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
3 Aprile 2026
Uno degli **store** meno altisonanti, al contrario di Steam, è senza dubbio il **Microsoft Store** che permette di cercare ed installare una moltitudine di applicativi sul proprio dispositivo Windows 10 e 11.
E’ possibile rendere disponibile il proprio videogioco o la propria app sullo store Microsoft a patto di compilarlo tramite UWP (Universal Windows Platform), modulo aggiuntivo di Unity.
Di seguito la procedura per poter **buildare** il proprio videogioco prodotto in **Unity** per [renderlo disponibile](https://developer.microsoft.com/it-it/microsoft-store)
sul Microsoft Store.
In questo articolo
[Toggle](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/#)
Prerequisiti
------------
* Se non ancora installato, installare Visual Studio (si consiglia Visual Studio Community, gratuito)
* Se non ancora installato, installare il modulo Universal Windows Platform development per Visual Studio, ponendo attenzione alla selezione dell’opzione C++ Universal Windows Platform Tools ([info qui](https://discussions.unity.com/t/selected-visual-studio-is-missing-required-components-and-may-not-be-able-to-build-the-generated/699501/9)
)
* Se non ancora installato, installare il modulo Universal Windows Platform per la versione di Unity dell’editor di progetto.
Build Unity
-----------
* Dopo aver avviato Unity passare alla build Universal Windows Platform.
* In Project Settings -> Player -> Publishing Setting -> Certificate generare un nuovo certificato (con password) e verificare di averlo aggiunto. Si tratta di un certificato unicamente locale, la versione che verrà pubblicata verrà firmata dallo store.
* Accedere ai Build Settings e verificare di aver Selezionato la propria versione di Visual Studio, il Build and Run sulla macchina locale e la Build Configuration in Master.
* Eseguire la build del progetto in una directory specificata. Verrà generata una solution di Visual Studio.
Compilazione in Visual Studio
-----------------------------
* Aprire la solution Visual Studio (la stessa versione definita durante la fase di build) e verificare che nella colonna di sinistra tutti i progetti siano caricati. Qualora vi sia un progetto “unloaded”, premere tasto destro ed eseguire il Reload.
* Tramite il Solution Explorer aprire la directory del progetto con il nome del gioco (seguito da Universal Windows), espandere il gruppo “references” ed eliminare l’ultima voce “Windows Mobile” che da problemi di referenza ([info qui](https://stackoverflow.com/questions/79672448/could-not-find-sdk-windowsmobile-version-10-0-26100-0-when-deploying-hololens)
).
* Verificare che la versione che si sta buildando sia in modalità Master e non le classiche Release o Debug (in tal caso verrà mostrata la scritta “Development Build” nel gioco caricato sullo store).
* Cliccare il file Package.appxmanifest e sotto Packaging selezionare da file il certificato generato in Unity (inserendone la password). Verificare inoltre il numero di versione corretto (ATTENZIONE: ad ogni build, Visual Studio aumenta l’ultima cifra della build in modo automatico).
* Nelal sezione Visual Assets, alla voce All Visual Assets, caricare un logo e generare tutte le versioni dei loghi necessari per lo store.
* Lanciare la solution premendo il tasto “Start Without Debugging”. Se l’applicativo viene compilato e parte significa che è tutto pronto per impacchettare il progetto per lo Store di Microsoft. Verificare che in basso a destra non ci sia la scritta “Development Build”.
Generazione del pacchetto da caricare
-------------------------------------
* Premere il tasto destro sulla directory del progetto, quindi Publish > Associate App with the Store selezionando poi la prima opzione disponibile “Microsoft Store as \[nome del gioco\]” (dovrete prima aver inserito il vostro gioco nell’interfaccia dello store [qui](https://developer.microsoft.com/it-it/microsoft-store)
)
* Nella sezione successiva impostare la voce “Generate App Bundle” su Always e deselezionare le componenti ARM, avviando poi la compilazione.
* Verranno eseguite tante compilazioni quante le versioni scelte di rilascio (come ad esempio x86 e x64).
* Una volta terminate le compilazioni verrà avviato in automatico l’applicativo “Windows App Certification Kit” il quale esegue una serie di test veloci sul pacchetto appena creato. Attendere il risultato senza preoccuparsi del risultato (il più delle volte il test fallisce).
* La compilazione genera diversi pacchetti tra cui quello con estensione .msix e .msixbudle.
La versione da caricare sullo store Microsoft è però invece quella con estensione .msixupload (in quanto è quella con il certificato firmato correttamente). Tale file si trova nella root della build Visual Studio sotto \\AppPackages\\NomeProgetto
Potrebbe interessarti anche:
----------------------------
* [\
\
Come sviluppare una app non-game per iOS e Android in Unity](https://www.crearevideogiochi.it/come-sviluppare-una-app-non-game-per-ios-e-android-in-unity/)
* [\
\
La MEGA-Guida italiana all'uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
* [\
\
Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
* [\
\
7 consigli per costruire una community da sfruttare…](https://www.crearevideogiochi.it/7-consigli-per-costruire-una-community-da-sfruttare-nel-lancio-di-un-videogioco-indie-su-kickstarter/)
* [\
\
Campagna Kickstarter di successo: 8 cose da fare](https://www.crearevideogiochi.it/campagna-kickstarter-di-successo-8-cose-fare/)
* [\
\
Come sviluppare per Oculus Quest 2 con Unity](https://www.crearevideogiochi.it/come-sviluppare-per-oculus-quest-2-con-unity/)
[0Likes](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/compilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fcompilare-un-videogioco-realizzato-in-unity-per-la-pubblicazione-su-microsoft-store%2F)
Login
---
# Daniele Ferla, Autore presso Creare Videogiochi - Pagina 16 di 16
[Skip to content](https://www.crearevideogiochi.it/author/administrator/page/16/#content_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/author/administrator/page/16/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Daniele Ferla
155 articles published
30
[Dic 2021](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Alcune cose che dovresti sapere se utilizzi Unity 3D per sviluppare videogiochi](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
\[ELENCO IN COSTANTE AGGIORNAMENTO\] Di seguito una lista non ordinata di alcuni concetti con cui mi sono scontrato durante l'utilizzo di Unity 3D per lo sviluppo di videogiochi o simulazioni.…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/#respond)
[](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
30
[Dic 2021](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/)
[](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Abilitare l’autocomplete(intellisense) per Visual Studio in Unity 3D](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/)
Per chi programma molto Unity3D con gli script, purtroppo può capitare che l’editor Visual Studio non riconosca l’auto-completamento (o intellisense) degli oggetti principali. Questo problema, oltre che ad essere molto…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/#respond)
[](https://www.crearevideogiochi.it/abilitare-autocomplete-intellisense-per-visual-studio-in-unity-3d/)
29
[Dic 2021](https://www.crearevideogiochi.it/cubettiny/)
[](https://www.crearevideogiochi.it/cubettiny/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Cubettiny](https://www.crearevideogiochi.it/cubettiny/)
Il primo gioco in cui il game design è stata scritto completamente dall’intelligenza artificiale, lo sviluppo realizzato da umani.
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/cubettiny/#respond)
[](https://www.crearevideogiochi.it/cubettiny/)
29
[Dic 2021](https://www.crearevideogiochi.it/sors-adversa/)
[](https://www.crearevideogiochi.it/sors-adversa/)
[Giochi indie](https://www.crearevideogiochi.it/categoria/giochi-indie/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Sors Adversa](https://www.crearevideogiochi.it/sors-adversa/)
Sors Adversa è un tributo low-poly agli sparatutto della vecchia scuola con lunghi livelli dettagliati e combattimenti contro enormi boss. Utilizza uno grafica a scorrimento diagonale e una vasta quantità…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/sors-adversa/#respond)
[](https://www.crearevideogiochi.it/sors-adversa/)
29
[Dic 2021](https://www.crearevideogiochi.it/nasce-creare-videogiochi/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
#### [Nasce il portale ‘Creare Videogiochi’](https://www.crearevideogiochi.it/nasce-creare-videogiochi/)
Nasce il portale 'Creare Videogiochi' dalla passione verso i videogiochi, lo sviluppo e tutta la scena indie nazionale ed internazionale. Qualcosa che manca nel panorama italiano di questo settore. Un…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/nasce-creare-videogiochi/#respond)
[](https://www.crearevideogiochi.it/nasce-creare-videogiochi/)
[](https://www.crearevideogiochi.it/author/administrator/page/16/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fnasce-creare-videogiochi%2F)
Login
---
# Guide Archivi - Pagina 2 di 7 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/guide/page/2/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/guide/page/2/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/guide/page/2/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Guide
[](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare BepInEx e Unity Explorer per il debug di un gioco creato con Unity](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
ATTENZIONE: La presente guida si intende unicamente a scopo illustrativo e di ricerca. Creare Videogiochi non promuove in alcun modo l'hacking e il modding di applicativi Unity senza consenso o…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/#respond)
[](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
[](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
Scegliere il template Unity: 2D (URP) o 2D Core Poiché la tua app mostra dati in una tabella e non necessita di grafica 3D complessa, il template 2D è la…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/#respond)
[](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [La MEGA-Guida italiana all’uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
Quando si parla di Addressables in Unity si tende generalmente a considerarlo un argomento ostico e di difficile comprensione in quanto molto complesso nella configurazione, nella gestione e nella distribuzione…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/#respond)
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come configurare un progetto Unity per una build Android](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
Unity è uno strumento molto potente e permette di creare facilmente applicazioni per dispositivi mobile. La configurazione del progetto per build Android però potrebbe essere difficoltosa e necessitare di verifiche…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/#respond)
[](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
[](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Le migliori librerie gratuite per lo sviluppo di videogiochi multiplayer in Unity](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
Per sviluppare un gioco multiplayer con Unity, scegliere la giusta libreria di networking è fondamentale. Esistono diverse soluzioni gratuite che offrono funzionalità avanzate per sincronizzare oggetti, gestire connessioni e ottimizzare…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/#respond)
[](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
[](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Eseguire la vibrazione del gamepad in un progetto Unity tramite Rewired](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
Nei giochi moderni il supporto alla vibrazione del gamepad di giocco (spesso indicata con "Rumble") è di fondamentale importanza per la giocabilità e l'accessibilità. Il giocatore è abituato a sentire…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/#respond)
[](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
[](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Visualizzare e selezionare oggetti Cast Shadow = Shadow Only nell’editor di Unity](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/)
Uno dei problemi dell'editor di Unity è che gli oggetti di cui abbiamo impostato la proprietà del Renderer Cast Shadow uguale a Shadow Only è che non vengono in alcun…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/#respond)
[](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/)
[](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
Meta Quest 3 non è unicamente un sistema chiuso, ma è un sistema molto aperto che permette molteplici attività tra cui lo sviluppo di applicativi tramite Unity. Meta ha quindi…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/#respond)
[](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Disabilitare l’oscuramento dello schermo per inattività su dispositivi Android/iOS in giochi sviluppati con Unity](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/)
In alcuni contesti di videogiochi o applicazioni può essere necessario disabilitare l'oscuramento per inattività dello schermo, come ad esempio in cutscene, introduzioni o momenti in cui non vi è interazione…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/#respond)
[](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore “CommandInvokationFailure: Gradle build failed” in Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/)
Quando si cerca di compilare un progetto Unity per Android, si può incorrere nell'errore "CommandInvokationFailure: Gradle build failed" al termine del processo di creazione del bundle Android. Questo tipo di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-commandinvokationfailure-gradle-build-failed-in-unity/)
[](https://www.crearevideogiochi.it/categoria/unity/guide/page/2/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fconfigurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity%2F)
Login
---
# Guide Archivi - Pagina 3 di 7 - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/guide/page/3/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/guide/page/3/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/guide/page/3/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
#### Guide
[](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Evitare problemi di Scattering dovuti alla distanza dall’origine in Unity](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
In Unity, quando si crea un livello in cui il giocatore si muove continuamente in una data direzione, uno dei problemi principali da considerare è la precisione a virgola mobile,…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/#respond)
[](https://www.crearevideogiochi.it/evitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity/)
[](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Evitare eventi di doppie collisioni tra padre e figli in Unity](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/)
In Unity, quando un oggetto padre ha dei figli con dei collider associati, è normale che la funzione OnCollisionEnter del padre riceva gli eventi di collisione generati dai collider dei…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/#respond)
[](https://www.crearevideogiochi.it/evitare-eventi-di-doppie-collisioni-tra-padre-e-figli-in-unity/)
[](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come contribuiscono i Collider tra padre e figli agli eventi di collisione in Unity](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
Una delle situazioni più difficili da gestire in Unity è quando si ha un oggetto composto da diversi figli i quali hanno colliders e/o rigidbody associati. In tal caso è…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-contribuiscono-i-collider-tra-padre-e-figli-agli-eventi-di-collisione-in-unity/)
[](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Mettere in pausa il PlayMode di Unity con un unico tasto](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/)
Quando si avvia il PlayMode di Unity gli unici due modi per metterlo in pausa sono: Utilizzare il pulsante di pausa nella barra degli strumenti Utilizzare la combinazione di tasti…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/#respond)
[](https://www.crearevideogiochi.it/mettere-in-pausa-il-playmode-di-unity-con-un-unico-tasto/)
[](https://www.crearevideogiochi.it/rinominare-un-progetto-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Rinominare un progetto Unity](https://www.crearevideogiochi.it/rinominare-un-progetto-unity/)
A volte può capitare di dover rinominare un progetto interno di Unity in quanto, durante lo sviluppo, possono sorgere cambi di naming o necessità di archiviazione. Cambiare il nome del…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/rinominare-un-progetto-unity/#respond)
[](https://www.crearevideogiochi.it/rinominare-un-progetto-unity/)
[](https://www.crearevideogiochi.it/impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Impostare la risoluzione grafica in stile ‘retro’ 8bit in Unity](https://www.crearevideogiochi.it/impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity/)
Negli ultimi tempi nel mondo dei videogiochi sta tornando alla ribalta la grafica retro-style, spesso definita come 480x360. Questo tipo di risoluzione permette quindi di simulare l'aspetto di giochi da…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity/#respond)
[](https://www.crearevideogiochi.it/impostare-la-risoluzione-grafica-in-stile-retro-8bit-in-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere il problema della preview non visualizzata dei prefab di Unity](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/)
Può capitare che durante l'utilizzo di Unity, quando ad esempio si importano prefab da pacchetti asset esterni, non vengano visualizzate le preview nell'editor di progetto e dunque sia pressoché impossibile…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-il-problema-della-preview-non-visualizzata-dei-prefab-di-unity/)
[](https://www.crearevideogiochi.it/visualizzare-caratteri-cirillici-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Visualizzare caratteri cirillici in Unity](https://www.crearevideogiochi.it/visualizzare-caratteri-cirillici-in-unity/)
Uno degli aspetti fondamentali della gestione multilingua di un progetto Unity è quello di capire come poter visualizzare lettere particolari e ideogrammi attraverso i normali fonts utilizzati nella UI, magari…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/visualizzare-caratteri-cirillici-in-unity/#respond)
[](https://www.crearevideogiochi.it/visualizzare-caratteri-cirillici-in-unity/)
[](https://www.crearevideogiochi.it/come-testare-una-build-di-unity-per-linux-in-windows/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come testare una build di Unity per Linux in Windows](https://www.crearevideogiochi.it/come-testare-una-build-di-unity-per-linux-in-windows/)
Quando si vuole rilasciare una applicazione o un gioco Unity anche per Linux è necessario testarla nello stesso ambiente. Una semplice soluzione è quella di installare una macchina virtuale Linux…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-testare-una-build-di-unity-per-linux-in-windows/#respond)
[](https://www.crearevideogiochi.it/come-testare-una-build-di-unity-per-linux-in-windows/)
[](https://www.crearevideogiochi.it/scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Scrivere un file su disco al termine di una build Unity con la funzione OnPostprocessBuild](https://www.crearevideogiochi.it/scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild/)
Può capitare, nello sviluppo di applicativi in Unity, di avere la necessità di far compiere una azione all'editor al termine di una build. Uno dei casi più semplici è quello…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild/#respond)
[](https://www.crearevideogiochi.it/scrivere-un-file-su-disco-al-termine-di-una-build-unity-con-la-funzione-onpostprocessbuild/)
[](https://www.crearevideogiochi.it/categoria/unity/guide/page/3/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fevitare-problemi-di-scattering-dovuti-alla-distanza-dallorigine-in-unity%2F)
Login
---
# Daniele Ferla, Autore presso Creare Videogiochi - Pagina 3 di 16
[Skip to content](https://www.crearevideogiochi.it/author/administrator/page/3/#content_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/author/administrator/page/3/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Daniele Ferla
155 articles published
10
[Set 2025](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
[](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare BepInEx e Unity Explorer per il debug di un gioco creato con Unity](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
ATTENZIONE: La presente guida si intende unicamente a scopo illustrativo e di ricerca. Creare Videogiochi non promuove in alcun modo l'hacking e il modding di applicativi Unity senza consenso o…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/#respond)
[](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
08
[Set 2025](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
[](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
[Plastic SCM](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare un progetto Unity esistente per Unity DevOps Version Control (ex Plastic SCM)](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
La prima opzione che viene in mente di usare per gestire il versioning di un proprio progetto Unity è senza dubbio Git in quanto strumento utilizzato ampiamente nel mondo IT…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/#respond)
[](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
03
[Set 2025](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Steam](https://www.crearevideogiochi.it/categoria/marketing/steam/)
#### [Estensioni di Google Chrome per la gestione di Steam](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
Di seguito una esaustiva raccolta di estensione per il browser web Google Chrome che permettono l'arricchimento della pagina del sito Steam attraverso funzioni e proprietà utili come ad esempio il…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/#respond)
[](https://www.crearevideogiochi.it/estensioni-di-google-chrome-per-la-gestione-di-steam/)
05
[Ago 2025](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
[](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Unity 6 Shaders and Effects Cookbook – 5° edizione](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
"Unity 6 Shaders and Effects Cookbook" di John P.Doran è un libro di 500 pagine che racchiude tutto lo scibile riguardante la generazione e la scrittura di shader in Unity…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/#respond)
[](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
22
[Apr 2025](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
Scegliere il template Unity: 2D (URP) o 2D Core Poiché la tua app mostra dati in una tabella e non necessita di grafica 3D complessa, il template 2D è la…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/#respond)
[](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
22
[Apr 2025](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Asset e componenti indispensabili per lo sviluppo di una app non-game per Android con Unity](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
Unity è sicuramente un sistema potente ed affidabile per la creazione di videogiochi e applicazioni grafica multimediali. Viene però molto meno usato però nella realizzazione di app Android non-games di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/#respond)
[](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
10
[Apr 2025](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [La MEGA-Guida italiana all’uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
Quando si parla di Addressables in Unity si tende generalmente a considerarlo un argomento ostico e di difficile comprensione in quanto molto complesso nella configurazione, nella gestione e nella distribuzione…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/#respond)
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
24
[Mar 2025](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
[](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come configurare un progetto Unity per una build Android](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
Unity è uno strumento molto potente e permette di creare facilmente applicazioni per dispositivi mobile. La configurazione del progetto per build Android però potrebbe essere difficoltosa e necessitare di verifiche…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/#respond)
[](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
21
[Mar 2025](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
[](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Le migliori librerie gratuite per lo sviluppo di videogiochi multiplayer in Unity](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
Per sviluppare un gioco multiplayer con Unity, scegliere la giusta libreria di networking è fondamentale. Esistono diverse soluzioni gratuite che offrono funzionalità avanzate per sincronizzare oggetti, gestire connessioni e ottimizzare…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/#respond)
[](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
14
[Mar 2025](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
[](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Eseguire la vibrazione del gamepad in un progetto Unity tramite Rewired](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
Nei giochi moderni il supporto alla vibrazione del gamepad di giocco (spesso indicata con "Rumble") è di fondamentale importanza per la giocabilità e l'accessibilità. Il giocatore è abituato a sentire…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/#respond)
[](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
[](https://www.crearevideogiochi.it/author/administrator/page/3/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Feseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired%2F)
Login
---
# Guide e tutorials in italiano per sviluppare videogiochi in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/page/2/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/page/2/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/page/2/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Unity
[](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Aprire nativamente file GLTF e GLB in Unity (con supporto a compressione DRACO)](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
I formati GLTF e GLB negli ultimi anni sono diventati di fatto uno standard nella visualizzazione sul web in quanto molto performanti ed ottimizzati, anche grazie alla compressione DRACO. DI…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/#respond)
[](https://www.crearevideogiochi.it/aprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco/)
[](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Raccolta dei migliori asset di Unity, divisi per anno](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
la redazione di Creare Videogiochi ogni anno crea a mantiene una lista degli asset di Unity presenti sull'Asset Store meritevoli di attenzione in quanto specifici, ben documenti, aggiornati e di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/#respond)
[](https://www.crearevideogiochi.it/raccolta-dei-migliori-asset-di-unity-divisi-per-anno/)
[](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Visualizzare un Interstitial ADS di Unity Level Play Ads Mediation](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
Unity LevelPlay è diventato da poco il sistema principale per la gestione degli annunci di Unity (dopo l'acquisizione avvenuta nel 2023 di ironSource). Per iniziare a sviluppare la soluzione integrata…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/#respond)
[](https://www.crearevideogiochi.it/visualizzare-un-interstitial-ads-di-unity-level-play-ads-mediation/)
[](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Creare una applicazione trasparente che gira sul Desktop di Windows in Unity](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
Transparent Desktop Window Controller ti permette di creare una finestra trasparente per il tuo gioco o la tua applicazione in modo che giri sul Desktop di Windows. L’asset è flessibile…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/#respond)
[](https://www.crearevideogiochi.it/creare-una-applicazione-trasparente-che-gira-sul-desktop-di-windows-in-unity/)
[](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Usare AdsMediation LevelPlay (ex ironSource) di Unity per gestire gli annunci in-game su Android](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
Era il 2022 quando Unity concludeva l'acquisizione del servizio ironForce per la gestione della monetizzazione in-game in applicativi sviluppati con il proprio editor. Ad oggi il servizio è chiamato LevelPlay…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/#respond)
[](https://www.crearevideogiochi.it/usare-adsmediation-levelplay-ex-ironsource-di-unity-per-gestire-gli-annunci-in-game-su-android/)
[](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare BepInEx e Unity Explorer per il debug di un gioco creato con Unity](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
ATTENZIONE: La presente guida si intende unicamente a scopo illustrativo e di ricerca. Creare Videogiochi non promuove in alcun modo l'hacking e il modding di applicativi Unity senza consenso o…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/#respond)
[](https://www.crearevideogiochi.it/configurare-bepinex-e-unity-explorer-per-il-debug-di-un-gioco-creato-con-unity/)
[](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
[Plastic SCM](https://www.crearevideogiochi.it/categoria/unity/plastic-scm/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare un progetto Unity esistente per Unity DevOps Version Control (ex Plastic SCM)](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
La prima opzione che viene in mente di usare per gestire il versioning di un proprio progetto Unity è senza dubbio Git in quanto strumento utilizzato ampiamente nel mondo IT…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/#respond)
[](https://www.crearevideogiochi.it/configurare-un-progetto-unity-esistente-per-unity-devops-version-control-ex-plastic-scm/)
[](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Unity 6 Shaders and Effects Cookbook – 5° edizione](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
"Unity 6 Shaders and Effects Cookbook" di John P.Doran è un libro di 500 pagine che racchiude tutto lo scibile riguardante la generazione e la scrittura di shader in Unity…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/#respond)
[](https://www.crearevideogiochi.it/unity-6-shaders-and-effects-cookbook-5-edizione/)
[](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Configurare una app Android che legge file Excel in Unity](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
Scegliere il template Unity: 2D (URP) o 2D Core Poiché la tua app mostra dati in una tabella e non necessita di grafica 3D complessa, il template 2D è la…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/#respond)
[](https://www.crearevideogiochi.it/configurare-una-app-android-che-legge-file-excel-in-unity/)
[](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Asset e componenti indispensabili per lo sviluppo di una app non-game per Android con Unity](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
Unity è sicuramente un sistema potente ed affidabile per la creazione di videogiochi e applicazioni grafica multimediali. Viene però molto meno usato però nella realizzazione di app Android non-games di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/#respond)
[](https://www.crearevideogiochi.it/asset-e-componenti-indispensabili-per-lo-sviluppo-di-una-app-non-game-per-android-con-unity/)
[](https://www.crearevideogiochi.it/categoria/unity/page/2/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Faprire-nativamente-file-gltf-e-glb-in-unity-con-supporto-a-compressione-draco%2F)
Login
---
# Guide e tutorials in italiano per sviluppare videogiochi in Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/categoria/unity/page/3/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/categoria/unity/page/3/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/categoria/unity/page/3/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)

#### Unity
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [La MEGA-Guida italiana all’uso degli Addressables in Unity](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
Quando si parla di Addressables in Unity si tende generalmente a considerarlo un argomento ostico e di difficile comprensione in quanto molto complesso nella configurazione, nella gestione e nella distribuzione…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/#respond)
[](https://www.crearevideogiochi.it/la-mega-guida-italiana-alluso-degli-addressables-in-unity/)
[](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come configurare un progetto Unity per una build Android](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
Unity è uno strumento molto potente e permette di creare facilmente applicazioni per dispositivi mobile. La configurazione del progetto per build Android però potrebbe essere difficoltosa e necessitare di verifiche…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/#respond)
[](https://www.crearevideogiochi.it/come-configurare-un-progetto-unity-per-una-build-android/)
[](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Le migliori librerie gratuite per lo sviluppo di videogiochi multiplayer in Unity](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
Per sviluppare un gioco multiplayer con Unity, scegliere la giusta libreria di networking è fondamentale. Esistono diverse soluzioni gratuite che offrono funzionalità avanzate per sincronizzare oggetti, gestire connessioni e ottimizzare…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/#respond)
[](https://www.crearevideogiochi.it/le-migliori-librerie-gratuite-per-lo-sviluppo-di-videogiochi-multiplayer-in-unity/)
[](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Eseguire la vibrazione del gamepad in un progetto Unity tramite Rewired](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
Nei giochi moderni il supporto alla vibrazione del gamepad di giocco (spesso indicata con "Rumble") è di fondamentale importanza per la giocabilità e l'accessibilità. Il giocatore è abituato a sentire…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/#respond)
[](https://www.crearevideogiochi.it/eseguire-la-vibrazione-del-gamepad-in-un-progetto-unity-tramite-rewired/)
[](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
[Marketing](https://www.crearevideogiochi.it/categoria/marketing/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Social Media](https://www.crearevideogiochi.it/categoria/marketing/social-media/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Canali Telegram che dovresti seguire se sei uno sviluppatore Unity di videogiochi indie](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
Telegram è un sistema di messaggistica molto potente ma anche un social network dalle mille risorse. La differenza principale rispetto ad altre app è quella di offrire la possibilità di…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/#respond)
[](https://www.crearevideogiochi.it/canali-telegram-che-dovresti-seguire-se-sei-uno-sviluppatore-unity-di-videogiochi-indie/)
[](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Visualizzare e selezionare oggetti Cast Shadow = Shadow Only nell’editor di Unity](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/)
Uno dei problemi dell'editor di Unity è che gli oggetti di cui abbiamo impostato la proprietà del Renderer Cast Shadow uguale a Shadow Only è che non vengono in alcun…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/#respond)
[](https://www.crearevideogiochi.it/visualizzare-e-selezionare-oggetti-cast-shadow-shadow-only-nelleditor-di-unity/)
[](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[Redazione](https://www.crearevideogiochi.it/categoria/redazione/)
[Risorse](https://www.crearevideogiochi.it/categoria/unity/risorse/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [I migliori asset Unity per sviluppatori indie presenti sull’Asset Store nel 2025](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
Tutti gli sviluppatori Unity conoscono bene l'Asset Store in quanto fonte inesauribile di componenti e asset utili nella creazione di applicativi e videogiochi. Gratuiti o a pagamento che siano, sono…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/#respond)
[](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
[](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Realtà Virtuale](https://www.crearevideogiochi.it/categoria/realta-virtuale/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Sviluppare una app XR per Meta Quest 3 in Unity](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
Meta Quest 3 non è unicamente un sistema chiuso, ma è un sistema molto aperto che permette molteplici attività tra cui lo sviluppo di applicativi tramite Unity. Meta ha quindi…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/#respond)
[](https://www.crearevideogiochi.it/sviluppare-una-app-xr-realta-mista-per-meta-quest-3-in-unity/)
[](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Disabilitare l’oscuramento dello schermo per inattività su dispositivi Android/iOS in giochi sviluppati con Unity](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/)
In alcuni contesti di videogiochi o applicazioni può essere necessario disabilitare l'oscuramento per inattività dello schermo, come ad esempio in cutscene, introduzioni o momenti in cui non vi è interazione…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/#respond)
[](https://www.crearevideogiochi.it/disabilitare-loscuramento-dello-schermo-per-inattivita-su-dispositivi-android-ios-in-giochi-sviluppati-con-unity/)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/)
[Android](https://www.crearevideogiochi.it/categoria/unity/android/)
[Risoluzione di errori](https://www.crearevideogiochi.it/categoria/unity/risoluzione-di-errori/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
#### [Come risolvere l’errore ‘RenderTexture.Create failed depth/stencil format unsupported – D32 SFloat S8 UInt (94)’ per Android in Unity](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/)
Può capitare, durante il runtime di un applicativo Unity compilato per Android, di incorrere nell'errore "RenderTexture.Create failed depth/stencil format unsupported - D32 SFloat S8 UInt (94) - There is no…
[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[0Comments](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/#respond)
[](https://www.crearevideogiochi.it/come-risolvere-lerrore-rendertexture-create-failed-depth-stencil-format-unsupported-d32-sfloat-s8-uint-94-per-android-in-unity/)
[](https://www.crearevideogiochi.it/categoria/unity/page/3/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Fla-mega-guida-italiana-alluso-degli-addressables-in-unity%2F)
Login
---
# Tutti gli ebook free gratuiti rilasciati da Unity - Creare Videogiochi
[Skip to content](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/#content_skip_link_anchor)
[Skip to sidebar](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/#sidebar_skip_link_anchor)
[Skip to footer](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/#footer_skip_link_anchor)
[linkedin](https://www.linkedin.com/company/creare-videogiochi)
[facebook](https://www.facebook.com/crearevideogiochi)
[Guide](https://www.crearevideogiochi.it/categoria/unity/guide/)
[Libri](https://www.crearevideogiochi.it/categoria/libri/)
[Unity](https://www.crearevideogiochi.it/categoria/unity/)
Tutti gli ebook free gratuiti rilasciati da Unity
=================================================

[ByDaniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
11 Agosto 2022
Di seguito una lista di tutti gli **ebook gratuiti** rilasciati, negli anni, dal team di **Unity** per tutti gli sviluppatori di videogames e applicativi attraverso il famoso engine grafico… e non solo.
Gli argomenti trattati vanno dalle best pratices all’**ottimizzazione**, dal versioning alla **monetizzazione**, dai trend di mercato allo **sviluppo del 2D** e **3D**, dal **costo** di sviluppo fino alle specifiche tecniche delle **pipeline** disponibili.
_ULTIMO AGGIORNAMENTO: Gennaio 2026_
* [Introduction to the Universal Render Pipeline for advanced Unity creators (2021 LTS Edition)](https://www.crearevideogiochi.it/wp-content/uploads/2022/11/introduction-to-the-universal-render-pipeline-for-advanced-unity-creators-2021-lts-edition.pdf)
* [Introduction to the Universal Render Pipeline for advanced Unity creators (2024 Edition)](https://www.crearevideogiochi.it/wp-content/uploads/2024/11/Introduction_to_the_Universal_Render_Pipeline_for_advanced_Unity.pdf)
* [Unity for technical artists – Key toolsets and workflows](https://www.crearevideogiochi.it/wp-content/uploads/2022/11/unity-for-technical-artists-key-toolsets-and-workflows.pdf)
* [9 ways to optimize your game development: Unity expert tips to help you ship](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Unity_Games_Optimization_Best_Practices-v5.pdf)
* [Optimize your console and PC game performance](https://www.crearevideogiochi.it/wp-content/uploads/2026/03/Optimize_your_game_performance_for_consoles_and_PCs_in_Unity_Unity_6_edition_e-book.pdf)
* [2D game art, animation, and lighting for artists](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/2D-game-art-animation-and-lighting-for-artists-eBook.pdf)
* [The definitive guide to lighting in the High Definition Render Pipeline (HDRP)](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/the-definitive-guide-to-lighting-in-the-high-definition-render-pipeline-unity-2021-lts-edition.pdf)
* [Version control and project organization best practices for game developers](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Version-control-and-project-organization-best-practice-guide.pdf)
* [The Unity Game Designer Playbook](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/TheGameDesignerPlaybook_EBook.pdf)
* [The hidden productivity costs disrupting your release timelines](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Unity-HiddenProductivityCosts-Ebook.pdf)
* [The true costs of creating, launching, and operating a game](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Unity-The_True_Costs_of_Creating__Launching_and_Operating_a_Game.pdf)
* [Ultimate guide to profiling Unity games](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/ultimate-guide-to-profiling-unity-games.pdf)
* [Bugs & automation: The next generation of QA](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Unity_Bugs_Automation_EBook.pdf)
* [70+ tips to increase productivity with Unity 2020 LTS](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Unity_Improving_Workflow_Productivity_R7.pdf)
* [Myths vs reality: What you need to know about developing for the Mac](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Unity-Mac-Development-Ebook-v4.2.pdf)
* [Mobile Game Trends – What you need to know for 2022](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Unity-MobileTrends2022-Ebook.pdf)
* [The IAP Playbook](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Unity_IAP_Playbook-v4.pdf)
* [Four essential DevOps practices to make all your games stand out](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/2022-01-DG-Essential-Dev-Ops-Practices-e-book.pdf)
* [Curricular Framework](https://www.crearevideogiochi.it/wp-content/uploads/2022/08/Unity-CurricularFramework-052820_FINAL.pdf)
* [User interface design and implementation in Unity](https://www.crearevideogiochi.it/wp-content/uploads/2023/12/user-interface-design-and-implementation-in-unity.pdf)
* [The Universal Render Pipeline Cookbook – Recipes for shaders and visual effects (Unity 2022 LTS)](https://www.crearevideogiochi.it/wp-content/uploads/2023/12/the-universal-render-pipeline-cookbook-recipes-for-shaders-and-visual-effects-unity-2022-lts-edition.pdf)
* [The definitive guide to creating advanced visual effects in Unity](https://www.crearevideogiochi.it/wp-content/uploads/2023/12/the-definitive-guide-to-creating-advanced-visual-effects-in-unity.pdf)
* [Create a C# style guide – Write cleaner code that scales](https://www.crearevideogiochi.it/wp-content/uploads/2023/12/create-a-c-style-guide-write-cleaner-code-that-scales.pdf)
* [Create modular game architecture in Unity with ScriptableObjects (Unity 6 edition)](https://www.crearevideogiochi.it/wp-content/uploads/2025/09/Modular_game_architecture_with_ScriptableObjects_Unity_6_Final.pdf)
* [Introduction to multiplayer networking in Unity](https://www.crearevideogiochi.it/wp-content/uploads/2025/02/Introduction_to_multiplayer_networking_in_Unity_e-book.pdf)
* [Level Up Your Code with Game Programming Patterns and SOLID](https://www.crearevideogiochi.it/wp-content/uploads/2025/02/Level_up_your_code_with_design_patterns_and_SOLID_e-book.pdf)
* [UI Toolkit for advanced Unity developers (Unity 6 edition)](https://www.crearevideogiochi.it/wp-content/uploads/2025/06/UI_Toolkit_for_advanced_Unity_developers_Unity_6_2025.pdf)
* [Ultimate guide to profiling Unity games (Unity 6 edition)](https://www.crearevideogiochi.it/wp-content/uploads/2025/07/Ultimate_guide_to_profiling_Unity_games_Unity_6.pdf)
* [Tips to increase productivity with Unity 6](https://www.crearevideogiochi.it/wp-content/uploads/2025/08/Tips_to_increase_productivity_with_Unity_6.pdf)
* [Lighting and environments in the High Definition Render Pipeline in Unity 6](https://www.crearevideogiochi.it/wp-content/uploads/2025/09/Lighting_and_environments_in_HDRP_Unity_6_edition.pdf)
* [Unity Gamedev Field Guide](https://www.crearevideogiochi.it/wp-content/uploads/2026/01/unity-game-dev-field-guide.pdf)
* [How to make a 2D game: art, animation, lighting for artist (Unity 6.3 LTS edition)](https://www.crearevideogiochi.it/wp-content/uploads/2026/02/2D_game_art_animation_lighting_Unity_63LTS_final.pdf)
* [Optimize your game performance for mobile, XR, and the web in Unity (Unity 6 edition)](https://www.crearevideogiochi.it/wp-content/uploads/2026/03/Optimize_your_game_performance_for_mobile__XR__and_the_web_in_Unity_Unity_6_edition_e-book.pdf)
Potrebbe interessarti anche:
----------------------------
* [\
\
I migliori asset Unity per sviluppatori indie…](https://www.crearevideogiochi.it/i-migliori-asset-unity-per-sviluppatori-indie-presenti-sullasset-store-nel-2025/)
* [\
\
19+ film, serie e miniserie da vedere se vuoi…](https://www.crearevideogiochi.it/7-film-da-vedere-se-vuoi-aprire-una-societa-di-sviluppo-videogames/)
* [")\
\
Differenze tra le pipeline di Unity (Built-in, URP e HDRP)](https://www.crearevideogiochi.it/differenze-tra-le-pipeline-di-unity-standard-urp-e-hdrp/)
* [\
\
Raccolta 2026 dei migliori asset Unity per creatori…](https://www.crearevideogiochi.it/raccolta-2026-dei-migliori-asset-unity-per-creatori-di-videogiochi-che-puoi-trovare-sullasset-store/)
* [\
\
Quali sono i migliori asset Unity per videogiochi…](https://www.crearevideogiochi.it/quali-sono-i-migliori-asset-unity-per-videogiochi-del-2024-presenti-sullo-store/)
* [\
\
Alcune cose che dovresti sapere se utilizzi Unity 3D…](https://www.crearevideogiochi.it/alcune-cose-che-dovresti-sapere-se-utilizzi-unity-3d-per-sviluppare-videogiochi/)
[0Likes](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/# "Like")
[](https://www.crearevideogiochi.it/author/administrator/)
Written by
###### [Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[View all posts by Daniele Ferla](https://www.crearevideogiochi.it/author/administrator/)
[](https://www.crearevideogiochi.it/tutti-gli-ebook-gratuiti-rilasciati-da-unity/# "Scroll to top")
[](https://www.crearevideogiochi.it/)
Log in to your account
Email Address or Login
Password
Remember me
[Forgot password?](https://www.crearevideogiochi.it/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fwww.crearevideogiochi.it%2Ftutti-gli-ebook-gratuiti-rilasciati-da-unity%2F)
Login
---
# Unknown
The IAP playbook 12 strategies to help you monetize your game 2 | unity.com© 2019 Unity Technologies Unity IAP Promotion You’ve built a game and spent countless hours creating your store for in-app purchases (IAPs). But how will players find your store? You can’t expect players to make purchases without being prompted to do so. That’s why we built IAP Promotion, a mechanism that surfaces your best IAP offers so you can earn more money. Effective IAP Promotion requires a delicate balance of making sure you’re surfac- ing the right message, at the right time, to the right person. At Unity, we see tens of thousands of games being developed on our platform every day. We’ve ana- lyzed all of the major components to help you create a successful monetization strategy for your game. In this playbook, we break down 12 IAP promotion strategies that we’ve seen work well for some of our most successful publishers. 3 | unity.com© 2019 Unity Technologies Design your game to monetize with IAP One of the most common mistakes game developers make is treating monetiza- tion as an afterthought. To succeed, in-app purchases need to be part of the game design so that they can be served at exactly the right moment. If you build the log- ic of your game with in-app purchases in mind, your users will be much more likely to buy them. Consider how players progress from one stage of the game to the next, and think about challenging, high-friction experiences as IAP opportunities. But be careful to not progress your players too quickly in your game, and make sure you’re offering enough gameplay value to get them to return. There are three main types of IAP. Games often offer a combination of the three, depending on the action you want the players to take throughout your game. • Consumables: These are IAPs that can be used only once, such as an extra life. For multiple uses, they can be purchased again. • Non-consumables: These are IAPs that can be purchased once and used again, such as an additional feature or a game upgrade. • Subscription: These are IAPs that provide features on an ongoing and renew- able basis, such as new game levels. Know your players Your IAP promotion should demonstrate clear value and be compelling to your players. To do this, you need to have a deep understanding of your users’ behav- iors. As you collect data on your players, you can often segment them into differ- ent kinds of users, such as player types (completists, competitive scorers, etc.). Examine what the biggest subsets of your players need or buy. Look for insights into where people are often dropping out of your game, getting stuck, seeing the most success, etc. For example, in a puzzle RPG game, one segment of players might like clearing the hardest challenges, while another wants to collect their favored characters. Serving the relevant IAP promotion to each segment greatly increases the likelihood that a player will engage and purchase. 1 2 4 | unity.com© 2019 Unity Technologies Timing is critical The key to making IAP promotions work is to make sure that you’re surfacing the right message at the right time. Choose the right moment to show players an IAP promotion. For example, if you notice that certain users are continuously getting stuck on a particular level, that’s a great opportunity to offer them a way to make their gameplay easier. Experiment with multiple price points To incentivize players to make purchases, the value of the promotion has to match the price. There needs to be enough value in the offer that it’s difficult to say no, but it should also be priced to earn you some income. Don’t display only $.99 offers as you will accustom players to that price point. Instead, you should maintain a healthy selection of different promotions at different price points so players want to keep coming back. Drive urgency Use psychology to get players to act, so you can maximize conversions on your promo- tions. Research and follow the best practices that e-commerce websites use. Trigger words can help drive urgency. Words like “instant,” “now,” and “discover,” are proven to inspire consumer action. In addition, you should experiment with time-limited offers. These are promotions that expire and often have a countdown clock to help drive urgency. 3 4 5 5 | unity.com© 2019 Unity Technologies Localize your offers It’s important to localize promotions based on the country your players are in. If you have limited resources, prioritize your top-performing geographies. Speak the language, use the currency, and be culturally sensitive. Increase your conversion rates by incorporating seasonality into the design and wording of your promotion. You can create promotional bundles that tie into key sales periods, such as Christmas or back to school. Keep in mind popular events in other regions such as Chinese New Year, which is one of the highest revenue-yielding times for most Asian countries. Refresh your promotional material Regularly update your promotions on a schedule that works for you. Change the colors, graphics, or text and offer different product promotions to keep your customers interested and increase conversions. 6 7 6 | unity.com© 2019 Unity Technologies Create a promo for first-time users Giving your users a taste of what’s to come will help convert first-time payers. A great way to increase the likelihood of purchasing is to make your users under- stand the value of an in-app purchase early on. Once players see the value in it, they’ll be much more likely to purchase when prompted later on in the game. We recommend including an economical starter pack that is only available to new players, with a one- or two-day limit. This gets players comfortable with IAP pro- motions early in your game, when engagement is the most critical. A/B test everything The best way to know what to do is to test your options and let the data make your decisions for you. There’s no exact science to determining the right promo, the right time to display it, whether to make it consumable, etc. These are all things that you need to test and iterate on, learning over time. The more data you have, the more insights you can draw, so you can work towards creating a sustainable, scalable app business. The tests you can run are limitless. A/B test your design, text, price points, button color, placement, and more. Clearly define the benefit Users that are focused on gameplay might not fully engage with the particular IAP promo you’re showing them. A good way to increase the likelihood of players buying IAPs is to explain what’s in it for them. For example, when a player wins a battle, explain how it could’ve been easier with a certain product, or that it’s worth investing in the product now as future battles will be harder. If you’re offering a discount, clearly state what additional value users are getting, such as a 25% or 100% bonus. 8 9 10 7 | unity.com© 2019 Unity Technologies Take care of your whales Every free-to-play game that relies on in-app purchases will have what are called “whales” – players who spend disproportionately larger amounts than your other users. Your most engaged users will be your biggest spenders. If you can segment them and isolate them, you’ll be able to offer these whales a more cus- tomized experience. Taking care of your most valued customers will encourage them to stick around and keep purchasing. You can offer them exclusive content, discounts on future in-app purchases, unlocked levels, and more. Whales tend to focus on one game at a time, so paying them special attention should also improve long-term retention. Use AI Machine learning has advanced to the point that you can build a truly personalized gameplay experience based on each user’s behavior. The more you’re able to personalize the game, the more likely players will be to purchase your in-app promotions. Unity’s Personalized Placements is the decision engine that determines which to serve – ads or IAP promotion – based on what will drive the most revenue. We serve the right promotion, at the right time, to help developers make more money. 11 12 unity.com/solutions/mobile-business
---
# Unknown
UNITY FOR GAMES ⟶ E-BOOK FOUR ESSENTIAL DEVOPS PRACTICES TO MAKE ALL YOUR GAMES STAND OUT Move from hot-fix crunches to rapid iterations and releases. © 2021 Unity Technologies— 2 INTRODUCTION Working 60-hour weeks, months before a release? Slinging code all night to deliver miracle bug fixes several times a week? Adding on last-minute, inspired features literally right up to the launch? This industry is notorious for its crunch-crunch-crunch cadence. And you may be someone who thrives on that craziness. But if the payoff isn’t there at the end of the fiscal year, you’ve got to be asking yourself, why? Maybe a launch crunch was too much for one of your key developers, who quit and delayed a release. Maybe some all- night fix kicked off a chain reaction of follow-up all-night fixes. Maybe a last-minute, inadequately tested feature threatened to bring the whole project crashing down. Whatever the specific scenario, one thing is clear: You’ve been here too many times. If these tactics don’t feel worth the price, it’s because despite your heroics, you’re not giving customers what they want. The ability to script shaders, animate water, imagine levels, or configure a CDN are only part of what it takes to successfully create value for the gaming community. To cross the chasm into profitable production, the more crucial skills you’ll need are applying systems and processes that steer your energies in one direction: delivering great games for your fans. It takes smart DevOps practices to transform a studio from crunch-based chaos to a land of productive, effective workflows. The goal is to give your team back their most precious resource – time – so they can work on the stuff that actually matters. But how much time can you actually get back by eliminating crunch? Years, according to Josh Nixdorf, a technical director at Electronic Arts: From my team’s perspective, one of the most important metrics we track is years of effort saved. That too has increased exponentially as we progressed on our DevOps journey, starting at about 20 years of effort with our first crack at DevOps and surpassing 1,000 years today.” By moving to a more streamlined and intentional development process, you empower your team to deliver better experiences to your players – and you’ll gain the ability to deliver more often. This e-book introduces some fundamental DevOps principles and processes that are specific to game development environments and highlights a few essential DevOps tools for a smooth-running studio’s technology stack. — Josh Nixdorf, Technical Director at Electronic Arts “ © 2021 Unity Technologies— 4 CONTENTS Why DevOps? ..........................................5 The four essential practices ..............................7 Robust version control ..................................8 Build automation (CI/CD) ...............................10 Artifact management ...................................11 Frequent and automated testing .........................12 Game studios making it work ............................13 © 2021 Unity Technologies— 5 Game development gets more complicated with the release of each console generation. Players increasingly expect better graphics, frequent post-launch updates, and stellar support. If your game is full of bugs at launch, it’s extremely difficult – if not impossible – to recover. As Xsolla president Chris Hewish said in this GamesIndustry.biz interview, “You can always build upon success, but you can’t really grow from the ashes of a failed launch.” To maximize player value, it’s essential that you examine your processes and tooling, then identify opportunities to optimize. Will your current workflows allow you to support your game over time? What about future projects? Studio teams tend to focus their attention on how developers and artists can accomplish increasingly difficult tasks. But this focus makes it all too easy to completely miss an understanding of process. For example, if a programmer stops and checks their work more often (a DevOps process), they’ll spend less time fixing bugs. YOU CAN ALWAYS BUILD UPON SUCCESS, BUT YOU CAN’T REALLY GROW FROM THE ASHES OF A FAILED LAUNCH.” — Chris Hewish, President, Xsolla “ WHY DEVOPS? © 2021 Unity Technologies— 6 Without this understanding of process, studios are bound to endure: —Automation of processes that free developers from repetitive tasks —Proactive rather than reactive decision-making —Continuous integration and deployments that give your players higher-quality content —Far less overwork, stress, and burnout —Overworked developers who are perpetually working in crunch mode —Releases plagued by bugs and negative feedback —Pervasive frustration caused by confused development plans —Wasted effort across the board The solution is to adopt DevOps practices and tools that optimize and shorten development cycles to yield consistently performant games. The benefits are too many to list, but here are a few: And the payoff at the end of the fiscal year? Greater than you can imagine: happier staff, happier customers, and happier accountants. THE BENEFITS → THE BENEFITS → THE BENEFITS → THE BENEFITS → THE BENEFITS → THE BENEFITS → THE BENEFITS © 2021 Unity Technologies— 7 THE FOUR ESSENTIAL PRACTICES You don’t need a DevOps engineer to start getting the benefits of a more-DevOps-like approach in your development environment. Even a solo developer will improve their productivity by simply understanding these four essential DevOps practices. Robust version control: For almost any programmer, backing up code changes is as automatic as blinking. A simple commit ensures that work is safe and won’t get overwritten and lost. But game development involves managing and tracking a much wider variety of sometimes-huge assets generated by distributed artists and others. This dictates a full-on version control system with a powerful feature set. 1 2 3 4 Build automation (CI/CD): Continuous integration (CI) means automatically merging work from one or more sources into a central repository. Continuous delivery (CD) is automatically creating new builds as you develop. Implementing an automated CI/CD pipeline is an established best practice in agile methodology, providing a consistent and automated way to build, package, and test your game. Artifact management: Beyond code and assets managed by a version control system, artifacts include a wide variety of dependencies such as base images, software packages, Helm charts, metadata, and other tangential but critical resources. An artifact manager complements version control by maintaining a central repository for absolutely everything needed to build or deploy apps or games. Frequent and automated testing: A DevOps approach breaks down traditional developer/QA silos. For example, developers write code in smaller chunks and perform their own tests before pushing it to the main codebase for builds. Ideally, this testing is continuous and automated. Release candidates are more refined, and QA teams dig much deeper into game performance. You can learn more about these practices in the following pages, which dive into each of these essentials in greater detail. © 2021 Unity Technologies— 8 ROBUST VERSION CONTROL Minimize merge conflicts and lost work When artists and programmers are constantly butting heads, or when merge conflicts result in redundant or lost work, version control is usually the culprit. To apply version control best practices in game development environments, you’ll need a system with unique capabilities. Practically speaking, code files are small, regardless of how long they are. However, graphics for next-gen console and PC games can be comparatively huge, making network bandwidth a critical factor. Pulling and pushing these assets from a central repository has to be as fast and easy as it is for any other development asset. The biggest problem with most version control solutions? Usability – for everybody. Programmers are typically adept with command-line interfaces and complex version control branching techniques, while artists may find it challenging to simply hit Save often enough. But their drawings and animations are just as critical to the final package as the codebase is. FOUR ESSENTIAL PRACTICES → NUMBER 1 – 1 © 2021 Unity Technologies— 9 A game development version control system has to provide complex, detailed options for developers yet also be very accessible for less-technical users. Otherwise, engineers will be spending their time explaining, over and over again, how the system works. An intuitive, graphic UI can make complex branching and merging much easier to coordinate with the programmers, artists, and designers working concurrently on different levels and versions destined for different platforms. Traceability means being able to see exactly when and where an asset was modified and on which branches it’s used, and it’s an important capability for QA teams as well. Plus, adequate security across all your repositories, branches, labels, and paths is a minimum requirement. FOUR ESSENTIAL PRACTICES → NUMBER 1 — 9 © 2021 Unity Technologies— 10 BUILD AUTOMATION (CI/CD) Spend more time creating, less time managing complex pipelines and tools A consistent theme of all DevOps practices is breaking work down into smaller chunks. Smaller units are easier to handle, simpler to test, and faster to optimize. You also minimize wasted effort if you hit a wall or decide to change direction. In game development, that amounts to frequently merging your ongoing changes with others’ and creating new builds. Manually creating builds isn’t that complicated, but it’s an interruption of other work, and the time it takes can add up quickly. Again, like many other DevOps practices, automation is key. An automated build pipeline ties into your version control system, monitoring changes and creating new builds with each commit or as the number of changes pass a particular threshold. This means developers can spot and correct shortcomings early and often before things get out of hand. It keeps code and assets in a more reliable, release-ready state. If you need to roll back changes for whatever reason, the last successful build is ready to go. Plus, other teams can easily access the builds for updates and give timely feedback. Culturally, a DevOps approach to build automation shifts your team’s priorities to making sure their work is done right before they jump ahead to new features. They move forward incrementally, building on small successes, rather than doing long sprints and falling down exhausted. It builds confidence and significantly reduces the likelihood of derailing someone else’s work because your code wasn’t quite finished. FOUR ESSENTIAL PRACTICES → NUMBER 2 – 2 © 2021 Unity Technologies— 11 ARTIFACT MANAGEMENT Get your game where it needs to go After the CI/CD system creates a new build, it typically pushes the build to an artifact repository, where the artifact manager registers it with all its dependencies and other necessary components. Orchestrating these “other necessary components” is why artifact management is such an important practice in game development DevOps. Artifacts can come from all kinds of sources, such as your in-house developers, contract artists, and any number of public repositories for open source code. The artifact manager is what ensures that all this critical content is uploaded and archived while checking versions and approvals, scanning for security issues, and so on. There are many possible points of failure. Of course, any useful artifact management system has minimum requirements. It must be able to manage metadata to support versioning and filtering based on licensing. It needs to let developers set which content gets retained and for how long. And, importantly, it must be built as a high-availability system to avoid downtime. Compared to simply designating some S3 bucket as a project repository, there are considerable benefits to implementing a real artifact manager. It means maintaining a common library for all project resources enhances collaboration, particularly between artists and engineers. All resources are registered and traceable, which makes for predictable and repeatable builds. And it frees up everyone on the team from managing deployments, so they can code, animate, design, or do whatever it is they do best. FOUR ESSENTIAL PRACTICES → NUMBER 3 – 3 © 2021 Unity Technologies— 12 FREQUENT AND AUTOMATED TESTING Respond to feedback and work with agility Two principles shape effective DevOps practices for QA: —Frequent testing early in development —Automated QA workflows A carpenter measures twice to cut once. In other words, they solve for the length variable and then test their work before moving on to the next production step. Developers can do the exact same thing by writing shorter code blocks and double- checking them before writing more. The line between the developer and QA blurs. Frequent code checks by developers pay off when builds undergo automated tests. Whenever the compiler pushes a new build to the repository, it’s tested. With continuous automated testing, it’s much less likely that bugs will survive beyond development to cause problems in production code. And those that do survive won’t be as virulent. That said, we all know that bugs happen. What goes along with automated QA testing is automated reporting, both from testing protocols and, after a game hits the market, from the devices it’s running on. As soon as QA or a user installation encounters anomalies, the system reports specific crash and exception data to enable faster fixes. Often, issues are not yet apparent to the end user and are fixable before surfacing as noticeable glitches. Of all the DevOps practices for game development environments, frequent, automated testing may be the most crucial. Players want new content regularly, and studios are under enormous pressure to meet launch dates with new, breakthrough features. But if one significant influencer has a bad experience on top of a bad day, the ramifications can be devastating. Getting QA right is imperative. – 4 FOUR ESSENTIAL PRACTICES → NUMBER 4 GAME STUDIOS MAKING IT WORK DevOps and agile practices are largely just commonsense work habits. But when they’re applied to games involving complex code, thousands of assets, and unforgiving performance constraints, studios need dedicated DevOps tools to ensure meticulous source control, continuous integration and delivery, safe and secure artifact management, and frequent, automated testing. Using DevOps tools that integrate tightly with your development platform compounds their effectiveness. Below are just a few of the thousands of Unity creators using our growing library of DevOps tools to improve their workflows and produce stunning games. © 2021 Unity Technologies— 14 A LTA KO\_O P In a recent Creator Spotlight on Unity’s Twitch channel, Alta shared how they use Unity’s version control system, Plastic SCM, to speed up release cycles and deliver regular content updates to their large and growing fanbase. “We use Plastic SCM for our source control. It lets us have branches of different versions of the project,” says Boramy Unn, a game director at Alta. “We create a new branch for every feature, and then for any kind of risky endeavor within each feature we create sub-branches.” KO\_OP is a cooperatively owned game studio based in Montreal. They were searching for a version control solution that would remove roadblocks between artists and engineers as they worked on their latest project, Goodbye Volcano High. “Plastic Gluon was a delightful surprise,” said Jacob Blommestein, a developer at KO\_OP, in a recent Unity case study. “The artists didn’t have to know anything about branching or merging. They just added their .psd files, and the versioning was transparent.” – STUDIO: – STUDIO: A Township Tale by Alta Goodbye Volcano High by KO\_OP © 2021 Unity Technologies— 15 SYCOFORGE CRYPTIC STUDIOS In a recent interview on the Unity blog, CEO Michela Rimensberger shared how Plastic SCM is helping Sycoforge and their community work together to bring their ambitious game Return to Nangrim to life. “From a technical perspective, Plastic SCM has been a lifesaver for collaboration,” she said. “We tried out many different versioning tools and quickly realized that none of them really suited the needs of a gamedev company. While some were usable for programmers, artists had sweat outbreaks using them. With Plastic, we found a real game changer. It’s easy to use for both non-programmers and programmers.” Perfect World subsidiary Cryptic Studios uses Backtrace to automate bug and error tracking. “Backtrace has changed the way we explore and use crash data,” said Cryptic Studios senior producer Brent Lamb in a Unity e-book released this year. “Everyone feels comfortable running queries and understanding the health of one of our games.” – STUDIO: – STUDIO: Return to Nangrim by Sycoforge Quantum League by Nimble Giant Entertainment GET STARTED TODAY Speed up your workflows and build out your DevOps toolchain with Unity’s DevOps solutions. Create more efficiently to get to market on time, at the quality you expect. Explore solutions here. –
---
# Unknown
VERSION CONTROL AND PROJECT ORGANIZATION BEST PRACTICE GUIDE UNITY FOR GAMES 2020 LTS EDITION E-BOOK Contents Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Source.control.vs.version.control. . . . . . . . . . . . . . . . . . . . . . . . . . .5 Foundational.concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Why use version control? . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Centralized vs distributed version control . . . . . . . . . . . . .7 Centralized . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Distributed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Typical workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Key terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Best.practices.for.organizing.a.Unity.project. . . . . . . . . . . . . . . .12 Project organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Folder structure . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Empty folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 The .meta file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Naming standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Workflow optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Split up your assets . . . . . . . . . . . . . . . . . . . . . . . . .22 Presets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Code standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 Version.control.systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Perforce (Helix Core) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Apache Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Plastic SCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Setting.up.Unity.to.work.with.version.control. . . . . . . . . . . . . .35 Editor project settings . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Perforce Helix Core . . . . . . . . . . . . . . . . . . . . . . . . .35 Plastic SCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37 Git and other solutions . . . . . . . . . . . . . . . . . . . . . .39 What to ignore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Working with large files . . . . . . . . . . . . . . . . . . . . . . . . . . .40 Best.practices.for.version.control. . . . . . . . . . . . . . . . . . . . . . . . .42 Commit little, commit often . . . . . . . . . . . . . . . . . . . . . . . .42 Keep commit messages clean . . . . . . . . . . . . . . . . . . . . . .42 Avoid indiscriminate commits . . . . . . . . . . . . . . . . . . . . . .43 Get the latest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 Know your toolset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 Feature branches and Git Flow . . . . . . . . . . . . . . . . . . . . .46 Pull requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49 Additional.resources.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 4.of.52.| unity .com© 2022 Unity Technologies Introduction Software development becomes a different beast when you move from working on your own to with a team . Where do you store the project so that every team member has access to it? What happens if more than one person works on the same file at the same time? Programmers often understand the concepts behind source control, but what about artists and other non-technical team members? How can you minimize the amount of support they need from programmers, so they don’t have to worry about doing something wrong? Source control, or version control, can be a daunting topic for game developers and creators, especially if you’re not from a technical background . But it doesn’t need to be that way . There are a number of tools that integrate with Unity to help your team work effectively with versioning . This guide explains the key concepts of version control and compares some of the different version control systems (VCS) available . It provides tips and tricks you can use when setting up your Unity project to help ensure team collaboration is smooth and efficient . Finally, you’ll pick up some version control best practices for working successfully in a team . 5.of.52.| unity .com© 2022 Unity Technologies Source.control.vs. version.control In the beginning of computing, all software development was pure code . Even as 3D graphics evolved, everything was still described as code . As such, the term “source control” was used to describe the systems in place to manage the project's contents, while the term source code management, or SCM, was given as a label for those tools . Moving into the modern era of software and game development, we now work with a lot more than just the source code . 3D model formats, such as FBX, textures, materials, audio files, and more, mean that SCMs now have to handle more than just text file changes . The term “source control” no longer covers what we need, and thus “version control system” or VCS, became a more apt description and is now the common label given to the tools used . The terms can still be used interchangeably . However, when talking about Unity projects that often deal with large binary assets, version control and VCS are most accurate, so that’s how they’ll be referred to throughout the rest of the guide . Three of the main version control systems that work best with Unity are Plastic SCM, Git, and Perforce Helix Core . This guide presents the benefits and shortcomings of these systems when working as a team on a Unity project . 1 Plastic SCM joined the Unity family in 2020, which means that these tools are closely integrated into the Unity Editor . 6.of.52.| unity .com© 2022 Unity Technologies Foundational.concepts This section covers some of the core concepts of version control . If you don't know your commit from your push, read this section to learn about the core concepts and terminology of version control . How version control works Version control allows you to keep a historical record of your entire project . It brings organization to your work and enables teams to iterate efficiently . But how? Project files are stored in a shared database called a repository, or “repo .” You backup your project at regular intervals to the repo, and if something goes wrong, you can revert back to an earlier version of the project . With a VCS, you can make multiple individual changes and “commit” them as a single group for versioning . This commit sits as a point on the timeline of your project, so that if you need to revert back to a previous version, everything from that commit is undone . You can review and modify each change grouped within a commit or undo the commit entirely . With access to the project’s entire history, it’s easier to identify which changes introduced bugs, restore previously removed features, and easily document changes between your game or product releases . What’s more, because version control is typically stored in the cloud or on a distributed server, it supports your development team’s collaboration from wherever they’re working – an increasingly important benefit as remote work becomes commonplace . Why use version control? Aside from the reasons mentioned above, version control is useful for making experimental changes . You can add a new feature in your local version of the project, and if things don’t work out, you just revert your changes to go back to working on a clean, functional version of the project . You can iterate on experimental ideas, and if you need to help out on a major issue in the main project, version control allows you to save your changes for a later date . Then you can get your local version back to the main branch to help out with whatever needs to be worked on . Once you’re done, you can restore and carry on with the experimental work . Most version control systems prevent you from accidentally overwriting work that someone else in your team has done . As you commit your work to the repository, you will also need to “pull” the latest updates from the repository . This allows you to check that someone else hasn’t been working on the same file as you . This is the dreaded “merge conflict,” one of the things that can be scary to people who are not used to version control . However, merge conflicts can usually be resolved easily once you understand the tools . 7.of.52.| unity .com© 2022 Unity Technologies Centralized vs distributed version control For the most part, version control systems fall into one of two categories: centralized or distributed . Depending on which kind of version control system you work with, some of the terms outlined below will apply, some won’t, and some may even have a different meaning . Let’s take a look at the differences between these two categories . Centralized. The first key difference between centralized and distributed systems is where the repo resides . Many companies choose the centralized option to keep the servers hosting their proprietary software on-site . Source control security is often an important factor in choosing this kind of system . A centralized system doesn’t have to mean on-site servers since the repo can still be hosted in the cloud, but this setup is less common than in distributed systems . The other key difference between the two approaches is how users deploy their changes to the repo . Centralized version control is often seen as the more straightforward option . When working with a centralized repo, changes are fetched from and sent to the repository directly . This process is called updating from and committing to the repo . The downside to this setup is that users must be connected to the server to submit any work . To avoid conflicts, users can lock files for modification . This is known as checking out the file, and it prevents anyone else from committing changes until the file is checked back in . In a centralized workflow, a user only ever has the latest version of the project files on their workstation, and the server holds the project’s entire history . 8.of.52.| unity .com© 2022 Unity Technologies Distributed. In a distributed workflow, there is still a single location where the repo lives, usually on a cloud service such as GitHub, but users clone the entire project history to their workstation . This allows users to work on their own local copy and commit changes quickly since they don’t need to be connected to a central server . To send those changes so others can access them later, the user needs to push them to the server and pull any other changes down . However, they don’t need to be always working with the latest files like on a centralized system . Working this way allows you to create a group of changesets that perhaps equate to a larger feature before pushing them up for the rest of your team . In fact, it’s encouraged to commit little and often, but we will get to those best practices later on . File locking is still available in some distributed workflows, however, it’s less common since you can handle merges more easily . By pulling the latest changes from the server to your local project, you can compare anyone else’s changes to your own to be sure there are no conflicts before pushing your changes to the repo . While the distributed approach is often preferred, it also has a few disadvantages . Firstly, having the entire project history on local machines takes up a lot of space, especially for teams working with binary file types . Git has an option called Large File Storage (LFS), which converts the history of certain files to text pointers, offloading some of the weight . However, other files have the entire history, and repos can end up with a load of old or stale test data . Studios working with small M2 drives may then find the size of the repo gets bloated with old versions, overloading their drives . 9.of.52.| unity .com© 2022 Unity Technologies Secondly, as developers don’t have to stay in contact with a central server, they can end up working in isolation for long periods . Their local version can become quite detached from the main repository, and when it comes time to merge their changes back in, this may be more work than they bargained for . Throughout this book, we’ll focus on three main version control systems, and it’s worth keeping in mind which workflow each supports: —Git – distributed —Perforce – centralized —Plastic SCM – both Typical workflow Centralized 1 . Update your working copy with changes from the server 2 . Make your changes 3 . Commit your changes to the central server Distributed 1 . Pull any remote changes into your local repo 2 . Make changes 3 . Commit changes 4 . Perform steps 2 and 3 as many times as you like 5 . Push all commits back to the remote repo 10.of.52.| unity .com© 2022 Unity Technologies Key terms TermExplanation Working copyYour local version of the project . Sometimes also called a checkout or workspace . You make changes to your working copy, and, when you’re happy with them, commit them to the repository . Commit/check inA commit encodes file modifications . A centralized workflow sends those changes to the server and is more commonly called checking in . In a distributed workflow, it adds them to the changeset that needs to later be pushed to the server . Pull/update/ check out Pulling or updating retrieves the latest changes available on the server . Check out is the more common term when working in a centralized workflow . LockingLocking a file prevents it from being edited by another user . You are telling the server, “I’m working on this; please don’t make any other changes .” Locking is generally not supported in distributed workflows . CloneIn a distributed workflow, cloning a repo is how you initially get a copy of the project and its entire history onto your local machine . TagsTags are special notes that can be added to a commit . They are often used to mark a point in time where a build was made . BranchA branch creates a new copy of the codeline, which can then be worked on in parallel . This allows someone to work on parts of the project in isolation, for example a new feature, without affecting the main line of development . MergeMerging can happen either when a branch is finished and needs to be merged back into the main line, or even just when two people make changes around the same time . The two changesets will need to be compared and merged together to create the new working copy . Most merges can be handled automatically . 11.of.52.| unity .com© 2022 Unity Technologies TermExplanation ConflictA conflict is what happens when merges cannot be handled automatically . This usually results from two people making changes to the same lines of code or the same binary file . Code conflicts can usually be resolved by comparing the text and working out which changes should be accepted, or even whether both can be brought together in a way . For binary files, such as Unity scenes or Prefabs, merging a conflict becomes a lot trickier . However, sometimes a quick conversation with the other contributor is the easiest way to resolve what changes make the most sense to keep . Pull requestWhen work on a branch is complete, it’s good practice to open a pull request . This signals to the rest of your team that work on that branch is complete and ready to be merged back into the main line . This system gives team leads and/or seniors a chance to review the changes before accepting them back into the main branch . HeadHead refers to the latest commit on your working copy . Reset/revertDepending on your VCS, reset or revert can be used to discard all your local changes back to their state at the head . IndexThe Git index is a file that describes all the current changes you have in your working copy . These changes sit in what’s known as the staging area, where you can select which changes you want to add to your next commit . Git stashIf you have some changes that aren’t ready yet for a commit, but you need to move onto some different work, you can use a stash to save those changes in a temporary file and reset your working copy back to head . 12.of.52.| unity .com© 2022 Unity Technologies Best.practices.. for.organizing.a. Unity.project Regardless of which VCS you choose, there are several things to consider that will help streamline your version control workflow when working in Unity . First, let’s take a look at some of the different ways your team can work together effectively . Project organization Folder.structure Here’s what a typical Unity project folder structure looks like . Remember, in the Editor, you can switch your view in the Project window between one and two columns . One-column and two-column Project window views 13.of.52.| unity .com© 2022 Unity Technologies Although there is no single way to organize your project, in general, follow these recommendations . —Document your naming conventions and folder structure . A style guide and/or project template makes your files easier to find and organize . Pick what works for your team, and make sure everyone is on board with it . —Be consistent with your naming convention . Don’t deviate from your chosen style guide or template . If you do need to amend your naming rules, parse and rename your affected assets all at once . In cases where the changes affect a large number of files, consider automating the update using a script . —Don’t use spaces in file and folder names . Unity’s command line tools have issues with path names that have spaces . Use CamelCase as an alternative for spaces . —Separate testing or sandbox areas . Create a separate folder for non- production scenes and experimentation . Subfolders with usernames can divide your work area by team member . —Avoid extra folders at the root level . In general, store your content files within the Assets folder . Don’t create additional folders at the project’s root level unless it’s absolutely necessary . —Keep your internal assets separate from third-party ones . If you are using assets from the Asset Store or other plug-ins, odds are they have their own project structure . Keep your assets separate . Note: If you find yourself modifying a third-party asset or plug-in for your project, then version control can really help you out when you need to get the latest update for the plug-in. Once the update is imported, you can look through the diff to find where your modifications may have been overwritten and reimplement them. 14.of.52.| unity .com© 2022 Unity Technologies Eample.1 Assets +---Art | +---Materials | +---Models | +---Textures +---Audio | +---Music | \\---Sound +---Code | +---Scripts # C# scripts | \\---Shaders # Shader files and shader graphs +---Docs # Wiki, concept art, marketing material +---Level # Anything related to game design in Unity | +---Prefabs | +---Scenes | \\---UI While there is no set folder structure, here are a couple of examples of how you might set up your Unity project . These structures are based on splitting up your project by asset type . The Asset Types manual page describes the most common assets in greater detail . You can use the Template or Learn projects as an example of organizing your folder structure . While you’re not limited to these folder names, they should give you a good starting point . Eample.2 +---Art | +---Materials | +---Models | +---Music | +---Prefabs | +---Sound | +---Textures | +---UI +---Levels +---Src | +---Framework | \\---Shaders 15.of.52.| unity .com© 2022 Unity Technologies If you download one of the Template or Starter Projects from the Unity Hub, you’ll find that those projects have their subfolders split up based on asset type, as seen in the image below . Depending on which template you’ve chosen, you should see subfolders that represent several common assets . Templates available to download in the Unity Hub Asset.TypeExplanation AnimationsAnimations contain animated motion clips and their controller files . These can also contain Timeline assets for in-game cinematics or rigging information for procedural animation . AudioSound assets include audio clips as well as the mixers used for blending the effects and music . EditorThis contains scripted tools made for use with the Unity Editor but not appearing in a target build . FontsThis folder contains the fonts used in the game . MaterialsThese assets describe surface shading properties . MeshesStore models created in an external digital content creation (DCC) application here . ParticlesThe particle simulations in Unity, created either with the Particle System or Visual Effect Graph . PrefabsThese are reusable GameObjects with prebuilt Components . Add them to a scene to build . 16.of.52.| unity .com© 2022 Unity Technologies Defining a good project structure in the beginning will avoid version control issues later . If you move assets from one folder to another, many VCS will see that as just deleting one file and adding another, rather than the file being moved . This loses the history of the original file . Asset.TypeExplanation ScriptsAll user-developed code for gameplay appears here . SettingsThese assets store render pipeline settings, such as for the High Definition Render Pipeline (HDRP) and Universal Render Pipeline (URP) . ShadersThese programs run on the GPU as part of the graphics pipeline . ScenesUnity stores small, functional portions of your project into Scene assets . They often correspond to game levels or part of a level . TexturesImage files can consist of texture files for materials and surfacing, UI overlay elements for user interface, and lightmaps to store lighting information . ThirdPartyIf you have assets from an external source like the Asset Store, keep them separated from the rest of your project here . This makes updating your third-party assets and scripts easier . Third-party assets may have a set structure that cannot be altered . The sample scene with the HDRP template includes several asset folders . 17.of.52.| unity .com© 2022 Unity Technologies Plastic SCM can handle file moves within Unity and maintains the history of any file that’s moved . However, it’s essential that when you move a file, you do it in the Unity Editor so that the .meta file moves with the asset file . Once you’ve decided on a folder structure for your projects, use an Editor script to reuse the template and create the same folder structure for all projects moving forward . When it’s placed in an Editor folder, the script below will create a root folder in Assets matching the "PROJECT\_NAME" variable . Doing this keeps your own work separate from third-party packages . Tracking file movements 18.of.52.| unity .com© 2022 Unity Technologies using UnityEditor; using UnityEngine; using System .Collections .Generic; using System .IO; public class CreateFolders : EditorWindow { private static string projectName = "PROJECT\_NAME"; \[MenuItem("Assets/Create Default Folders")\] private static void SetUpFolders() { CreateFolders window = ScriptableObject .CreateInstance(); window .position = new Rect(Screen .width/2, Screen .height/2, 400, 150); window .ShowPopup(); } private static void CreateAllFolders() { List folders = new List { "Animations", "Audio", "Editor", "Materials", "Meshes", "Prefabs", "Scripts", "Scenes", "Shaders", "Textures", "UI" }; foreach (string folder in folders) { if (!Directory .Exists("Assets/" + folder)) { Directory .CreateDirectory("Assets/" + projectName + "/" + folder); } } List uiFolders = new List { "Assets", "Fonts", "Icon" }; foreach (string subfolder in uiFolders) { if (!Directory .Exists("Assets/" + projectName + "/UI/" + subfolder)) { Directory .CreateDirectory("Assets/" + projectName + "/UI/" + subfolder); } } AssetDatabase .Refresh(); } void OnGUI() { EditorGUILayout .LabelField("Insert the Project name used as the root folder"); projectName = EditorGUILayout .TextField("Project Name: ", projectName); this .Repaint(); GUILayout .Space(70); if (GUILayout .Button("Generate!")) { CreateAllFolders(); this .Close(); } } } 19.of.52.| unity .com© 2022 Unity Technologies Empty folders Empty folders like those shown in the previous images can present a bit of an issue in version control – so only create the folders for what you need . With Git and Perforce, empty folders are ignored by default . If these project folders are set up and someone attempts to commit them, they’ll be unable to until something is placed in the folder . Note: A common workaround is to place a “.keep” file inside an empty folder. This is enough for the folder to then be committed to the repository. Go to menu > Assets > Create Default Folders . Creating empty folders at the start of your project will help keep your teamwork organized and efficient . 20.of.52.| unity .com© 2022 Unity Technologies Plastic SCM can handle empty folders . Directories are treated as entities by Plastic SCM and have a version history associated with them . This is a point to note when working in Unity . Unity generates a .meta file for every file in the project, including folders . With Git and Perforce, a user can easily commit the .meta file for an empty folder, but the folder itself won’t end up under version control . When another user gets the latest changes, there will be a .meta file for a folder that doesn’t exist on their machine, and Unity will then delete the .meta file . Plastic SCM avoids this issue by including empty folders under version control . The .meta file Unity generates a .meta file for every other file inside the project, and while it’s typically inadvisable to include auto-generated files in version control, the .meta file is a little different . Visible Meta Files mode should be turned on in the Version Control window (unless you’re using the built-in Plastic SCM or Perforce modes) . While the .meta file is auto-generated, it also holds a lot of information about the file with which it’s associated . This is common with assets that have import settings, such as Textures, meshes, audio clips, etc . When you change any import settings on these files, the changes are written into the .meta file, not the asset file . This is why you commit the .meta files to your repository, so everyone works with the same file settings . Turn on Visible Meta Files when working with Git . Changes to a .meta file when import settings were adjusted on a file 21.of.52.| unity .com© 2022 Unity Technologies Naming standards Agreeing on standards doesn’t stop with project folder structure . Setting a naming standard for GameObjects in a scene or Prefabs inside project folders can make things easier for your team to understand when you end up working in one another’s files . Though there is no definitive naming standard for GameObjects, consider the following . StandardExample Use.descriptive.names,.and.don’t. abbreviate . Use names that you will remember several months from now . Consider whether another person will understand your notation, and choose names that you can pronounce and remember . Be aware that abbreviations and spelling mistakes can create confusion . largeButton, LargeButton, or leftButton NOT: lButton Use.Camel.case/Pascal.case . Avoid spaces in your object names . Camel case or Pascal case improve readability (and typing accuracy according to this study) . OutOfMemoryException, dateTimeFormat, NOT: Outofmemoryexception, datetimeformat Use.underscores.(or.hyphens).sparingly . Avoid underscores and hyphens in general . However, they can be useful in certain circumstances . Prefixing a name with an underscore puts it alphabetically first . You can also use underscores to denote variants of a specific object . Active States: EnterButton\_Active, EnterButton\_Inactive Texture Maps: Foliage\_Diffuse, Foliage\_Normalmap Level of Detail:Building\_LOD1, Building\_LOD0 Use.number.suffixes.to.denote.a. sequence . Likewise, don’t suffix with a number if it’s not part of a list . For a path, name the nodes: Node0, Node1, Node2, etc . Follow.the.design.document.naming .If your design document names locations like HighSpellTower or RedDragonLair, use those exact spellings . 22.of.52.| unity .com© 2022 Unity Technologies Workflow optimization Aside from how and where you keep your assets inside the Assets folder, there are several design and development choices you can make to help speed up your workflow, especially when you’re using version control . Split.up.your.assets Large, single Unity scenes do not lend themselves well to collaboration . Break your levels into many smaller scenes so that artists and designers can collaborate better on a single level while minimizing the risk of conflicts . At runtime, your project can load scenes additively using SceneManager . LoadSceneAsync passing the LoadSceneMode .Additive parameter mode . Additionally, break work up into Prefabs where possible . If you need to make changes later, you can change the Prefab rather than the scene it’s used in to avoid conflicts with anyone working on the scene . Prefab changes can often be easier to read when doing a diff under version control . And if you end up with a scene conflict, Unity also has a built-in YAML (a human- readable, data-serialization language) tool specifically for merging scenes and Prefabs . For more information, see Smart merge in the Unity documentation . Presets. This feature allows you to customize the default state of anything in your Inspector . Creating a Preset lets you copy the settings of a component or asset, save it as an asset, then apply the same settings to another item later . Use Presets to enforce standards or to apply reasonable defaults to new assets . This ensures consistent standards across your team, so commonly overlooked settings don’t impact your project’s performance . Click the Preset icon to the top right of the component . Click Save current to... to save the Preset as an asset . Click one of the available Presets to load a set of values . The Preset icon is highlighted here in red . 23.of.52.| unity .com© 2022 Unity Technologies Other handy ways to use Presets include: .—Create.a.GameObject.with.defaults: Drag and drop a Preset asset into the Hierarchy to create a new GameObject with the corresponding component that includes Preset values . .—Associate.a.specific.Type.with.a.Preset: In the Preset Manager (Project Settings > Preset Manager), specify one or more Presets per type . Creating a new component will then default to the specified Preset values . —Pro tip: Create multiple Presets per type, and rely on the filter to associate the correct Preset by name . .—Save.and.load.manager.settings:.Use Presets for a Manager window so the settings can be reused . For example, if you plan to reapply the same tags and layers or physics settings, Presets can reduce setup time for your next project . In this example, the Presets contain different Import Settings for 2D textures depending on usage (albedo, normal, or utility) . 24.of.52.| unity .com© 2022 Unity Technologies Code standards Coding standards will also help keep your team’s work consistent and make it easier for developers to swap between different areas of your project . Again, there are no set-in-stone rules here . You need to decide what is best for your team – but once you’ve decided, stick with it . As an example, namespaces can help organize your code better . They allow you to separate modules inside your project and avoid conflicts with third-party assets where class names may end up repeating . When using namespaces in your code, break your folder structure up by the namespace for better organization . A standard header is also a good practice . Including a standard header in your code template will help to document the purpose of a class, the date it was created, and even who created it . All of this is information that could easily get lost in the long history of a project, even when using version control . Unity employs a template script to read from whenever you create a new Monobehaviour in the project . Every time you create a new script or shader, Unity uses a template stored in %EDITOR\_PATH%\\Data\\Resources\\ScriptTemplates: —Windows: C:\\Program Files\\Unity\\Editor\\Data\\Resources\\ScriptTemplates —Mac: /Applications/Hub/Editor/\[version\]/Unity/Unity .app/Contents/ Resources/ScriptTemplates The default Monobehaviour template is this one: 81-C#.Script-NewBehaviourScript .cs .txt There are also templates for shaders, other behavior scripts, and assembly definitions . For project-specific script templates, create an Assets/ScriptTemplates folder, and copy the script templates into this folder to override the defaults . You can also modify the default script templates directly for all projects, but make sure you back up the originals before making any changes . Each version of Unity has its own template folder, so when you update to a new version, you need to replace the templates again . 25.of.52.| unity .com© 2022 Unity Technologies The original 81-C# Script-NewBehaviourScript .cs .txt file looks like this: using System .Collections; using System .Collections .Generic; using UnityEngine; #ROOTNAMESPACEBEGIN# public class #SCRIPTNAME# : MonoBehaviour { // Start is called before the first frame update void Start() { #NOTRIM# } // Update is called once per frame void Update() { #NOTRIM# } } #ROOTNAMESPACEEND# There are two keywords that may be helpful: .—#SCRIPTNAME#.indicates the filename entered or the default filename (for example, NewBehaviourScript) . .—#NOTRIM#.ensures that the brackets contain a line of whitespace . You can also use your own keywords and replace them with an Editor script implementing the OnWillCreateAsset method . 26.of.52.| unity .com© 2022 Unity Technologies Use the header in the script above inside your script template, and any new script will be created with a header that shows its date, the user who created it, and the project to which it originally belonged . This is useful should you reuse the code in future projects . // /\*------------------------------------------- // --------------------------------------------- // Creation Date: #DATETIME# // Author: #DEVELOPER# // Description: #PROJECTNAME# // --------------------------------------------- // -------------------------------------------\*/ using UnityEngine; using UnityEditor; public class KeywordReplace : UnityEditor .AssetModificationProcessor { public static void OnWillCreateAsset (string path) { path = path .Replace(" .meta", ""); int index = path .LastIndexOf(" ."); if (index < 0) return; string file = path .Substring(index); if (file != " .cs" && file != " .js" && file != " .boo") return; index = Application .dataPath .LastIndexOf("Assets"); path = Application .dataPath .Substring(0, index) + path; if (!System .IO .File .Exists(path)) return; string fileContent = System .IO .File .ReadAllText(path); fileContent = fileContent .Replace("#CREATIONDATE#", System .DateTime .Today . ToString("dd/MM/yy") + ""); fileContent = fileContent .Replace("#PROJECTNAME#", PlayerSettings .product- Name); fileContent = fileContent .Replace("#DEVELOPER#", System .Environment .User- Name); System .IO .File .WriteAllText(path, fileContent); AssetDatabase .Refresh(); } } 27.of.52.| unity .com© 2022 Unity Technologies Version.control. systems Now that you’re familiar with some of the key terms and concepts in version control and project organization, it’s time to introduce some of the key players . Of course, no one solution is best for everyone . There are many things to consider when choosing which VCS to use in your team . Hopefully, by the end of this book, you’ll have all the information you need to make that decision . Git Open source, free, and flexible, Git is one of the most popular version control systems around . However, as a distributed setup it can be daunting to non- technical users . Developed in 2005 by Linus Torvalds to control the Linux kernel development, it’s remained well-maintained and open source since . Git as a platform is a command line-only tool . But many different GUIs have been developed for it, making the system more accessible to users . There are a few popular GIT GUI clients . Fork: Fast and friendly . It’s technically free, but occasionally asks you to pay . Fork 28.of.52.| unity .com© 2022 Unity Technologies GitKraken: This offers a more visual and accessible way of working with Git with an intuitive UI as well as the flexibility to switch between a GUI or a CLI terminal . GitKraken Visual Studio Code Visual Studio Code Visual Studio Code: VS Code has source control integration built in, and with all the extensions available, you can avoid using a separate program altogether . Visual Studio: As with VS Code, Visual Studio also has Git controls built in and includes a GitHub extension . 29.of.52.| unity .com© 2022 Unity Technologies SourceTree: Part of the Atlassian product group SourceTree is a free Git client for Windows and Mac that can also help you visualize and manage your Git repositories easily . Sublime Merge: This system excels in offering tools for speeding up code reviews with side-by-side diffs and syntax highlighting . It’s a lightweight, high-performance client . Git features strong branching and merging capabilities, but it can’t handle large binary files as effectively as other solutions on the market . Git Large File Storage (LFS) goes some way to rectifying this . Since Git is a distributed client, the entire repository and complete history is on the developer’s machine . This makes actions such as switching branches or reverting back to a point in history extremely quick . If you’re working on a large project with multiple features and release branches, a Git workflow can save countless hours . SourceTree Sublime Merge 30.of.52.| unity .com© 2022 Unity Technologies There can often be some confusion between Git and GitHub . GitHub is a hosting service for Git repositories, but you can use Git without using GitHub . That said, GitHub is a very popular service because there is a free version (with some limitations), and it doesn’t require any custom server setups . Unity has released their C# editor and engine code to the public on GitHub . This is incredibly useful when you need to know how some functions work or how to replicate a feature of the Editor inside your own project . GitHub also has its own Git GUI, GitHub Desktop . When working in Unity, you can also use the GitHub for Unity package to bring the Git tools directly into the Unity Editor . As mentioned, GitHub isn’t the only hosting service available for your Git projects . You can also use Bitbucket (from Atlassian) or GitLab, which have many more DevOps features available to them, or one of the many other hosting services available . Check out this talk from Unite Now 2020 on how to get started with Git and Unity . Perforce (Helix Core) Helix Core is an enterprise-level version control system used by large game studios such as Electronic Arts and Ubisoft . These studios use Perforce because it features centralized repos that are most often hosted on their own servers . It does not feature visual repos, so its adoption might be more challenging for non-technical developers, but in larger studios there will be DevOps and Release Engineers to help manage the code base . Plus, as an enterprise solution, it includes a global support team . Helix Core can also be used by small teams . In fact, it’s free for teams of up to five users and 20 workspaces . And you can still deploy to the cloud through solutions like Amazon AWS or Azure . GitHub 31.of.52.| unity .com© 2022 Unity Technologies Because Helix Core handles large files exceptionally well, it can be a popular option for Unity projects . There is also built-in Unity Editor integration that’s covered in a later section . To learn more about integrating your Unity workflow with Helix Core, check out this Perforce blog post . Apache Subversion Like Git, Apache Subversion (known as SVN) is a free and open-source version control system . Unlike Git, it’s a centralized VCS that can handle large binary files . However, it’s still a command line system that requires one of the many third-party GUI clients to be a bit more user friendly . One such client is SmartSVN . Before Git LFS, SVN was a popular choice when working in Unity . As a centralized solution, it was simpler to work with and, as mentioned, better for working with large files . Where SVN falls behind the other tools is when you start to use branches and need to merge between them . Merging in SVN has many pains, especially when it comes to conflicts – or even false conflicts – between files . A merge operation that would take minutes in another VCS may take hours to go through manually in SVN . For more information on setting up Unity to work with SVN, check out the Unity documentation . Helix Core P4V interface SmartSVN GUI 32.of.52.| unity .com© 2022 Unity Technologies Plastic SCM Plastic SCM is a flexible version control system that supports programmers and artists alike . It excels at handling large repos and binary files, and as both a file- based and changeset-based solution, it gives you the capability to download only the specific files you’re working on, rather than the entire project build . Plastic SCM offers hosting, the actual VCS tools, and a GUI client as part of the same solution . Small teams of up to three users can sign up for the free Cloud Edition of Plastic SCM and get up to 5GB of cloud storage, along with access to the Plastic SCM tools, including Gluon . Gluon is a slimline client designed specifically with artists in mind . It allows you to pick only the files that you’re going to work on and check them out from the server, locking them from being modified by anyone else . Once you complete your work, you check the files back in . The Gluon GUI removes the more complex concepts that work better for programmers than for other, less technical users . For artists, both Plastic SCM and Gluon include ways to diff images . The image diff tool lets you compare two versions of the same file visually, a feature that many other systems don’t offer . Plastic offers a workflow especially designed for artists, making it easy to preview files and history as well as to check in changes . Image diff showing the Swipe mode where you can go from one version to the other by just dragging the swipe control . This is very useful to follow image evolution . 33.of.52.| unity .com© 2022 Unity Technologies The standard Plastic SCM GUI client has all the features they would be looking for and more for the programming team . The GUI has an interactive visual Branch Explorer that shows the true relationships of all the branches in a project . There is also a built-in Code Review system that you can use to request the review of your work from a senior developer . Plastic SCM joined the Unity family in 2020, which means that the tools are now closely integrated into the Unity Editor . One of the key strengths of Plastic SCM is that it has the flexibility to be configured for a distributed or centralized workflow . In fully distributed mode, developers work with a repository on their local machine, checking in, branching, and merging with ease . Developers will then push and pull changes to the server to share them when ready . In centralized mode, users check out and check in their changes directly to the server so everyone is working on the latest changes . However, as development teams have grown into global organizations, everyone communicating with one central server isn’t always beneficial . Plastic SCM can also be configured to work in a multi-site system . In this system, servers are set up at each site, so teams can check in to their local server, keeping their workflow fast and hard drives happy . Then, the distributed servers communicate with each other to a central or cloud server . For a great video on setting up Plastic SCM with Unity, check out the Unite Now 2020 video, Version control for games with Unity’s Plastic SCM by Arturo Nereu . You’ll also learn more about how Plastic can be leveraged for games and more here . The branch explorer visualizes the merge structure of the project . It evolves horizontally from left to right . 34.of.52.| unity .com© 2022 Unity Technologies Comparison Green= fully supported Yellow = partially supported Plastic Git Perforce Subversion PlasticGitPreforceSubversion Flexibility Good.to.work.centralized. Just checkin, no push/pull Good.to.work.distributed. Push/pull + local repo Binaries Good.with.huge.repos Good.with.huge.files Can.lock.files.to.avoid.merging GUI Visualizes.your.repos. (so you don’t need a PhD in branching) Comes.with.great.GUIs Special.GUI.and.workflow.for. artists.and.non-coders Workflow Creates.effective.task. branches Merge Very.good.detecting.merges. between.branches Comes.with.great.diff.and. three-way.merge.tools Tools.help.you.. understand.the.merge Good.merging.renames,. moved.files,.directories,. refactors Cloud Can.host.repos.in.the.cloud Cloud.hosting.is.good. .with.huge.repos DIFF Can.diff.code.. moved.across.files Can.show.you.the. .history.of.a.method Enterprise.Support Fully SupportedPartially Supported 35.of.52.| unity .com© 2022 Unity Technologies Setting.up.Unity.to. work.with.version. control This section provides information on setting up Unity to work with Git, Perforce, or Plastic SCM . By understanding some of the key workflows for each solution, you can make an informed decision about which system will best suit your team . Editor project settings Perforce.Helix.Core Unity Editor integration is available with most version control systems, and Perforce Helix Core integration is built into the Editor . You only need to enable it via Edit > Project Settings > Version Control . Set the Mode to Perforce, and fill in the information of your workspace and server settings . Setting up Perforce Helix Control for a project Setting up Perforce Helix Control for a project 36.of.52.| unity .com© 2022 Unity Technologies Once this is enabled, you will see that files are now considered “Under Version Control,” with the option to check them out . Once a file is checked out, you can lock, unlock, submit, or revert the file . Choosing to submit will bring up a changeset dialog for you to add your commit message before submitting it into the repository . Use the Helix P4V interface to view the project history . Files under version control Changeset dialog box Changeset dialog box View the project history 37.of.52.| unity .com© 2022 Unity Technologies For more on getting started with Perforce Helix Core and Unity, check out the Perforce blog . Plastic.SCM Plastic SCM is available built into Unity with any of the below editor versions: —2019 .4 .32f1 or later —2020 .3 .20f1 or later —2021 .1 .25f1 or later —2021 .2 .0b16 or later —2022 .1 .0a12 or later You can enable this by clicking the Plastic SCM icon in the toolbar on the top right, then complete your set up by connecting Plastic SCM to your Unity ID, joining or creating an organization, set up or join a new repository, and create your workspace . You can find more detailed step-by-step instructions using using this guide . Alternatively, you enable this via Edit > Project Settings > Version Control in Unity 2020 LTS, then set the Mode to PlasticSCM . Using Plastic SCM with Unity 38.of.52.| unity .com© 2022 Unity Technologies The interface is very similar to the Perforce option . Files can be added, checked out, reverted, checked in, or submitted, directly from the Editor . Using Plastic SCM with Unity Working with files in Plastic SCM from the Unity Editor Checking in a file 39.of.52.| unity .com© 2022 Unity Technologies Plastic SCM also has the advantage of having a Changeset window available in the Unity Editor via Window > Plastic SCM . For more information on setting up Version Control in Unity, check out the official documentation . Git.and.other.solutions For all other VCS, open the Edit > Project Settings > Version Control window, and select Visible Meta Files from the dropdown menu . There are no other options here, but meta files must be visible in order for version control systems to detect them . What to ignore When working with a Unity project, or any project for that matter, only files that cannot be generated should be placed under version control . For Unity projects, that means only files in the Assets and Project Settings folders should be committed to your repository . Unity can automatically recreate all the other folders . Under no circumstance should you commit the Library folder, since this folder can get very large and Unity will recreate it when launching the Editor if it doesn’t exist . Changeset window 40.of.52.| unity .com© 2022 Unity Technologies —With Perforce, you need to explicitly add the Assets and Project Settings folders to your depot . —Plastic SCM automatically selects the appropriate folders and files to place under version control when set up from the Unity Editor . There is a list that is saved in the \`ignore .conf\` file at the root of the project that describes which files are ignored . To learn more about setting up the "ignore .conf" file, check out this blog post . —Git requires a .gitignore file to indicate what files should never be included . Depending on your Git GUI client, you can select a template when creating a repository, or this can be done through GitHub if you set the hosting up first . Alternatively, a template can be downloaded here . You should also avoid committing things like .exe or .apk files . Additionally, gradle and xcode projects built from your Unity project should not be added to the repository . A small exception to this rule is if you were to set up automated build processes for your gradle or xcode projects, but then they would be typically committed to a repository of their own . Files can be added to the ignored list directly from the Unity Editor when using Plastic SCM . 41.of.52.| unity .com© 2022 Unity Technologies Working with large files Unity projects are made up of a lot more than just code . In fact, scripts can often be heavily outnumbered by other asset files in a Unity project . These assets are stored as binary files: Textures, models, Prefabs, audio clips, timelines, and so on . This results in two things: —They can be hard to compare between revisions . —The diff cannot be described, so the whole file is written when a change is pushed to the repo . Again, in a distributed environment, the entire project history is available on a user’s local machine . Now if you have a history of large files that have had many changes over a long time, then you will have that many copies of the file stored on your machine . This can quickly consume a large portion of your hard drive space! It’s for this reason that historically, teams prefered a centralized workflow . This way, large historical versions of binary files would only live on a central server, with individual users only accessing the latest version on their machines . Both Perforce and Plastic SCM are centralized systems that can handle large files well . Plastic SCM also gives you the option to work in a distributed pipeline, and large file sizes is the tradeoff that you need to consider when choosing between these options . Another feature of Plastic SCM is the Dynamic Workspace, which relies on a virtual filesystem . This means that the Dynamic Workspace downloads files on demand – so, while you see everything in your workspace, in reality not everything is downloaded . Git, being distributed, can struggle with large files . Be sure to also include Git LFS if you will be working with large files . Git LFS replaces your large files in the .git folder with text pointers while storing the actual asset on a server such as GitHub . 42.of.52.| unity .com© 2022 Unity Technologies Best.practices.for. version.control Regardless of which VCS you use, many best practices can help your team work more effectively . Every team has different needs, so every practice won’t fit every team . These tips come from the Unity Enterprise Support Team, who are helping to optimize real-world projects for some of the biggest studios out there . Commit little, commit often This is by far the easiest change you can make to your workflow, yet it’s the one that some developers struggle with the most . When working with other project management tools, it’s likely you have already broken down the work into small, manageable tasks . Commits should be exactly the same . A single commit should only relate to one task or ticket, unless a single line of code magically fixes several bugs . If you are working on a larger feature, break it down into smaller tasks, and make commits for those tasks . We’ll dive into feature branches later . The biggest advantage of using smaller commits is that when something does go wrong, you will find the change much more easily and can revert the negative change without affecting any other positive changes . Keep commit messages clean Commit messages describe the history of your project . It’s much easier to find the change that added high-score tables to your game if its commit message says “Added high score tables to the menu” and not “bet you can’t beat my score on these new tables!” When working with a task ticketing system like JIRA or GitLab, it’s even better to include a ticket number in your commit . Many systems can be set up to work together with smart commits, in which you can actually reference tickets and change their status from your commit message . For example, the commit “JRA-123 #close #comment task completed” would set JIRA ticket JRA-123 to closed, leaving the comment “task completed” on the ticket . For more on setting this workflow up, see the documentation in JIRA or the Pivotal Tracker service in GitLab . 43.of.52.| unity .com© 2022 Unity Technologies Avoid indiscriminate commits The only time “commit -a” (the git command for “commit all changes”) or any of its counterparts should be used is with the first commit of a project . Usually, this is when the only files in the project are README .md . A commit should only ever include files that are related to the change you are committing to the repo . Particular care should be taken when working with Unity projects, as some changes may result in several files being marked as changed, such as scenes, prefabs, or sprite atlases, even though you didn’t intend to make any changes to them . If you accidentally commit a change to a scene that someone else is working on, that could cause a headache for them when they go to commit their changes and find they need to merge your changes first . This is one of the most common mistakes that people who are new to version control will make . It’s important to understand that you should only commit what you have changed in the project . To learn more, check out this blog post on how to speed up your workflow . Get the latest As often as it makes sense, pull the latest changes from the repo into your working copy . It’s not good to work off in isolation, as this only increases the likelihood of merge conflicts . A typical daily workflow in each system would be something like this . GitPerforce —git pull —Then as many times as you like: —Make edits in your working copy —git commit your changes —git pull the latest changes —Once you are happy with your change set of commits —git pull once more —git push to send your commits to the repo —Get latest —Check out files to work on —Make edits —Submit changes 44.of.52.| unity .com© 2022 Unity Technologies Saving changes to a new changelist in P4V Submitting a changeset in P4V 45.of.52.| unity .com© 2022 Unity Technologies Plastic SCM workflows are a little different because you can work in centralized, distributed, or multi-site configurations . Multi-site configurations can be fairly unique, with each user working in either a centralized or distributed workflow . Consider the following example: —Two teams —Each team has an on-site server —Team members at both sites check in locally or distributed but benefit from the speed of a close on-site server —Servers push/pull between one another to keep fully or partially in sync Know your toolset Whichever VCS your team chooses to work with, make sure that the team is comfortable using it and understands the tools at their disposal . If you’re working with Git, not everyone needs to use the same GUI client . But make sure that everyone is comfortable with the commit > pull > push workflow, and that they know how to commit only the files they need . If you’re working with Plastic SCM, let your artists get comfortable using Gluon to simplify their workflow . Gluon lets you decide which files you want to work on and only download those, removing the need to download and manage the entire project . It allows you to lock a file to prevent others from working on it, and, once you’re finished, users can submit files back to the repository and unlock them again . wk push pull wk checkin update push/pull internet Boecillo wk push pull wk London Multi-site Plastic SCM configuration —Sync Repositories —Pull visible —Check out files to work on —Make edits —Check in changes —Sync Repositories —Push visible —Pull changes from the server —Check in changes to your local copy —Pull any new changes —Push your changes back up to the server —A hybrid of the two, depending on your setup Plastic.SCM.(centralized) Plastic.SCM.(distributed)Plastic.SCM.(multi-site) 46.of.52.| unity .com© 2022 Unity Technologies If you are working with Perforce Helix Core, use the built-in Unity Editor tools for managing version control directly from the Editor . This is incredibly useful, both for artists or for general handling of Unity asset files such as scenes, Prefabs, and so on . You can check out assets for modification in the Editor, make your changes, and then check them back in without even leaving Unity . Feature branches and Git Flow When you’re working on a long-standing project with multiple release cycles, feature branching is hugely beneficial to your workflow . Often, teams work out of the same branch of a repo that would likely be called trunk, master, or main . When you do this, your entire project moves along the same timeline . However, it can be beneficial to split the work off into several branches to work more effectively as a team . In Git, a specific workflow called Git Flow focuses on using different branches for features, bug fixes, and releases . A developer starts out work on a new feature inside an isolated branch, and when they’re finished, it’s merged back into the main branch . Meanwhile, someone else may have had to do a hotfix on the previous release, fixed a bug, and released a new version safely, without any of the features still under development being included . Gluon in Plastic SCM Development along the main branch in Plastic SCM 47.of.52.| unity .com© 2022 Unity Technologies Plastic SCM also features task branches . For this pattern, you create a new branch for every task that you track . While in Git Flow, we use feature branches to develop complete, sometimes large, features, task branches in Plastic SCM are meant to be short-lived . If a task takes more than a handful of commits to implement, odds are it could be broken down into smaller tasks . Perforce Helix Core uses a system called Streams to facilitate this style of workflow . When creating a depot to work in, you need to set it up as a stream depot type . Then, you can use the Stream Graph view to create new streams . Every stream other than the mainline stream will need to have a parent stream, so changes can be copied back up-stream . There are different types of streams for different purposes . A Git Flow workflow allows for easier release management . main BL101BL102 task1213 task1209 task1221 Plastic SCM branch per task pattern Options when creating a new stream in Helix Core 48.of.52.| unity .com© 2022 Unity Technologies When you switch between streams on your local workstation or copy changes back upstream, only the metadata for changed files gets merged, making the context change quicker . Pull requests Once you’ve completed work on a feature branch, it’s a good practice to use pull requests to get your changes back into the main stream of the repo . Pull requests are created by the developers of the feature or task, and it’s usually the responsibility of a senior developer or DevOps to review the changes before accepting them into the mainline . Perforce Helix Streams workflow . The desktop icon can be dragged between the streams to switch workspaces . The green arrow down from main shows there are changes to be brought into the dev 1 .0 stream . The red arrow up to main shows we cannot copy to main until we have the latest changes . A closed pull request on GitHub 49.of.52.| unity .com© 2022 Unity Technologies Plastic SCM and Perforce both have automated tools to help manage merging branches back into the mainline . Plastic SCM does this with the help of Mergebot, which automatically merges branches of a repo once they’ve been reviewed and passed validation . Perforce has an additional platform, Helix Swarm, for managing code reviews that can also be set up with automated testing . . . . . . Plastic SCM code reviews are included in the GUI . 50.of.52.| unity .com© 2022 Unity Technologies Summary Hopefully this book has helped you to feel more comfortable working with version control as part of a team in Unity . Even if you’re working on a solo project, the principles of organizing your project and using version control can be really useful . The biggest takeaway is the importance of clear team communication . As a team, you need to agree on your guidelines: how you should structure your project, which version control system to use, and how your workflow in that system looks . Then, when you start integrating other tools such as JIRA, GitLab, build tools, or automated testing, the work you’ve already done structuring your project and workflow will really come into its own . Finally, check out the following resources to find a wealth of information on the various version control systems discussed in the book, plus more tips on setting up your Unity project for success . 51.of.52.| unity .com© 2022 Unity Technologies Additional.resources. Eight factors to consider when choosing a version control system Introduction to version control, Unite Now 2020 Git Apprentice, by Chris Belanger and Bhagat Singh Version Control for Games with Unity’s Plastic SCM Plastic SCM product documentation Mergebot in Plastic SCM Unity open project with version control How KO\_OP uses Plastic SCM to accelerate production The hidden productivity costs disrupting your release timelines Perforce setup How to Configure Helix Core and Game Engine Helix Core documentation SVN setup Using external version control with Unity unity .com
---
# Unknown
A DevOps approach to error monitoring and reporting UNITY FOR DEVOPS ⟶ E-BOOK BUGS & AUTOMATION: THE NEXT GENERATION OF QA © 2021 Unity Technologies— 2 INTRODUCTION Every game developer knows the pain of debugging. This necessary-but-tedious process ultimately improves your chances of launching a successful game, but when you’re toiling away fixing your code, it’s hard not to think, “There are better ways I could be using my time.” Fortunately, there are many opportunities to optimize your development pipeline, so you can spend less time worrying about catching and squashing every little bug and still go to market with an amazing game. Upgrading your DevOps solutions and automating development processes like error monitoring and reporting can give you a big chunk of your precious time back. Bug and error tracking will always be a part of making games, but automating the process can help your team focus their attention elsewhere. With the right set of tools, bugs turn into signposts that point you toward optimized code and a better product. The earlier you implement error-tracking tools, and the better integrated they are with your existing workflows, the greater their impact will be. This e-book takes a look at error monitoring and reporting from a DevOps standpoint. Read on to learn how to use smart DevOps solutions to speed up development, minimize costs, and deliver a better user experience to your customers. CONTENTS Introduction Why is error tracking so important in game development? KPIs that make a difference The importance of automation Characteristics of an effective solution Vital studio-wide benefits Leveraging customer support Integrated Unity DevOps solutions © 2021 Unity Technologies— 3 POINT #1 WHY IS ERROR TRACKING SO IMPORTANT IN GAME DEVELOPMENT? © 2021 Unity Technologies— 4 REVIEWS CAN MAKE OR BREAK A GAME’S SUCCESS. Game development is extraordinarily competitive, and first impressions count for a lot. If your game is rife with bugs upon release – especially if it’s a hotly anticipated title – online conversation will not be kind, and in the worst cases it can leave your studio’s reputation in tatters. A buggy release can take down a studio of any size. Error monitoring and reporting has to be an integral part of every stage of development, but it’s mostly used in the playtest, beta, and release phases of a game. Internal testing captures only a fraction of errors, and some bugs will get past the most careful developers and QA teams. That’s where error tracking makes the difference. When something does go wrong with code, it’s crucial that a reliable, automated tool immediately alerts developers with a meaningful report that includes the entire context of an error. This account should include data such as the device, OS, version, quantity of available memory, and where in the code the error occurred. It’s easy for a smaller indie to put off implementing a sophisticated error monitoring and reporting system. When you’re crunching to get a game out the door, it’s hard to think about improving your DevOps processes. But sound DevOps processes will ultimately drive your studio’s success. It’s essential to have a system to know exactly how your code is performing. And effective tracking doesn’t have to break anyone’s budget. © 2021 Unity Technologies— 5 POINT #2 KPIS THAT MAKE A DIFFERENCE © 2021 Unity Technologies— 6 DON’T LET SUPERFLUOUS DATA GET IN THE WAY OF QUICK ACTION. Trying to sift through too many key performance indicators (KPIs) can lead to information overload and data that lacks context. As with any communication, useful error reporting has to be concise and focused on what’s relevant and actionable. Superfluous data from tracking too many metrics just gets in the way. For game development, the most important KPIs are: • Number of errors: This leading indicator immediately points to the health of your development processes. It lets you isolate faulty workflows or programmers who may need training or greater supervision. • Number of users impacted by an error: Prioritize fixes through careful analysis of this essential metric. An error may only be affecting a few power users, but if they happen to be your game’s biggest in-app purchase (IAP) consumers, your priorities are clear. • Errors introduced with a release update: Deltas that occur soon after a patch or update to your game help focus investigations on a typically limited amount of newer code. • Errors per application module: This measurement can yield a double benefit, offering more focused research as well as identifying individuals or teams whose performance is better or less advanced than their peers. • Errors occurring within five minutes of gameplay: Glitches that get in the way of new players getting hooked on your game are going to be much more costly than errors that occur further down the road. • Crash- and error-free statistics: Monitoring the percentage of sessions without crashes allows you to measure your game’s aggregate session stability, and you can track this metric over time to see how stability is evolving. Keeping tabs on how many users didn’t experience crashes is useful for tracking your players’ experience. For your error monitoring processes themselves, the most important KPI is mean time to detect (MTTD). How long does it take before you’re aware of bugs that may be eating away at your success? © 2021 Unity Technologies— 7 POINT #3 THE IMPORTANCE OF AUTOMATION MINIMIZE MANUAL PROCESSES THAT INTRODUCE UNCERTAINTY. Automation is the backbone of error monitoring and reporting, and it’s key to virtually all DevOps practices. Game code errors are cold, hard, objective events. They occur on specific devices running specific apps on a specific OS under specific conditions. Collecting and presenting that data in a useful way requires minimizing manual processes that introduce uncertainty. For example, do you want a customer support tech collecting and categorizing bugs at the end of the day, or do you want bugs prioritized automatically the moment they happen? Do you want someone researching the context of each error, or do you want as many relevant data points as possible, automatically collected and immediately available? Automated error tracking can collect data from development, QA, and production environments, capturing crashes and exceptions from every client, console, engine, and server platform that your game or game component runs on. This approach typically creates structured, searchable error reports that you can configure for your particular needs, giving you better insights into where to look for issues in your code. Importantly, this level of reporting lets you catch issues that users haven’t noticed yet that are still impacting performance. Adding these kinds of automated error tracking capabilities is rarely expensive, and even a small studio can benefit tremendously – especially if your QA team is a part-time intern, or simply you, working in the kitchen late at night. © 2021 Unity Technologies— 8 POINT #4 CHARACTERISTICS OF AN EFFECTIVE SOLUTION © 2021 Unity Technologies— 9 LEARN THE MUST-HAVES FOR ANY ERROR MONITORING AND REPORTING APP. As with any DevOps tool, effectiveness is often a function of ease-of-use. A complex UI may not affect a developer, but if the developer asks an entry-level support person to generate a report and then also has to spend time explaining how to do it, the solution’s effectiveness drops considerably. A number of features should be considered as must- haves for any error monitoring and reporting app. Crash and exception reporting has to extend across all of the client devices, engines, languages, streaming services, and deployment platforms you’re working with. And of course, it has to be compatible with your programming languages and tools, with a plug-in for your development platform. It ought to offer flexible deployment options such as hosting in a multitenant or dedicated instance, or deploying on-premises. In addition, you’ll need to know: • The exact cause of an error: As much as possible, reports should include the methods and functions that generated an error along with a detailed stack. • Which errors are related: Similar bugs should automatically be grouped and categorized based on their similarities, as well as around user-defined criteria. For example, you’ll probably prioritize crashing bugs, then assigning different types of errors to different developers. This capability should include some degree of deduplication to handle multiple reports and notifications. At times, too much data can be as bad as too little. • How to triage effectively: Can you configure alerts so that the right people know what’s going on as soon as possible? • How to zero in on the error: Are the search and query capabilities flexible enough that you can find errors using a wide range of attributes? CRASH AND EXCEPTION REPORTING HAS TO EXTEND ACROSS ALL OF THE CLIENT DEVICES, ENGINES, LANGUAGES, STREAMING SERVICES, AND DEPLOYMENT PLATFORMS YOU’RE WORKING WITH. © 2021 Unity Technologies— 10 POINT #5 VITAL STUDIO-WIDE BENEFITS NO GAME CAN SURVIVE WITHOUT EFFECTIVE ERROR MONITORING. Long ago, after cranking out a batch of code, a programmer would usually have to go back and comb through their work to find where they misspelled a function or miscounted delimiters. This was a huge time sink, but soon enough, coding platforms evolved, and now it’s possible to catch and fix these issues almost immediately. Game code is infinitely more complex, but the imperative to find and eliminate errors in early development stages remains strong. Every studio needs to do this in order to: • Accelerate development cycles • Minimize patches and emergency fixes • Spend more time creating new features and product improvements Often players haven’t progressed to a level where a bug lurks in wait shortly after a release. The error is there, but it hasn’t been reported yet. Increases in monthly active users (MAUs) can also lead unexpected bugs to surface, and it’s difficult to anticipate errors related to high player counts when you’re testing with a smaller cohort in-house. More players mean more error logs, so you’ll have to work harder to stay on top of everything. When automated error tracking meticulously tracks code exceptions, QA and developers can spot invisible issues and fix them before they adversely impact the player experience. Whether you’re building games or creating AR filters, user experience is what drives customer retention, and, in turn, your success. In game development, eliminating crashes and performance-robbing exceptions is everything. The competition to retain players with a great user experience is stiff – no game can survive without effective error monitoring. Of course, with timely, automatic error monitoring and reporting that groups errors and shows the detailed context in which they occured, mean time to repair (MTTR) lessens considerably. Developers spend more time on new content, and overall game quality – the user experience – surges. © 2021 Unity Technologies— 11 POINT #6 LEVERAGING CUSTOMER SUPPORT © 2021 Unity Technologies— 12 WHEN YOUR ERROR REPORTING PIPELINE FEEDS DIRECTLY INTO YOUR CUSTOMER SUCCESS PIPELINE, BOTH TEAMS BENEFIT. AND WHEN YOU ADD AUTOMATIONS INTO THE MIX, THE PROCESS ONLY BECOMES MORE EFFICIENT. IN-GAME BOTS LINK ERROR-MONITORING, PLAYERS, AND DEVELOPERS. Despite the most rigorous QA and testing, errors will persist, and help from players can be a huge help in finding fast fixes. When your error reporting pipeline feeds directly into your customer success pipeline, both teams benefit. And when you add automations into the mix, the process only becomes more efficient. Players can be part of the bug-fixing solution without leaving the game – significantly reducing churn. One example of a highly efficient automated error reporting integration is the relationship between Backtrace and Helpshift, two of Unity’s Verified Solutions Partners. Backtrace automates crash and error reporting, while Helpshift is an automated customer support app that’s fully integrated into a game. Over the past year, Backtrace and Helpshift have been working on a partnership to provide the next generation of help for engineers, support teams, and gamers. They’ve built an integration between their two products that provides customer support with full visibility when a user reports an error. If there’s a serious error, a dialog box can pop up and ask the player to confirm the issue and provide additional context. If it’s a known bug in the error monitoring system, the dialog can inform the player and tell them how soon to expect a fix. An automatic follow-up communicates when things have changed. © 2021 Unity Technologies— 13© 2021 Unity Technologies— 13 Because Helpshift communicates with Backtrace, it can look directly into the data to better understand the type of issue a player is having and, if needed, escalate the matter to the right person. This could be a customer service agent asking the player to simply reboot their phone. Or, it could be an engineer seeing a problem with the build and letting the player know that the developers are on it. This close integration also allows teams using both solutions to see what type of customer is making the report. If it’s a priority user – like someone who’s making frequent IAPs – the ticket can automatically be escalated to the right person, significantly reducing time to resolution. To learn more about this integration and how it’s helping one of the world’s biggest mobile games studios improve customer retention, you can watch Backtrace and Helpshift’s three-part webinar series: © 2021 Unity Technologies— 13 • Crush bugs, catch errors, and keep your player base engaged with Unity • Automated game error reporting and player in-app support done right (part 1) • Automated game error reporting and player in-app support done right (part 2)
---
# Unknown
UNITY FOR DEVOPS ⟶ E-BOOK THE HIDDEN PRODUCTIVITY COSTS DISRUPTING YOUR RELEASE TIMELINES Unity experts share insights on systems and processes to help you streamline your development pipeline. © 2021 Unity Technologies— 2 How many times in the past month have you had to drop what you’re doing and spring into action to solve an urgent problem that needs a fix right now? One of the most common game development pitfalls is letting small, seemingly inconsequential inefficiencies snowball into bigger issues. When your flow state is interrupted multiple times a day – whether it’s waiting for a project file to download or solving yet another merge conflict – that’s when things start falling through the cracks. Bugs begin to infiltrate your code. Deployment cycles lengthen. All-nighters become the norm. Friction builds with every slip-up, and soon it’s felt across the team. Frustration grows, morale begins to falter, and it’s clear that your studio’s way of doing things just doesn’t work. Implementing DevOps solutions can help you break this chaotic cycle. With the right processes in place, you and everyone on your team can spend less time task-switching and get back the focus you need to produce your best work. Well-defined operating principles and the right set of tools improve collaboration and speed up deployment cycles. Launch polished, stable games on time and at quality, again and again – all while minimizing crunch. Unity has worked with countless games developers and studios over the years, and many of the experts on our team are gamedevs themselves. In our experience, version control systems (VCS) are the foundation for effective DevOps, but they can also be one of the biggest pain points for studios. That’s not a coincidence. In this e-book, we’ve collected insights from our product and engineering teams on three of the most common version control pitfalls holding studios back from doing what they do best: creating. Read on for a look at the hidden productivity pitfalls disrupting your release timelines – and how VCS solutions like Plastic SCM can help you get back on track. © 2021 Unity Technologies— 3 PARALLEL DEVELOPMENT PROBLEM #1 © 2021 Unity Technologies— 4 THE SITUATION: THE COST: THE PROBLEM: As a cofounder of Codice Software, the company behind Plastic SCM, and former dean of the Colegio Profesional de Ingenieros en Informática de Castilla y León, Pablo has more than 20 years of experience in software development. Here, this Unity version control and DevOps expert shares his thoughts on parallel development and how version control can help accelerate collaboration. Unless you’re a team of one, you’re going to have several team members working on the same project. Having extra hands can obviously help you scale at speed, but it can also slow things down. Parallel development is when various team members are working in multiple branches, with the ability to merge them later. Coders typically work this way, while artists tend to work on a single branch with locks since they deal with individual files and assets. The impact on productivity here is obvious and immense: Tons of time lost. The cost in productivity from having to redo work, solve merge conflicts, track down lost files, or wait to download changes you’d already committed before results in slower release cycles, internal conflicts between team members, and the inability to quickly fix bugs that users find in the game. While there’s an advantage to even a solo gamedev using a VCS, it’s downright essential when working with multiple team members. Not using any version control can quickly result in a situation where developers overwrite one another’s code, resulting in lost work and a lot of frustration. However, even the use of common VCS tools today creates issues for game development teams. For example, if the entire team is on Git, one of the most common scenarios is that some of the more non-technical team members, like artists, won’t have a full understanding of the tool. It becomes very easy for them to lose changes, especially without the ability to lock files. And because the system isn’t transparent and easy to follow, there’s often an overreliance on developers to solve problems, which results in even more lost work. Because of Git’s inability to lock files, many gamedev teams use Perforce across the team to stick to one single system and source of truth. However, developers may be dissatisfied with the speed and performance of Perforce’s “task streams” approach to branching and merging. This can add another layer of complexity to an already complex process, especially when setting up continuous integration. Most creators we talk with say they wouldn’t even try task-based development with Perforce. It’s just not an ideal workflow. PABLO SANTOS ONE PROJECT, MULTIPLE WORKFLOWS TIME YOU’LL NEVER GET BACK LOST WORK AND INTERNAL STRIFE SENIOR MANAGER, SOFTWARE ENGINEERING It’s important to establish a set of versioning best practices, create documentation, and update that documentation regularly. THIS EXPERT RECOMMENDS LEARN MORE Montreal-based studio KO\_OP dealt with asymmetry and miscommunications between artists and programmers while making their game Goodbye Volcano High. Learn how they solved progress-blocking issues by implementing the right VCS. Having clear rules for things like file organization and making sure they’re widely socialized keeps your team working in lockstep. I also recommend choosing a VCS that works for everyone on your team. For example, artists should be able to contribute to the project independently, without relying on programmers. By implementing a version control system that’s easy for everyone to use, making changes to project files becomes less of an intimidating process. Goodbye Volcano High by KO\_OP © 2021 Unity Technologies— 6 REDUNDANT TOOLS AND SILOS PROBLEM #2 © 2021 Unity Technologies— 7 THE SITUATION: THE COST: THE PROBLEM: Stacey is an indie generalist developer who has operated a small studio since 2015. She formerly taught Unity online on Microsoft’s Channel 9 (.GAME) and now runs gamedev-resources.com. Here, Stacey discusses version control tools and explains why streamlining your solution set is the best path forward. Unless you’re a team of one, you’re going to have several team members working on the same project. Having extra hands can obviously help you scale at speed, but it can also slow things down. Parallel development is when various team members are working in multiple branches, with the ability to merge them later. Coders typically work this way, while artists tend to work on a single branch with locks since they deal with individual files and assets. In game development, every second is needed to rapidly iterate and test new ideas. While multiple version control tools are often adopted to solve time- wasting issues like syncing or merge conflicts, they can often compound these issues or create other drains. For example, they can increase the time spent creating new processes or workflows without bilateral integrations, or the financial cost of maintaining two systems. To explain further, a team will usually start off as either Perforce- or Git-based (e.g., GitLab/GitHub), and deal with the pains that each unique workflow creates. In Perforce, they lose the ability to work distributed and with ephemeral branches. With Git, they run into issues around file storage due to distributed work. Teams can use Git Large File Storage (LFS) to ensure only one version of the binary is stored on the machine, but this comes at the cost of speed and a confusing workflow that pretends to be centralized but isn’t. There are two common problems that studios will encounter when using multiple solutions. The first is maintaining two types of version control technologies for the project – which usually includes cumbersome workflows or processes for integrating the two. The second is centered around knowledge and training. With two very different systems, you need experts in both to help unblock a creator or entire team when something goes wrong. STACEY HAFFNER DIFFERENT ROLES, DIFFERENT TOOLS TWICE THE WORK WITHOUT THE PAYOFF MORE WORKFLOWS, MORE ISSUES, MORE MAINTENANCE SENIOR MANAGER FOR DEVOPS Ideally, you would want all assets managed and versioned in the same version control system, with workflows tailored for the different needs of your team. THIS EXPERT RECOMMENDS LEARN MORE Learn more about what to consider when evaluating version control systems. It’s important to examine your processes and tooling, then decide whether they’re really working for your studio. This would allow your studio to avoid a lot of these common headaches around having to create disparate pipelines to transfer assets from team to team. We recommend a single VCS that can accommodate multiple workflows or has robust integrations between systems, to allow for tracking who is working on what and the latest versions of each asset. Crying Suns by Alt Shift © 2021 Unity Technologies— 9 TOO BIG TO COMMIT PROBLEM #3 © 2021 Unity Technologies— 10 THE SITUATION: THE COST: THE PROBLEM: Marie-Christine worked in game and interactive attraction development for eight years before joining Unity in 2019. As lead product manager for version control, she’s helping to craft the vision for how version control can help create a collaborative environment that’s inclusive of all team members, regardless of their role. Here, she shares her thoughts on a silent killer of productivity: time spent waiting to download project files. Working with large files and binaries is one of the unique elements of building a game – but it can cause issues with version control. Let’s say you’re a developer working with Git, and you’re trying to check in your code. To do that, you first need to update your workspace with the latest changes from other team members (this is the equivalent of pulling and pushing). Time spent waiting for updates to download is time wasted. That time adds up. A faster system allows your teams to focus on completing their tasks without the tools bringing projects to a standstill. Some version control systems are extremely slow when it comes to working with large binaries. Imagine how frustrating it is when you have to wait five minutes between the moment you click update and the moment you check in and can finally move on with your life. In gamedev, you need to move fast. If it takes too long to implement changes in the game or respond to bugs due to inefficiencies at the very start of the pipeline, these problems will only compound later on. Many studios use solutions like Perforce or Git LFS to solve issues with large binary assets, but each comes with the same compromises outlined to the left. MARIE-CHRISTINE BABIN PROJECT FILES NEED FREQUENT UPDATES EVEN MORE TIME WASTED WORKFLOW DISRUPTIONS LEAD PRODUCT MANAGER FOR VERSION CONTROL Choosing a file-based VCS can speed up work a lot. THIS EXPERT RECOMMENDS LEARN MORE Learn about Sycoforge’s approach to iterative development with their game Return to Nangrim and how Unity Plastic SCM helped them adjust to their project’s growing scope. With a system like this, contributors can download only the files they need to make changes to, instead of the entire project. It’s much faster, and more secure, but you have to ensure that everyone is organizing their files in the same way for it to be truly effective. Think ahead when choosing your version control solution, as it can save you a lot of headaches later on. Games are getting bigger and more complicated – the sooner you implement the right version control system, the better set up you’ll be for lasting success. Return to Nangrim by Sycoforge © 2021 Unity Technologies— 12 PLASTIC SCM: VERSION CONTROL FOR GAMEDEV Version control is foundational for DevOps, but it’s also a central source of conflict for game studios, and there aren’t many solutions that truly work for every contributor. Plastic SCM is uniquely positioned to support game developers precisely because it solves these time-wasting issues. Here’s how it stacks up against the competition. © 2021 Unity Technologies— 13 While artists and programmers may generally have different preferences for how they use version control, it’s important to know the pros and cons of over-correcting in either direction. Especially when working remotely, having a single version control system and “source of truth” can help to eliminate many of the frustrations and time-wasting consequences of maintaining multiple different pipelines. Even with their various strengths and weaknesses, a lot of systems such as GitHub, Perforce, or even Dropbox or Google Drive can be set up to suit your workflow. Look for integrations or extensions to help cut down on some of the collaboration issues, or opt for a single system that’s designed for all parties. Plastic SCM supports working with a single repository in different modes. This feature gives you the power of multiple workflows without the hassle of maintaining and connecting two different systems. In Plastic SCM, an artist can use the Gluon UI to work with the repository in centralized mode, thereby simulating the same style of working with a solution like Perforce. A developer can use the default UI to work with the repository as in a distributed mode, thereby simulating the same workflow as a Git-based solution like GitHub or GitLab. PARALLEL DEVELOPMENT REDUNDANT TOOLS AND SILOS Effectively facilitating parallel development is a must, and each member of the team might have different preferences. Git-based tools such as GitHub, GitLab, or BitBucket are some of the most popular version control systems around, especially with developers. Due to Git’s popularity, users will have access to a robust amount of user enhancements, integrations and interoperability. However, as team and project size scales, many larger and AAA game studios use a centralized workflow solution like Perforce to better accommodate artists and non-technical users while handling large binary assets. Due to its robust branching and merging capabilities for developers and the ability to work centralized and lock files for artists, a system like Unity’s Plastic SCM can help. If you’re working in the Unity Editor, Plastic SCM’s seamless integration with the Unity UI encourages collaboration. © 2021 Unity Technologies— 14 TOO BIG TO COMMIT Game development means working with large projects. As your studio scales, the source control management system should be able to scale as well. While Git’s distributed model was not designed for a game development use case, there are several extensions designed to allow Git to handle binary files with greater ease, Git-LFS being the most widely used. Still, Git was not designed with managing art assets in mind, which is why other solutions like Perforce are often implemented at larger studios. Plastic SCM is the most performant solution on the market when it comes to handling large files, which is ideal for game development. It significantly reduces the downtime waiting for files to load – Plastic SCM can be up to 5–8 times faster than other solutions. You’re still dealing with the same content, but now you aren’t waiting on a five- minute download multiple times a day. Instead, you’re getting what you need in seconds. Plastic SCM is specifically designed for game development, supporting artists and developers in studios of all sizes. It empowers artists with file-based workflows and an intuitive UI, as well as including robust branching and merging for programmers to ensure that all users benefit from improved collaboration and iteration agility. Plastic centralizes work without cloned repositories, and it supports huge files and repositories with fast, WAN-optimized data transfers. Its Gluon workflow tool lets the least technically inclined team members easily apply any version control protocols. Speed up your workflows and build out your DevOps toolchain with Unity Plastic SCM. Create without compromise, and work efficiently to get to market on time, at the quality you expect. Get started free today. CREATE WITHOUT COMPROMISE
---
# Unknown
UNITY FOR DEVELOPERS ⟶ E-BOOK T Write cleaner code that scales CREATE A C# STYLE GUIDE Contents Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 What is clean code, anyway? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Developing.as.a.team. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Keep it simple, stupid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 The KISS principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 The YAGNI principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Don’t code around the problem . . . . . . . . . . . . . . . . . . . . . . . .7 Improve incrementally, every day . . . . . . . . . . . . . . . . . . . . . . .7 Plan, but adapt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Be consistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 It takes a village . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 A style guide for you and your team . . . . . . . . . . . . . . . . . . . . .8 Create.a.style.guide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Naming conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Identifier names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Casing terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Camel case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Pascal case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Snake case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Kebab case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Hungarian notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Fields and variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Classes and interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Events and event handlers . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Formatting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 What is EditorConfig? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 Horizontal spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 Vertical spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Code formatting in Visual Studio . . . . . . . . . . . . . . . . . . . . . .31 Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 The newspaper metaphor . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Class organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Single-responsibility principle . . . . . . . . . . . . . . . . . . . . . . . . .36 Refactoring example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37 Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Extension methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 The DRY principle: Don’t repeat yourself . . . . . . . . . . . . .41 Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 Common.pitfalls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49 Appendix:.Script.templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 Appendix:.Testing.and.debugging. . . . . . . . . . . . . . . . . . . . . . . .55 Unity.Test.Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57 3.of.58.| unity .com© 2022 Unity Technologies Creativity can be messy . A flash of inspiration becomes a flurry of code, which then spawns a working prototype . Success! Congratulations on passing the first hurdle . However, simply getting your code to work won’t be enough . There’s much more to game development . Once your logic is functional, then the process of refactoring and cleaning up begins . This guide compiles advice from industry experts on how to create a code style guide . Establishing ssuch a guide for each member of your team to follow will help ensure your codebase can grow your project to a commercial-scale production . These tips and tricks will help your development process in the long term, even if they cost you extra effort up front . A cleaner, more scalable codebase also facilitates the efficient onboarding of new developers as you expand your team . Keep your code clean to make life easier for yourself and everyone involved in the project . Contributors This guide was written by Wilmer Lin, a 3D and visual effects artist with over 15 years of industry experience in film and television, who now works as an independent game developer and educator . Significant contributions were also made by senior technical content marketing manager Thomas Krogh-Jacobsen and senior Unity engineers Peter Andreasen, Scott Bilas, and Robert LaCruise . CLEAN CODE ALWAYS LOOKS LIKE IT WAS WRITTEN BY SOMEONE WHO CARES.” “ – Michael Feathers, author of Working Effectively with Legacy Code INTRODUCTION 4.of.58.| unity .com© 2022 Unity Technologies What is clean code, anyway? Most game developers would agree that clean code is any code that’s easy to read and maintain . Clean code is elegant, efficient, and readable . There’s good reasons for this congruence . Something that might be obvious to you as the original author might be less apparent to another developer . By the same token, when you implement some logic now, you might not remember what that same code snippet does three months later . Clean code aims to make development more scalable and conform to a set of production standards, including: —Follow consistent naming conventions —Format your code for legibility —Organize classes and methods to keep them small and readable —Comment on any code that isn’t self-explanatory Whether you’re building a puzzler for mobile or a massive MMORPG targeted at consoles, keeping your codebase clean reduces the total cost of software maintenance . You can then implement new features or patch your existing software more easily . Your future teammates – and your future self – will be thankful for that . DEVELOPING AS A TEAM 1 ANY FOOL CAN WRITE CODE THAT A COMPUTER CAN UNDERSTAND. GOOD PROGRAMMERS WRITE CODE THAT HUMANS CAN UNDERSTAND.” “ – Martin Fowler, author of Refactoring 6.of.58.| unity .com© 2022 Unity Technologies No developer is an island . As the technical needs of your game application grow, you’ll need help . Inevitably, you’ll add more team members with diverse skill sets . Clean code introduces coding standards for your ever-expanding team so everyone is on the same page . Now everybody can work on the same project with a more uniform set of guidelines . Before looking into how to create the style guide, let’s go over some general rules to help you scale up your Unity development . KISS (keep it simple, stupid) Let’s face it: Engineers and developers can overcomplicate things, even though computing and programming are hard enough . Use the KISS principle of “keep it simple, stupid” as a guide for finding the simplest solution to the problem at hand . There’s no need to reinvent the wheel if a proven and simple technique solves your challenge . Why use a fancy new technology just for the sake of using it? Unity already includes numerous solutions in its Scripting API . For example, if the existing Hexagonal Tilemap works for your strategy game, skip writing your own . The best code you can write is no code at all . The KISS principle The well-known KISS principle emphasizes simplicity in design, an idea that’s been popular throughout different times, as these quotes attest: “Simplicity is the ultimate sophistication .” – Leonardo da Vinci “Make simple tasks simple!” – Bjarne Stroustrup “Simplicity is a prerequisite for reliability .” – Edsger W . Dijkstra “Everything should be made as simple as possible, but no simpler .” – Albert Einstein In programming, that means keeping your code as streamlined as possible . Avoid adding unnecessary complexity The YAGNI principle The related YAGNI principle (“you aren’t gonna need it”) instructs you to implement features only as you need them . Don’t worry about features that you might need once the stars align . Build the simplest thing that you need now and build it to work . 7.of.58.| unity .com© 2022 Unity Technologies Don’t code around the problem The first step of software development is to understand what you are trying to solve . This idea might seem like common sense, but too often developers get bogged down in implementing code without understanding the actual problem, or they'll modify the code until it works without fully grasping why . What if, for example, you fixed a Null Reference Exception with a quick if-null statement at the top of a method . Are you sure that was the real culprit, or was the problem a call to another method deeper inside? Instead of adding code to fix a problem, investigate the root cause . Ask yourself why it’s happening rather than applying a band-aid solution . Improve incrementally, every day Making clean code is a fluid and ongoing process . Get the whole team into this mindset . Expect code cleanup to be part of your day-to-day life as a developer . Most people don’t intend to write broken code . It just evolves that way over time . Your codebase needs constant maintenance and upkeep . Budget time for that and make sure it happens . Make it good, not perfect On the flip side, don’t strive for perfection . When your code meets production standards, it’s time to commit it and move on . Ultimately your code needs to do something . Balance implementing new functionality with code cleanup . Don’t refactor for the sake of it . Refactor when you think it will provide a benefit to you or somebody else . Plan, but adapt In The Pragmatic Programmer, Andy Hunt and Dave Thomas write, “Rather than construction, programming is more like gardening .” Software engineering is an organic process . Be prepared if everything does not go according to plan . Even if you make the most elaborate drawing, designing a garden on paper will not guarantee results . Your plants may bloom differently than you expected . You’ll need to prune, transplant, and replace parts of your code to make this garden successful . Software design isn’t quite like an architect drawing blueprints because it's more malleable and less mechanical . You’ll need to react as your codebase grows . 8.of.58.| unity .com© 2022 Unity Technologies Be consistent Once you decide how to tackle a problem, approach similar things the same way . It’s not difficult but will take constant effort . Apply this principle to everything from naming (classes and methods, casing, etc .) to organizing project folders and resources . Above all, have your team agree on a style guide and then follow it . It takes a village Although keeping code clean and simple is in everyone’s best interest, “clean and simple” is not the same as “easy .” Clean and simple takes effort and is hard work for beginners and experienced developers alike . Your project will become messy if left unchecked . It’s a natural consequence of so many people working on different parts of a project . Everyone is responsible for pitching in and preventing code clutter, and each team member will need to read and follow the style guide . Cleanup is a group effort . A style guide for you and your team This guide focuses on the most common coding conventions you’ll encounter during Unity development . These are a subset of the Microsoft Framework Design Guidelines, which include an extensive number of rules beyond what is presented here . These guidelines are recommendations, not hard and fast rules . Customize them according to your team’s preferences . Pick a style that suits everyone, and ensure they apply it . Consistency is king . If you follow these suggestions and need to modify your style guide in the future, a few find-and-replace operations can migrate your codebase quickly . When your style guide conflicts with this document or the Microsoft Framework Design Guidelines, it should take precedence over them because this will allow your team to maintain a uniform style throughout your project . CREATE A STYLE GUIDE 2 THERE ARE ONLY TWO HARD THINGS IN COMPUTER SCIENCE: CACHE INVALIDATION & NAMING THINGS.” – Phil Karlton, software engineer “ 10.of.58.| unity .com© 2022 Unity Technologies Your application is the collective product of individuals who might think differently from one another . A style guide helps rein in those differences to create a cohesive final product . No matter how many contributors work on a Unity project, it should feel like it’s been developed by a single author . Microsoft and Google both offer comprehensive example guides: — Microsoft C# Coding Conventions — C# at Google Style Guide These are excellent starting points for managing your Unity development . Each guide offers solutions for naming, formatting, and commenting . If you’re a solo developer, this might feel like a constraint at first, but following a style guide is essential when working in teams . Think of a style guide as an initial investment that will pay dividends later . Maintaining a single set of standards can reduce the time spent on relearning if you move anyone onto another project . Style guides take the guesswork out of coding conventions and formatting . Consistent style then becomes a matter of following directions . We created an example C# style sheet that you can also use as a reference as you assemble your own guide . Feel free to copy and tweak it as needed . Let’s dive in . Naming conventions There’s a deep psychology involved in giving something a name . A name tells us how that entity fits into the world . What is it? Who is it? What can it do for us? The names of your variables, classes, and methods aren’t mere labels . They carry weight and meaning . Good naming style impacts how someone reading your program can comprehend the idea you’re trying to convey . Here are some guidelines to follow for naming . Identifier.names An identifier is any name you assign to a type (class, interface, struct, delegate, or enum), member, variable, or namespace . Identifiers must begin with a letter or an underscore (\_) . Avoid special characters (backslashes, symbols, Unicode characters) in your identifiers, even though C# permits them . These can interfere with certain Unity command-line tools . Steer clear of unusual characters to ensure compatibility with most platforms . 11.of.58.| unity .com© 2022 Unity Technologies Casing terminology You can’t define variables with spaces in the name because C# uses the space character to separate identifiers . Casing schemes can alleviate the problem of using compound names or phrases in source code . There are several well- known naming and casing conventions . Camel.case Also known as camel caps, camel case is the practice of writing phrases without spaces or punctuation, separating words with a single capitalized letter . The very first letter is lowercase . Local variables and method parameters are camel case . For example: examplePlayerController maxHealthPoints endOfFile Pascal.case Pascal case is a variation of camel case, where the initial letter is capitalized . Use this for class and method names in Unity development . Public fields can be pascal case as well . For example: ExamplePlayerController MaxHealthPoints EndOfFile Snake.case In this case, spaces between words are replaced with an underscore character . For example: example\_player\_controller max\_health\_points end\_of\_file Kebab.case Here, spaces between words are replaced with dashes . The words appear on a “skewer” of dash characters . For example: example-player-controller Max-health-points end-of-file naming-conventions-methodology 12.of.58.| unity .com© 2022 Unity Technologies Fields and variables Consider these rules for your variables and fields: .—Use.nouns.for.variable.names: Variable names must be descriptive, clear, and unambiguous because they represent a thing or state . So use a noun when naming them except when the variable is of the type bool (see below) . .—Prefix.Booleans.with.a.verb: These variables indicate a true or false value . Often they are the answer to a question, such as – is the player running? Is the game over? Prefix them with a verb to make their meaning more apparent . Often this is paired with a description or condition, e .g ., isDead, isWalking, hasDamageMultiplier, etc . .—Use.meaningful.names ..Don’t.abbreviate.(unless.it’s.math): Your variable names will reveal their intent . Choose names that are easy to pronounce and search for . —Single letter variables are fine for loops and math expressions, but otherwise, don’t abbreviate . Clarity is more important than any time saved from omitting a few vowels . —When doing quick prototyping, you can use short “junk” names and then refactor to meaningful names later . The problem with kebab case is that many programming languages use the dash as a minus sign . Some languages interpret numbers separated by dashes as calendar dates . Hungarian.notation The variable or function name often indicates its intention or type . For example: int iCounter string strPlayerName Hungarian notation is an older convention and is not common in Unity development . 13.of.58.| unity .com© 2022 Unity Technologies .—Use.pascal.case.for.public.fields ..Use.camel.case.for.private.variables:.. For an alternative to public fields, use Properties with a public getter (see Formatting below) . .—Avoid.too.many.prefixes.or.special.encoding:.You can prefix private member variables with an underscore (\_) to differentiate them from local variables . Alternatively, use the this keyword to distinguish between member and local variables in context and skip the prefix . Public fields and properties generally don’t have prefixes . Some style guides use prefixes for private member variables (m\_), constants (k\_), or static variables (s\_), so the name can reveal more about the variable at a glance . Many developers eschew these and rely on the editor instead . However, not all IDEs support highlighting and color coding, and some tools can’t show rich context at all . Consider this when deciding how (or if) you will apply prefixes together as a team . .—Specify.(or.omit).access.level.modifiers.consistently: If you leave off the access modifier, the compiler will assume the access level to be private . This works well, but be consistent in how you omit the default access modifier . Remember that you’ll need to use protected if you want this in a subclass later . Examples.to.avoidUse.insteadNotes int dint elapsedTimeInDays Avoid single letter abbreviations unless a counter or expression . int hp, string tName, int mvmtSpeed int healthPoints, string teamName, int movementSpeed Variable names reveal intent . Make names searchable and pronounceable . int getMovemementSpeed int movementSpeed Use nouns . Reserve verbs for methods unless it’s a bool (below) . bool deadbool isDead bool isPlayerDead Booleans ask a question that can be answered true or false . 14.of.58.| unity .com© 2022 Unity Technologies Example.code.snippets The code snippets in this guide are non-functional and abbreviated . They’re presented here to show style and formatting . You can also reference this example C# style sheet for Unity developers, based on a modified version of Microsoft’s Framework Design Guidelines . This represents just one example of how you can set up your team’s style guide . Note the specific style rules found in these code examples: —The default private access modifier is not omitted . —Public member variables use pascal case . —Private member variables are camel case and use underscores (\_) as a prefix . —Local variables and parameters use camel case with no prefix . —Public and private member variables are grouped together . Review each rule in the example style guide and customize it to your team’s preferences . The specifics of an individual rule are less important than having everyone agree to follow it consistently . When in doubt, rely on your team’s own guide to settle any style disagreements . < // EXAMPLE: public and private variables public float DamageMultiplier = 1.5f; public float MaxHealth; public bool IsInvincible; private bool \_isDead; private float \_currentHealth; // parameters public void InflictDamage(float damage, bool isSpecialDamage) { // local variable int totalDamage = damage; // local variable versus public member variable if (isSpecialDamage) { totalDamage \*= DamageMultiplier; } // local variable versus private member variable if (totalDamage > \_currentHealth) { /// ... } } 15.of.58.| unity .com© 2022 Unity Technologies —Use.one.variable.declaration.per.line: It’s less compact, but enhances readability . —Avoid.redundant.names: If your class is called Player, you don’t need to create member variables called PlayerScore or PlayerTarget . Trim them down to Score or Target . —Avoid.jokes.or.puns: While they might elicit a chuckle now, the infiniteMonkeys or dudeWheresMyChar variables won’t hold up after a few dozen reads . —Use the var keyword for implicitly typed local variables if it helps readability and the type is obvious: Specify when to use var in your style guide . For example, many developers avoid var when it obscures the variable’s type or with primitive types outside a loop . Generally, use var when it makes the code easier to read (e .g ., with long type names) and the type is not ambiguous . Enums Enums are special value types defined by a set of named constants . By default, the constants are integers, counting up from 0 . Use pascal case for enum names and values . You can place public enums outside of a class to make them global . Use a singular noun for the enum name . Note: Bitwise enums marked with the System .FlagsAttribute attribute are the exception to this rule . You typically pluralize these as they represent more than one type . // EXAMPLE: good use of var var powerUps = new List(); var dictionary = new Dictionary>(); // AVOID: potential ambiguity var powerUps = PowerUpManager.GetPowerUps(); < 16.of.58.| unity .com© 2022 Unity Technologies Classes and interfaces Follow these standard rules when naming your classes and interfaces: .—Use.pascal.case.nouns.for.class.names .. .—If.you.have.a.Monobehaviour.in.a.file,.the.source.file.name.must. match: You may have other internal classes in the file, but only one Monobehaviour should exist per file . .—Prefix.interface.names.with.a.capital.I: Follow this with an adjective that describes the functionality . // EXAMPLE: enums use singular nouns public enum WeaponType { Knife, Gun, RocketLauncher, BFG } public enum FireMode { None = 0, Single = 5, Burst = 7, Auto = 8, } // EXAMPLE: but a bitwise enum is plural \[Flags\] public enum AttackModes { // Decimal // Binary None = 0, // 000000 Melee = 1, // 000001 Ranged = 2, // 000010 Special = 4, // 000100 MeleeAndSpecial = Melee | Special // 000101 } < 17.of.58.| unity .com© 2022 Unity Technologies Methods In C#, every executed instruction is performed in the context of a method . . Note: “function” and “method” are often used interchangeably in Unity development . However, because you can’t write a function without incorporating it into a class in C#, “method” is the accepted term . Methods perform actions, so apply these rules to name them accordingly: .—Start.the.name.with.a.verb: Add context if necessary . e .g ., GetDirection, FindTarget, etc . .—Use.camel.case.for.parameters: Format parameters passed into the method like local variables . .—Methods.returning.bool.should.ask.questions:.Much like Boolean variables themselves, prefix methods with a verb if they return a true-false condition This phrases them in the form of a question, e .g ., IsGameOver, HasStartedTurn . // EXAMPLE: Class formatting public class ExampleClass : MonoBehaviour { public int PublicField; public static int MyStaticField; private int \_packagePrivate; private int \_myPrivate; private static int \_myPrivate; protected int \_myProtected; public void DoSomething() { } } // EXAMPLE: Interfaces public interface IKillable { void Kill(); } public interface IDamageable { void Damage(T damageTaken); } < 18.of.58.| unity .com© 2022 Unity Technologies Events and event handlers Events in C# implement the Observer pattern . This software design pattern defines a relationship in which one object, the subject (or publisher), can notify a list of dependent objects called observers (or subscribers) . Thus, the subject can broadcast state changes to its observers without tightly coupling the objects involved . Several naming schemes exist for events and their related methods in the subject and observers . Try these practices: .—Name.the.event.with.a.verb.phrase:.Choose a name that communicates the state change accurately . Use the present or past participle to indicate events “before” or “after .” For example, specify “OpeningDoor” for an event before opening a door or “DoorOpened” for an event afterward . .—Use.the.System .Action.delegate.for.events: In most cases, the Action delegate can handle the events needed for gameplay . You may pass anywhere from 0 to 16 input parameters of different types with a return type of void . Using the predefined delegate saves code . Note:.You can also use the EventHandler or EventHandler delegates . Agree as a team on how everyone will implement events . // EXAMPLE: Methods start with a verb public void SetInitialPosition(float x, float y, float z) { transform.position = new Vector3(x, y, z); } // EXAMPLE: Methods ask a question when they return bool public bool IsNewPosition(Vector3 currentPosition) { return (transform.position == newPosition); } // EXAMPLE: Events // using System.Action delegate public event Action OpeningDoor; // event before public event Action DoorOpened; // event after public event Action PointsScored; public event Action ThingHappened; < < 19.of.58.| unity .com© 2022 Unity Technologies .—Prefix.the.event.raising.method.(in.the.subject).with.“On”: The subject that invokes the event typically does so from a method prefixed with “On,” e .g . “OnOpeningDoor” or “OnDoorOpened .” .—Prefix.the.event.handling.method.(in.the.observer).with.the.subject’s. name.and.underscore.(\_): If the subject is named “GameEvents,” your observers can have a method called “GameEvents\_OpeningDoor” or “GameEvents\_DoorOpened .” Note that this is called the “event handling method”, not to be confused with the EventHandler delegate . Decide a consistent naming scheme for your team and implement those rules in your style guide . .—Create.custom.EventArgs.only.as.necessary: If you need to pass custom data to your Event, create a new type of EventArgs, either inherited from System .EventArgs or from a custom struct . // raises the Event if you have subscribers public void OnDoorOpened() { DoorOpened?.Invoke(); } public void OnPointsScored(int points) { PointsScored?.Invoke(points); } // define an EventArgs if needed // EXAMPLE: read-only, custom struct used to pass an ID and Color public struct CustomEventArgs { public int ObjectID { get; } public Color Color { get; } public CustomEventArgs(int objectId, Color color) { this.ObjectID = objectId; this.Color = color; } } < < 20.of.58.| unity .com© 2022 Unity Technologies Namespaces Use a namespaces to ensure that your classes, interfaces, enums, and so on won’t conflict with existing ones from other namespaces or the global namespace . Namespaces can also prevent conflicts with third-party assets from the Asset Store . When applying namespaces: —Use pascal case without special symbols or underscores . —Add a using directive at the top of the file to avoid repeated typing of the namespace prefix . —Create sub-namespaces as well . Use the dot( .) operator to delimit the name levels, allowing you to organize your scripts into hierarchical categories . For example, you can create MyApplication .GameFlow, MyApplication .AI, MyApplication .UI, and so on to hold different logical components of your game . In code, these classes are referred to as Enemy.Controller1 and Enemy. Controller2, respectively . Add a using line to save typing out the prefix: When the compiler finds the class names Controller1 and Controller2, it understands you mean Enemy.Controller1 and Enemy.Controller2 . If the script needs to refer to classes with the same name from different namespaces, use the prefix to differentiate them . For instance, if you have a Controller1 and Controller2 class in the Player namespace, you can write out Player.Controller1 and Player.Controller2 to avoid any conflicts . Otherwise, the compiler will report an error . namespace Enemy { public class Controller1 : MonoBehaviour { ... } public class Controller2 : MonoBehaviour { ... } } using Enemy; < < FORMATTING 3 IF YOU WANT YOUR CODE TO BE EASY TO WRITE, MAKE IT EASY TO READ.” “ – Robert C . Martin, author of Clean Code and Agile Software Development 22.of.58.| unity .com© 2022 Unity Technologies Along with naming, formatting helps reduce guesswork and improves code clarity . By following a standardized style guide, code reviews become less about how the code looks and more about what it does . When constructing a style guide, personalize how your team will format your code . Consider each of the following code formatting suggestions when setting up your Unity dev style guide . Omit, expand, or modify these example rules to fit your team’s needs . In all cases, consider how your team will implement each formatting rule and then have everyone apply it uniformly . Refer back to your team’s style to resolve any discrepancies . The less you think about formatting, the more you can work on something else . Let’s take a look at formatting guidelines . Properties A property provides a flexible mechanism to read, write, or compute class values . Properties behave as if they were public member variables, but in fact they’re special methods called accessors . Each property has a get and set method to access a private field, called a backing field . In this way, the property encapsulates the data, hiding it from unwanted changes by the user or external objects . The getter and setter each have their own access modifier, allowing your property to be read-write, read-only, or write-only . You can also use the accessors to validate or convert the data (e .g ., verify that the data fits your preferred format or change a value to a particular unit) . The syntax for properties can vary, so your style guide should define how to format them . Use these tips to keep properties consistent in your code: .—Use.expression-bodied.properties.for.single.line.read-only.properties. (=>): This returns the private backing field . // EXAMPLE: expression bodied properties public class PlayerHealth { // the private backing field private int maxHealth; // read-only, returns backing field public int MaxHealth => maxHealth; // equivalent to: // public int MaxHealth { get; private set; } } < 23.of.58.| unity .com© 2022 Unity Technologies .—Everything.else.uses.the.older.{ get; set; }.syntax: If you just want to expose a public property without specifying a backing field, use the Auto-Implemented Property . Apply the expression-bodied syntax for the set and get accessors . Remember to make the setter private if you don’t want to give write access . Align the closing with the opening brace for multi-line code blocks . Serialization Script serialization is the automatic process of transforming data structures or object states into a format that Unity can store and reconstruct later . For performance reasons, Unity handles serialization differently than in other programming environments . Serialized fields appear in the Inspector, but you cannot serialize static, constant, or read-only fields . They must be either public or tagged with the \[SerializeField\] attribute . Unity only serializes certain field types, so refer to the documentation page for the complete set of serialization rules . Observe a few basic guidelines when working with serialized fields: .—Use.the.\[SerializeField\].attribute: The SerializeField attribute can work with private or protected variables to make them appear in the Inspector . This encapsulates the data better than marking the variable public and prevents an external object from overwriting its values . // EXAMPLE: expression bodied properties public class PlayerHealth { // backing field private int \_maxHealth; // explicitly implementing getter and setter public int MaxHealth { get => \_maxHealth; set => \_maxHealth = value; } // write-only (not using backing field) public int Health { private get; set; } // write-only, without an explicit setter public SetMaxHealth(int newMaxValue) => \_maxHealth = newMaxValue; } < 24.of.58.| unity .com© 2022 Unity Technologies .—Use.the.Range.attribute.to.set.minimum.and.maximum.values: The \[Range(min, max)\] attribute is handy if you want to limit what the user can assign to a numeric field . It also conveniently represents the field as a slider in the Inspector . .—Group.data.in.serializable.classes.or.structs.to.clean.up.the.Inspector: Define a public class or struct and mark it with the \[Serializable\] attribute . Define public variables for each type you want to expose in the Inspector . Reference this serializable class from another class . The resulting variables appear within collapsible units in the Inspector . // EXAMPLE: a serializable class for PlayerStats using System; using UnityEngine; public class Player : MonoBehaviour { \[Serializable\] public struct PlayerStats { public int MovementSpeed; public int HitPoints; public bool HasHealthPotion; } // EXAMPLE: The private field is visible in the Inspector \[SerializeField\] private PlayerStats \_stats; } A serializable class or struct can help organize the Inspector . < 25.of.58.| unity .com© 2022 Unity Technologies Brace or indentation style There are two common indentation styles in C#: —The Allman style places the opening curly braces on a new line, also known as the BSD style (from BSD Unix) . —The K&R style, or “one true brace style,” keeps the opening brace on the same line as the previous header . There are variations on these indentation styles as well . The examples in this guide use the Allman style from the Microsoft Framework Design Guidelines . Regardless of which one you choose as a team, make sure everyone follows the same indentation and brace style . Try these tips: .—Decide.on.a.uniform.indentation: This is typically four or two spaces . Get everyone on your team to agree on a setting in your Editor preferences without igniting a tabs versus spaces flame war . Note that Visual Studio provides the option to convert tabs to spaces . In Visual Studio (Windows), navigate to Tools.>.Options.>.Text.Editor.>.. C#.>.Tabs . // EXAMPLE: Allman or BSD style puts opening brace on a new line. void DisplayMouseCursor(bool showMouse) { if (!showMouse) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } else { Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } } // EXAMPLE: K&R style puts opening brace on the previous line. void DisplayMouseCursor(bool showMouse){ if (!showMouse) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } else { Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } } < 26.of.58.| unity .com© 2022 Unity Technologies On Visual Studio for Mac, navigate to Preferences.>.Source.Code.>.C#.Source. Code . Select the Text Style to adjust the settings . .—Where.possible,.don’t.omit.braces,.even.for.single-line.statements: This increases consistency, keeping your code easier to read and maintain . In this example, the braces clearly separate the action, DoSomething, from the loop . If later you need to add a Debug line or to run DoSomethingElse, the braces will already be in place . Keeping the clause on a separate line allows you to add a breakpoint easily . Tabs settings in Visual Studio Convert tabs to spaces to make indentation uniform . 27.of.58.| unity .com© 2022 Unity Technologies .—Don’t.remove.braces.from.nested.multi-line.statements: Removing braces in this case won’t throw an error, but can be confusing . Apply braces for clarity, even if they are optional . .—Standardize.your.switch.statements: Formatting can vary, so document your team preference in your style guide . Here is one example where you indent the case statements . // EXAMPLE: keep braces for clarity... for (int i = 0; i < 100; i++) { DoSomething(i); } // ... and/or keep the clause on a separate line. for (int i = 0; i < 100; i++) { DoSomething(i); } // AVOID: omitting braces for (int i = 0; i < 100; i++) DoSomething(i); // EXAMPLE: keep braces for clarity for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { ExampleAction(); } } // AVOID: removing braces from nested multi-line statements for (int i = 0; i < 10; i++) for (int j = 0; j < 10; j++) ExampleAction(); // EXAMPLE: indent cases from the switch statement switch (someExpression) { case 0: DoSomething(); break; case 1: DoSomethingElse(); break; case 2: int n = 1; DoAnotherThing(n); break; } < < < 28.of.58.| unity .com© 2022 Unity Technologies What is EditorConfig? Do you have multiple developers working on the same project with different editors and IDEs? Consider using an EditorConfig file . The EditorConfig file can help you define a coding style that works across your entire team . Many IDEs, like Visual Studio and Rider, come bundled with native support and do not require a separate plugin . EditorConfig files are easily readable and work with version control systems . You can see an example file here . The code styling from EditorConfig travels with your code and can enforce coding styles even outside of Visual Studio . EditorConfig settings take precedence over the global Visual Studio text editor settings . Your personal editor preferences still apply whenever you’re working in a codebase without a .editorconfig file, or when the .editorconfig file doesn’t override a particular setting . See the GitHub repo for some real-world samples . Horizontal spacing Something as simple as spacing can enhance your code’s appearance on- screen . Your personal formatting preferences can vary, but try the following suggestions to improve readability: .—Add.spaces.to.decrease.code.density: The extra whitespace can give a sense of visual separation between parts of a line . .—Use.a.single.space.after.a.comma.between.function.arguments . // EXAMPLE: add spaces to make lines easier to read for (int i = 0; i < 100; i++) { DoSomething(i); } // AVOID: no spaces for(inti=0;i<100;i++){DoSomething(i);} // EXAMPLE: single space after comma between arguments CollectItem(myObject, 0, 1); // AVOID: CollectItem(myObject,0,1); < < 29.of.58.| unity .com© 2022 Unity Technologies .—Don’t.add.a.space.after.the.parenthesis.and.function.arguments . .—Don’t.use.spaces.between.a.function.name.and.parenthesis . .—Avoid.spaces.inside.brackets . .—Use.a.single.space.before.flow.control.conditions: Add a space between the flow comparison operator and the parentheses . .—Use.a.single.space.before.and.after.comparison.operators . // EXAMPLE: no space after the parenthesis and function arguments DropPowerUp(myPrefab, 0, 1); //AVOID: DropPowerUp( myPrefab, 0, 1 ); // EXAMPLE: omit spaces between a function name and parenthesis. DoSomething() // AVOID DoSomething () // EXAMPLE: omit spaces inside brackets x = dataArray\[index\]; // AVOID x = dataArray\[ index \]; // EXAMPLE: space before condition; separate parentheses with a space. while (x == y) // AVOID while(x==y) // EXAMPLE: space before condition; separate parentheses with a space. if (x == y) // AVOID if (x==y) < < < < < 30.of.58.| unity .com© 2022 Unity Technologies .—Keep.lines.short ..Consider.horizontal.whitespace: Decide on a standard line width (80–120 characters) . Break a long line into smaller statements rather than letting it overflow . .—Maintain.indentation/hierarchy: Indent your code to increase legibility . .—Don’t.use.column.alignment.unless.needed.for.readability: This type of spacing aligns the variables but can make it difficult to pair the type with the name . Column alignment, however, can be useful for bitwise expressions or structs with a lot of data . Just be aware that it may create more work for you to maintain the column alignment as you add more items . Some auto- formatters might also change which part of the column gets aligned . Vertical spacing You can use the vertical spacing to your advantage as well . Keep related parts of the script together and use blank lines to your advantage . Try these suggestions to organize your code from top to bottom: .—Group.dependent.and/or.similar.methods.together: Code needs to be logical and coherent . Keep methods that do the same thing next to one another, so someone reading your logic doesn’t have to jump around the file . .—Use.the.vertical.whitespace.to.your.advantage.to.separate.distinct.parts. of.your.class: For example, you can add two blank lines between: —Variable declarations and methods —Classes and Interfaces —if-then-else blocks (if it helps readability) Keep this to a minimum and note on your style guide where applicable . // EXAMPLE: One space between type and name public float Speed = 12f; public float Gravity = -10f; public float JumpHeight = 2f; public Transform GroundCheck; public float GroundDistance = 0.4f; public LayerMask GroundMask; // AVOID: column alignment public float Speed = 12f; public float Gravity = -10f; public float JumpHeight = 2f; public Transform GroundCheck; public float GroundDistance = 0.4f; public LayerMask GroundMask; < 31.of.58.| unity .com© 2022 Unity Technologies Regions The #region directive enables you to collapse and hide sections of code in C# files, making large files more manageable and easier to read . However, if you follow the general advice for Classes from this guide, your class size should be manageable and the #region directive superfluous . Break your code into smaller classes instead of hiding code blocks behind regions . You will be less inclined to add a region if the source file is short . Note: Many developers consider regions to be code smells or anti-patterns . Decide as a team on which side of the debate you fall . Code formatting in Visual Studio Don’t despair if these formatting rules seem overwhelming . Modern IDEs make it efficient to set up and enforce them . You can create a template of formatting rules and then convert your project files at once . To set up formatting rules for the script editor: —In Visual Studio (Windows), navigate to Tools.>.Options ..Locate.Text. Editor.>.C#.>.Code.Style.Formatting .. Use the settings to modify the General, Indentation, New Lines, Spacing, and Wrapping options . Code style formatting options 32.of.58.| unity .com© 2022 Unity Technologies —In Visual Studio for Mac, select Visual.Studio.>.Preferences,.then. navigate.to.Source.Code.>.Code.Formatting.>.C#.source.code ... Select the Policy at the top . Then set your spacing and indentation in the Text Style tab . In the C# Format tab, adjust the Indentation, New Lines, Spacing, and Wrapping settings . If at any time you want to force your script file to conform to the style guide: —In Visual Studio (Windows), go to Edit.>.Advanced.>.Format.Document. (Ctrl.+.K,.Ctrl.+.D hotkey chord) . If you want only to format white spaces and tab alignment, you can also use Run Code Cleanup (Ctrl.+.K.,.Ctrl.+.E) at the bottom of the editor . —In Visual Studio for Mac, go to Edit.>.Format.Document.(Ctrl.+.I hotkey) On Windows, you can also share your editor settings from Tools.>.Import.and. Export.Settings . Export a file with the style guide’s C# code formatting and then have every team member import that file . The Preview window shows off your style guide choices . 33.of.58.| unity .com© 2022 Unity Technologies Visual Studio makes it easy to follow the style guide . Formatting then becomes as simple as using a hotkey . Note: You can configure an EditorConfig file (see above) instead of importing and exporting Visual Studio settings . Doing this allows you to share formatting more easily across different IDEs, and it has the added benefit of working with version control . See the .NET code style rule options for more information . Though this isn’t specific to clean code, be sure to check out 10 ways to speed up your programming workflow in Unity with Visual Studio . Clean code is much easier to format and refactor if you apply these productivity tips . Exporting the C# code formatting to share CLASSES 4 NO ONE IN THE BRIEF HISTORY OF COMPUTING HAS EVER WRITTEN A PIECE OF PERFECT SOFTWARE. IT’S UNLIKELY THAT YOU’LL BE THE FIRST.” “ – Andy Hunt, author of The Pragmatic Programmer 35.of.58.| unity .com© 2022 Unity Technologies According to Robert C . Martin’s Clean Code, the first rule of classes is that they should be small . The second rule is they should be even smaller than that . Limiting the size of each class makes it more focused and cohesive . It’s easy to keep adding on top of an existing class until it overextends with functionality . Instead make a conscious effort to keep the classes short . Big, bloated classes become difficult to read and troubleshoot . The newspaper metaphor Imagine the source code of a class as a news article . You start reading from the top, where the headline and byline catch your eye . The lead-in paragraph gives you a rough summary, then you glean more details as you continue downward . Journalists call this the inverted pyramid . The broad strokes of most newsworthy items appear at the beginning . You only get the story’s nuances as you read to the end . Your class should also follow this basic pattern . Organize top-down and think of your functions as forming a hierarchy . Some methods serve a higher-level and lay the groundwork for the big picture . Put these first, then, place lower-level functions with implementation details later . For example, you might make a method called ThrowBall that references other methods, SetInitialVelocity and CalculateTrajectory . Keep ThrowBall first, since that describes the main action . Then, add the supporting methods below it . Though each news article is short, a newspaper or news website will have many such collected stories . When taken together, the articles comprise a unified, functional whole . Think of your Unity project in the same way . It has numerous classes that must come together to form a larger, yet coherent, application . Class organization Each class will need some standardization . Group class members into sections to organize them: —Fields —Properties —Events / Delegates —Monobehaviour Methods (Awake, Start, OnEnable, OnDisable, OnDestroy, etc .) —Public Methods —Private Methods Recall the recommended class naming rules in Unity: The source file name must match the name of the Monobehaviour in the file . You might have other internal classes in the file, but only one Monobehaviour should exist per file . 36.of.58.| unity .com© 2022 Unity Technologies Single-responsibility principle Remember the goal is to keep each class short . In software design, the single- responsibility principle guides you toward simplicity . The idea is that each module, class, or function is responsible for one thing . Suppose you want to build a game of Pong . You might start with classes for a paddle, a ball, and a wall . For example, a Paddle class might need to: —Store basic data about how fast it can move —Check keyboard input —Move the paddle in response —Play a sound when colliding with a ball Because the game design is simple, you can incorporate all of these things into a basic Paddle class . In fact, it’s entirely possible to create one Monobehaviour that does everything you need . Fancy a game of Pong? One Monobehaviour doing everything 37.of.58.| unity .com© 2022 Unity Technologies However, keeping everything as part of one class, even a small one, complicates the design by mixing responsibilities . The data intertwines with the input, while the class needs to apply logic to both . Contrary to the KISS principle, you’ve taken a few simple things and entangled them . Instead, break your Paddle class into smaller classes, each with a single responsibility . Separate data into its own PaddleData class or use a ScriptableObject . Then refactor everything else into a PaddleInput class, a PaddleMovement class, and a PaddleAudio class . A PaddleLogic class can process the input from the PaddleInput . Applying the speed information from the PaddleData, it can shift the paddle using the PaddleMovement . Finally, the PaddleLogic can notify the PaddleAudio to play a sound when the ball collides with the paddle . Each class does one thing in this redesign and fits into small, digestible pieces . You don’t need to scroll through several screens to follow the code . You’ll still require a Paddle script but its sole job is to tie these other classes together . The bulk of the functionality is split into the other classes . Note that clean code is not always the most compact code . Even when you use shorter classes, the total number of lines may increase during refactoring . However, each individual class becomes easier to read . When the time comes to debug or add new features, this simplified structure helps keep everything in its place . Refactoring example For a more in-depth look at refactoring a simple project, see How to architect code as your project scales . This article demonstrates how to break down larger Monobehaviours into smaller pieces using the single-responsibility principle . You can also watch Mikael Kalms’s original presentation, “From Pong to 15-person project,” from Unite Berlin . Refactor a Paddle class into single responsibilities METHODS 5 YOU KNOW YOU ARE WORKING ON CLEAN CODE WHEN EACH ROUTINE YOU READ TURNS OUT TO BE PRETTY MUCH WHAT YOU EXPECTED.” “ – Ward Cunningham, inventor of Wiki and cofounder of eXtreme Programming 39.of.58.| unity .com© 2022 Unity Technologies Like classes, methods should be small with a single responsibility . Each method should describe one action or answer one question . It shouldn’t do both . A good name for a method reflects what it does . For example, GetDistanceToTarget is a name that clarifies its intended purpose . Try the following suggestions when you create methods for your custom classes: .—Use.fewer.arguments: Arguments can increase the complexity of your method . Reduce their number to make your methods easier to read and test . .—Avoid.excessive.overloading: You can generate an endless permutation of method overloads . Select the few that reflect how you will call the method and implement those . If you do overload a method, prevent confusion by making sure each method signature has a distinct number of arguments . .—Avoid.side.effects: A method only needs to do what its name advertises . Avoid modifying anything outside of its scope . Pass in arguments by value instead of by reference when possible . If sending back results via the out or ref keyword, make sure that’s the one thing you intend the method to accomplish . Though side effects are useful for certain tasks, they can lead to unintended consequences . Write a method without side effects to cut down on unexpected behavior . .—Instead.of.passing.in.a.flag,.make.another.method:.Don’t set up your method to work in two different modes based on a flag . Make two methods with distinct names . For example, don’t make a GetAngle method that returns degrees or radians based on a flag setting . Instead make methods for GetAngleInDegrees and GetAngleInRadians. While the Boolean flag as an argument seems innocuous, it can lead to tangled implementation or broken single-responsibility . Extension methods Extension methods offer a way to add additional functionality to classes that might otherwise be sealed and can be a clean way to extend the UnityEngine API . To create an extension method, make a static method and use the this keyword before the first argument, which will be the type you want to extend . For example, suppose you want to make a method called ResetTransformation to remove any scaling, rotation, or translation from a GameObject . 40.of.58.| unity .com© 2022 Unity Technologies You can create a static method passing in a Transform for the first argument with the this keyword: Then, when you want to use it, invoke the ResetTransformation method . The ResetOnStart class calls it on the current Transform during Start . For organization purposes, define your extension methods in a static class . For example, you create a class called TransformExtensions for methods that extend Transforms, Vector3Extensions for extending Vector3s, and so on . Extension methods can build many useful utilities without the need to create more Monobehaviours . See Unity Learn: Extension Methods to add them to your gamedev bag of tricks . // EXAMPLE: Define an extension method public static class TransformExtensions { public static void ResetTransformation(this Transform transform) { transform.position = Vector3.zero; transform.localRotation = Quaternion.identity; transform.localScale = Vector3.one; } } // EXAMPLE: Calling the extension method public class ResetOnStart : MonoBehaviour { void Start() { transform.ResetTransformation(); } } < < 41.of.58.| unity .com© 2022 Unity Technologies The DRY principle: Don’t repeat yourself In The Pragmatic Programmer, Andy Hunt and Dave Thomas formulated the DRY principle, or, “don’t repeat yourself .” This oft-spoken mantra in software engineering advises programmers to avoid duplicate or repetitious logic . In doing so, you can ease bug fixing and maintenance costs . If you follow the single-responsibility principle, you shouldn’t need to change an unrelated piece of code whenever you modify a class or a method . Quashing a logical bug in a DRY program stops it everywhere . The opposite of DRY is WET (“we enjoy typing” or “write everything twice”) . Programming is WET when there are unnecessary repetitions in the code . Imagine there are two ParticleSystems (explosionA and explosionB) and two AudioClips (soundA and soundB) . Each ParticleSystem needs to play with its respective sound, which you can achieve with simple methods like this . Here each method takes a Vector3 position to move the ParticleSystem into place for playback . First, stop the particles (in case they are already playing) and play the simulation . The AudioSource’s static PlayClipAtPoint method then creates a sound effect at the same location . One method is a cut-and-paste version of the other with a little text replacement . Though this works, you need to make a new method – with duplicate logic – every time you want to create an explosion . // EXAMPLE: WRITE EVERYTHING TWICE private void PlayExplosionA(Vector3 hitPosition) { explosionA.transform.position = hitPosition; explosionA.Stop(); explosionA.Play(); AudioSource.PlayClipAtPoint(soundA, hitPosition); } private void PlayExplosionB(Vector3 hitPosition) { explosionB.transform.position = hitPosition; explosionB.Stop(); explosionB.Play(); AudioSource.PlayClipAtPoint(soundB, hitPosition); } < 42.of.58.| unity .com© 2022 Unity Technologies Instead, refactor it into one PlayFXWithSound method like this: // EXAMPLE: Refactored private void PlayFXWithSound(ParticleSystem particle, AudioClip clip, Vector3 hitPosition) { particle.transform.position = hitPosition; particle.Stop(); particle.Play(); AudioSource.PlayClipAtPoint(clip, hitPosition); } < Add more ParticleSystems and AudioClips, and you can continue using this same method to play them in concert . Note that it’s possible to duplicate code without violating the DRY principle . It’s more important that you don’t duplicate logic . Here, we’ve extracted the core functionality into the PlayFXWithSound method . If you need to adjust the logic, you only need to change it in one method rather than in both PlayExplosionA and PlayExplosionB. COMMENTS 6 CODE IS LIKE HUMOR. IF YOU HAVE TO EXPLAIN IT, IT’S BAD.” “ – Cory House, software architect and author 44.of.58.| unity .com© 2022 Unity Technologies Well-placed comments enhance the readability of your code . Excessive or frivolous comments can have the opposite effect . Like all things, strike a balance when using them . Most of your code won’t need comments if you follow KISS principles and break your code into easy-to-digest logical parts . Well-named variables and functions will explain themselves . Rather than answering “what,” useful comments fill in the gaps and tell you “why .” Did you make specific decisions that are not immediately obvious? Is there a tricky bit of logic that needs clarification? Useful comments reveal information not gleaned from the code itself . Here are some dos and don’ts for comments: .—Don’t.add.comments.to.replace.bad.code: If you need to add a comment to explain a convoluted tangle of logic, restructure your code to be more obvious . Then you won’t need the comment . .—A.properly.named.class,.variable,.or.method.serves.in.place.of.a.comment: Is the code self-explanatory? Then reduce noise and skip the comment . .—Place.the.comment.on.a.separate.line.when.possible,.not.at.the.end.of.a. line.of.code: In most cases, keep each one on its own line for clarity . .—Use.the.double.slash.(//).comment.tag.in.most.situations: Keep the comment near the code that it explains rather than using a large multi- line at the beginning . Keeping it close helps the reader connect the explanation with the logic . // AVOID: noisy, redundant comments // the target to shoot Transform targetToShoot; < 45.of.58.| unity .com© 2022 Unity Technologies .—Use.a.tooltip.instead.of.a.comment.for.serialized.fields: If your fields in the Inspector need explanation, add a tooltip attribute and skip the separate comment . The tooltip will do double duty . .—You.can.also.use.a.summary.XML.tag.in.front.of.public.methods.or. functions: Visual Studio can provide IntelliSense for many common XML- style comments . // EXAMPLES: // This is a common comment. // Use them to show intent, logical flow, and approach. // You can also use a summary XML tag. // /// /// Fire the weapon /// public void Fire() { ... } // EXAMPLE: Tooltip replaces comment \[Tooltip(“The amount of side-to-side friction.”)\] public float Grip; Tooltip in the Inspector . < < 46.of.58.| unity .com© 2022 Unity Technologies .—Insert.one.space.between.the.comment.delimiter (//).and.the. comment.text . .—Add.legal.disclaimers: A comment is appropriate for the license or copyright information . However, avoid inserting an entire legal brief into your code . Link instead to an external page with the full legal information . .—Style.your.comments:.Maintain a uniform appearance for your comments, e .g ., begin each comment with an uppercase letter and end with a period . Whatever your team decides, make it part of the style guide and follow it . .—Don’t.create.formatted.blocks.of.asterisks.or.special.characters.around. comments: This reduces readability and contributes to the general malaise of code clutter . .—Remove.commented.out.code: Though commenting out statements may be normal during testing and development, don’t leave commented code lying around . Rely on your source control . Then have the courage to delete those two lines of code . .—Keep.your.TODO.comments.up-to-date:.As you complete tasks, make sure you scrub the TODO comments you’ve left as a reminder . Outdated comments are distractions . You can add a name and date to a TODO for more accountability and context . Also, be realistic . That TODO you left in the code five years ago? You’re never going to get to it . Remember YAGNI . Delete the TODO comment until you need to implement it . .—Avoid.journals: The comments are not a place for your dev diary . There’s no need to log everything you’re doing in a comment when you start a new class . Proper use of source control makes this redundant . .—Avoid.attributions: You don’t need to add bylines, e .g ., // added by devA or devB, especially if you use source control . COMMON PITFALLS 7 IF DEBUGGING IS THE PROCESS OF REMOVING SOFTWARE BUGS, THEN PROGRAMMING MUST BE THE PROCESS OF PUTTING THEM IN.” “ — Edsger W . Dijkstra, computer science pioneer 48.of.58.| unity .com© 2022 Unity Technologies Clean code isn’t an accident . It’s the deliberate work of individuals trying to think and code like a team . Not everything goes to plan, of course . Unclean code inevitably happens, no matter how hard you might try . You’ll need to be on the hunt for it . A code smell is a telltale sign you might have troublesome code lurking in the project . Though the following symptoms don’t necessarily point to underlying problems, they are worth investigating when they appear: .—Enigmatic.naming:.Everyone loves a good mystery, except in their coding standards . Classes, methods, and variables need straightforward, no- nonsense names . .—Needless.complexity:.Over-engineering happens when you try to anticipate every possible need for a class . This can manifest itself as a God object with long methods or large classes that try to do too much . Break up a large class into smaller dedicated parts, each with its own responsibility . .—Inflexibility:.A small change should not require you to make multiple changes elsewhere . Double-check that you aren’t breaking the single- responsibility principle if that’s the case . When you give something more than one responsibility, it breaks more easily because it’s harder to anticipate everything . If you update a method that is doing one thing, and the updated logic still works, you expect the rest of your code to continue to work afterward . .—Fragility: If you make a minor change and everything stops working, this often indicates a problem . .—Immobility:.You’ll often write code that is reusable in a different context . If it requires many dependencies to deploy elsewhere, then decouple how the logic works . .—Duplicate.code: If it’s noticeable that you’ve cut and pasted code, it’s time to refactor . Extract the core logic into its own function and call that from the other functions . Copy-and-paste code is difficult to maintain because you need to update the logic in multiple locations each time there is a change . .—Excessive.commentary:.Comments can help explain code that isn’t intuitive . However, developers can overuse them . A running commentary for every variable or statement is unnecessary . Remember that the best comment is a well-named method or class . If you split your logic into smaller pieces, the shorter code snippets require less explanation . CONCLUSION 8 PROGRAMMING IS NOT A ZERO- SUM GAME. TEACHING SOMETHING TO A FELLOW PROGRAMMER DOESN’T TAKE IT AWAY FROM YOU.” “ — John Carmack, cofounder of id Software 50.of.58.| unity .com© 2022 Unity Technologies We hope you enjoyed this gentle introduction to the principles of clean coding . The techniques presented here are less a specific set of rules than a set of habits, and like all habits, you’ll need to discover them yourself through daily application . As mentioned earlier in the guide, feel free to copy this C# style sheet for Unity developers, to use as a starting point for your own guide . Prepare your code to be scalable by breaking it into small, modular pieces . As the marathon of development unfolds, expect to rewrite your code over and over again . Production can be a trying process with changing requirements . Fortunately, you won’t have to go it alone . When you code as a group, game development becomes less of a long solo race and more akin to a relay . You have teammates to share the workload with and split up the entire course . Remember to stay in your lane and pass the baton and together, you will make it across the finish line . If you’re looking for help on how to clean up your code, reach out to Unity’s professional services team, Accelerate Solutions . The team is made up of Unity’s most senior software developers . Specializing in performance optimization, development acceleration, game planning, innovation, and much more, Accelerate Solutions offers custom consulting and development solutions for game studios of all sizes . One of the services offered by Accelerate Solutions is CAP (Code, Assets and Performance) . This two-week consulting engagement begins with a three-day deep dive into your code and assets to uncover the root causes of performance issues . This will come with an actionable and detailed report with best practice recommendations . To learn more about this or other services Unity Accelerate Solutions offers, speak to a Unity representative today . References This guide is a short list of best practices used in computing . For more information, refer to the Microsoft Framework Design Guidelines, which serve as an overarching style guide for this document . You can also learn more from the comprehensive volumes already written about clean code . Here are a few of our favorite books to consider to further your understanding: Clean Code: A Handbook of Agile Software Craftsmanship. Robert C . Martin, 2008 . Prentice Hall . ISBN 978-0132350884 . The Pragmatic Programmer, 20th Anniversary Edition . David Thomas and Andrew Hunt, 2019, Addison Wesley, ISBN 978-0135957059 . APPENDIX: SCRIPT TEMPLATES 9 TALK IS CHEAP. SHOW ME THE CODE.” “ — Linus Torvalds, creator of Linux and Git 52.of.58.| unity .com© 2022 Unity Technologies Once you establish formatting rules for your style guide, configure your script templates . These templates generate the blank starting files for scripted assets like C# scripts, shaders, or materials . Locate Unity’s preconfigured script templates here: Windows:.C:\\Program.Files\\Unity\\Editor\\Data\\Resources\\ScriptTemplates Mac:./Applications/Unity/Unity .app/Contents/Resources/ScriptTemplates On macOS, reveal the Unity .app package contents to show the Resources subdirectory . Inside this path, you’ll see the default templates . 81-C# Script-NewBehaviourScript.cs.txt 82-Javascript-NewBehaviourScript.js.txt 83-Shader\_\_Standard Surface Shader-NewSurfaceShader.shader.txt 84-Shader\_\_Unlit Shader-NewUnlitShader.shader.txt Whenever you make a new scripted asset in the Project window from the Create menu, Unity uses one of these templates . If you open the file named 81-C# Script-NewBehaviourScript.cs.txt with a text editor, you will see the following: using System.Collections; using System.Collections.Generic; using UnityEngine; public class #SCRIPTNAME# : MonoBehaviour { // Start is called before the first frame update void Start() { #NOTRIM# } // Update is called once per frame void Update() { #NOTRIM# } } < 53.of.58.| unity .com© 2022 Unity Technologies Note the keywords: .—#SCRIPTNAME#:.This is the name you’ve specified for the script . If you don’t customize the name, it uses the default name, e .g ., NewBehaviourScript . .—#NOTRIM#:This guarantees whitespace, making sure one line appears between the curly braces . Script templates are customizable . For example, you can add a namespace or remove the default Update method . Modifying the template can save you a few keystrokes every time you create one of these scripted assets . The script template filename follows this pattern: PriorityNumber–MenuPath–DefaultName .FileExtension .txt A dash (-) character separates the different parts of the name: .—PriorityNumber is the order that the script appears in, in the Create menu . Lower numbers have higher priority . .—MenuPath allows you to customize how the file appears in the Create menu . You can create categories with the double underscore(\_\_) . —For example, “CustomScript\_\_Misc\_\_ScriptableObject” creates the menu item ScriptableObject under the Create.>.CustomScript.>.Misc.menu . .—DefaultName is the default name given to the asset if you don’t specify one . .—FileExtension.is the file extension appended to the asset name . Also, note that each script template also has a .txt appended to the FileExtension . If you want to apply a script template to a specific Unity project, copy and paste the entire ScriptTemplates folder directly under the project’s Assets . The ScriptTemplates copied to the Unity project . 54.of.58.| unity .com© 2022 Unity Technologies Next, create new script templates or modify the originals to fit your preferences . Delete any script templates from the project if you don’t plan on changing them . For example, you could create a blank script template for ScriptableObjects . Make a new text file under the ScriptTemplates folder called: 80-ScriptableObject-NewScriptableObject.cs.txt Edit the text to read: This creates a blank ScriptableObject script, complete with the CreateAssetMenu attribute . Restart the Editor after you save the script template . Next time you should see an extra option in the Create menu . Create a new ScriptableObject script (and a corresponding ScriptableObject asset) from the Create menu . Be sure to back up both the customized script templates and the originals . You will need to restore any files if Unity fails to recognize a modified template . Once you have a set of script templates you like, copy your ScriptTemplates folder to a new project and customize them to your specific needs . You can also change the original script templates in the application resources but exercise caution . That affects all projects using that version of Unity . See this support article for more information about customizing your script templates . Also, check the attached project for a few additional script template examples . using System.Collections; using System.Collections.Generic; using UnityEngine; \[CreateAssetMenu(fileName = “#SCRIPTNAME#”, menuName = “#SCRIPT- NAME#”)\] public class #SCRIPTNAME# : ScriptableObject { #NOTRIM# } A custom script template adds a new menu item in the Create menu . < APPENDIX: TESTING AND DEBUGGING 10 DEBUGGING IS LIKE BEING A DETECTIVE IN A CRIME MOVIE WHERE YOU ARE ALSO THE MURDERER.” “ — Filipe Fortes 56.of.58.| unity .com© 2022 Unity Technologies Automated testing is an effective tool for improving the quality of your code and reducing the time spent on bug fixes . Test-driven development (TDD) is a development methodology where you create unit tests while you develop the software . In fact, you’ll routinely write each test case before making a specific feature function . As you develop the software, you’ll repeatedly run it against this whole test suite of automated processes . This is in stark contrast to writing the software first and building the test cases later . In TDD, coding, testing, and refactoring are interwoven . Here’s the basic idea, presented in Kent Beck’s Test-Driven Development by Example: 1 ..Add.a.single.unit.test: This describes one new feature you want to add to your application; spec out what needs to be done, either from your team or your user base . 2 ..Run.the.test: The test should fail since you haven’t implemented the new feature into your program . Additionally, this verifies whether or not the test itself is valid . It should not always pass by default . 3 ..Write.the.simplest.code.that.passes.the.new.test: Write just enough logic to make it pass the new unit test . This doesn’t have to be clean code at this point . It can use inelegant structure, hard-coded magic numbers, and so on, as long as it passes the unit test . 4 ..Confirm.that.all.tests.pass: Run the full automated test suite . Your previous unit tests should all pass . The new code meets your new testing requirements and the old requirements as well . If not, modify your new code – and only your new code – until all tests pass . 5 ..Refactor: Go back and clean up your new code . Use your style guide and make sure everything conforms . Move the code, so it is logically organized . Keep similar classes and methods together, etc . Remove duplicate code, and rename any identifiers to minimize the need for comments . Split methods or classes that are too long . Run the automated testing suite after each refactor . 6 ..Repeat: Go through this process every time you add a new feature . Each step is a small, incremental change . Make frequent commits under source control . When debugging, you only have to examine a small amount of new code for each unit test . This simplifies the scope of your work . If all else fails, roll back to the previous commit and begin again . That’s the gist of it . If you develop software using this methodology, you tend to follow the KISS principle by necessity . Add one feature at a time, testing as you go . Refactor continuously with each test, so cleaning your code becomes a constant ritual . Like most of the tenets of clean code, TDD takes extra work in the short-term but often results in the improvement of long-term maintenance and readability . 57.of.58.| unity .com© 2022 Unity Technologies Unity Test Framework The Unity.Test.Framework.(UTF), formerly known as the Unity Test Runner, provides a standard test framework for Unity developers . UTF uses NUnit, an open-source testing library for .NET languages . The Unity Test Framework can perform unit tests in the Editor (either using Edit. Mode or Play.Mode) and on target platforms (e .g ., Standalone, Android, iOS) . Install UTF via the Package Manager . The online documentation will help you get started . The general workflow of the Unity Test Framework is to: .—Create.a.new.test.suite,.called.a.Test.Assembly: The Test Runner UI simplifies this process and creates a folder in your project . .—Create.a.test: The Test Runner UI helps you manage the C# scripts that you will create as unit tests . Select aTest Assembly folder and navigate to Assets.>.Create.>.Testing.>.C#.Test.Script . Edit this script and add logic for your test . .—Run.a.test: Use the Test Runner UI to run all of the unit tests or run a selected one . Using JetBrains Rider, you can also run UTF directly from the script editor . .—Add.Play.mode.tests.in.the.Editor.or.as.standalone: The default Test Assembly works in Edit Mode . If you want unit tests to work at runtime, create a separate assembly in Play Mode . Configure this for your standalone build as well (with the results of the test displayed in the Editor) . See the Test Framework microsite for more information about getting up and running with UTF . The Test Framework displays the results of a standalone build within the Editor . unity .com
---
# Unknown
WHAT YOU NEED TO KNOW ABOUT DEVELOPING FOR THE MAC Learn how to take advantage of the Apple ecosystem while avoiding myths and misconceptions. MYTHS VS REALITY UNITY FOR MAC ⟶ E-BOOK © 2021 Unity Technologies— 2 INTRODUCTION The number of Mac users is growing by the day. In Q1 2021 alone, Apple notebooks represented an astonishing 94% quarterly unit growth year-over-year, highlighting the ripe opportunity to develop your next game (or build an existing project) for macOS. The Mac is home to critically acclaimed, commercially successful games, from the otherworldly aquatic depths of Subnautica, to the classic cartoon stylings of Cuphead, to the haunting shivers of solving a murder in Disco Elysium. Sometimes successful studios hesitate to develop for the Mac because they don’t yet appreciate its power and flexibility for gaming. It’s natural to be cautious about entering an unfamiliar development environment, especially when you’re aiming to reach your fans on a platform for the first time. Thankfully, today it’s much easier to produce high-quality titles with top visual and gameplay performance on any Apple device. The Unity game engine has roots in its Mac- exclusive days in the 2000s, and these origins give Unity more than 15 years of expertise in bringing games to Apple users. But even equipped with a winning team and clear goals, misconceptions can trip us up on our way to the finish line. Keep your project on track by seeing through the myths and misconceptions about bringing games to the Mac. © 2021 Unity Technologies— 3 THE MAC ISN’T FOR GAMES. When deciding to bring your masterpiece to the Mac, you’re not just serving lifelong customers who have been using a Mac computer for years. Apple newcomers seeking peak computational and graphical performance are also having their gaming needs surpassed thanks to the power of M1, M1 Pro, and the M1 Max, Apple’s custom SoCs found in their entire Mac lineup. Both audiences were kept in mind by ZA/UM, the developers behind Disco Elysium. Their beloved open-world title won four honors at The Game Awards (including Best RPG and Best Narrative) in 2019 and was tapped as Mac Game of the Year in 2020. ZA/UM initially conceived the game as a Dungeons and Dragons campaign, modified with standard and in-house rules that transformed into its own gameplay system. From there, though, it went on to birth a mesmerizing interactive universe framing a haunting, introspective narrative that’s earned mass critical acclaim. MYTH #1 © 2021 Unity Technologies— 4 While ZA/UM began working on turning that setting into its first video game, Apple hadn’t yet released some of the more impressive and innovative hardware that’s available today. That didn’t stop them from working from the bottom up while developing for the Mac. “You want to make sure it runs on as many devices as you can,” ZA/UM chief technical officer Heiti Kender explains. “There’s a small but very vocal minority that still wants to use their 2012 MacBook Air. We were optimizing on both fronts, and those optimizations from the older computers helped on the M1, as well.” It was the versatility and enduring resilience of those Apple devices that afforded ZA/UM the opportunity to future-proof aspects of Disco Elysium’s production. While the clandestine artistry of the world of Revachol renders within the game up to 4K resolution on current MacBooks and iMacs, test screenshots showed it was possible to go past that to 8K and beyond. The studio even has aspirations to run natively on the monitor displayed in the second-largest Apple Store in the world; at the London’s Covent Garden location, close to ZA/UM’s UK offices. It’s a testament to how even the most audacious dreams of Apple developers are made possible by the Mac. APPLE SILICON-FUELED MACS OFFER INCREDIBLE PROCESSING POWER FOR STUNNING GAME EXPERIENCES. REALITY © 2021 Unity Technologies— 5 While there are bound to be people who personally or professionally own MacBooks and iMacs on your production team, studios don’t always start with a fleet of Apple products dedicated to developing for the platform. Luckily, you can use a Windows PC development environment and still ship on macOS for greater workflow flexibility. Unity supports building macOS builds natively from Windows, allowing an adaptable workflow that fits your team’s schedule. These options offer a great way to set the pace while working out production milestones and release windows for your title across any and all platforms. As development continues, you should test your games on at least one Mac device. This will let you see polished iterations running natively, especially when you start to develop for Mac computers with Apple silicon and take advantage of the Metal API and its development options, such as Frame Capture through Xcode. It also pays dividends when seeking access to further devices in the Apple family. ZA/UM used multiple Apple products when developing Disco Elysium for macOS, and transferring data across devices was quite simple. “When you make a backup and restore it to another Mac, it’s identical,” Kender explains. “We cloned everything to the backup drive, took a train (from London) to Brighton, and set it up; it was done in a day. It’s very scalable. Everything Apple has, from laptops to iPods, to iPhones, all the devices; you can scale it like nothing else.” Cross-platform compatibility and hardware reliability come standard when developing for macOS, especially when transferring over from Windows PC. YOU NEED A MAC TO START BUILDING FOR MAC. MYTH #2 © 2021 Unity Technologies— 6 YOU CAN TAP INTO MAC’S VAST AUDIENCE FROM ANY DEVELOPMENT ENVIRONMENT. REALITY © 2021 Unity Technologies— 7© 2021 Unity Technologies— 7 MACS ARE TOO COMPACT FOR PEAK PERFORMANCE. It’s understandable to assume, since Mac notebooks are so compact, that they wouldn’t have the power necessary for high-performance gaming. But Apple took their knowledge of designing industry-leading chips for more than a decade for iPhone, iPad, and Apple Watch and applied it to the Mac by creating three breakthrough chips: M1, M1 Pro, and M1 Max. All three chips offer high-end graphics performance while using significantly less battery. MacBooks powered by these chips offer a truly unique gaming experience where users have peace of mind they can game for hours on-the-go without compromising performance. The ingenuity of the chip concept aligns with Apple’s modernized design philosophy. It unlocks more optimized GPU memory on the hardware, empowering macOS developers with a graphical and technical depth never seen before. Image courtesy of Apple Inc. MYTH #3 © 2021 Unity Technologies— 8 The adaptability of the chip allowed ZA/UM to explore creative solutions when developing Disco Elysium: The Final Cut for macOS. As the first Made with Unity title developed natively for Apple Silicon devices, they sought a plethora of new voices to enrich players’ enjoyment of their epic narrative. ZA/UM recorded a staggering 1.2 million words in the process, more than double that seen in The Lord of the Rings books and The Hobbit prequel. With the team working remotely, voice actors used iPads and the sound engineer leveraged a Mac Mini to keep everybody safe and distant while maintaining their workflow. “At first, they were like, ‘It’s such a small machine... can it run this?’” Kender recalls. “On the back office Mac Unity builder (workstation), when we were building the game, it had to crunch 20GB, or something like that, of data. Mac was three times faster than any PC we have. If it builds, I know for sure that it runs on that Mac Mini for the sound engineer, for the actor reading in. That solution took away a lot of headaches.” With the computational transition to Apple silicon, we see a development space on the Mac that will not hinder creativity, functionality, or possibility. Instead, we’re seeing developers feel at ease knowing they can run through data processes quickly and more reliably thanks to the hardware innovations made available to them. NEVER UNDERESTIMATE THE PERFORMANCE OF THE MAC. REALITY © 2021 Unity Technologies— 9 YOU CAN’T GO BIG ON GAME GRAPHICS. To reach a pristine 4k 60 fps gaming experience at home on the iMac and on the go with MacBook was once thought impossible. Those previously unattainable heights are now a reality. However, the ambition to reach a bold visual fidelity starts much earlier than what you see in a final release build. Having established the capabilities of the hardware, the next stage is creating gorgeous gameplay environments. It begins when you’re building and iterating on the project at its earliest stages. Creating games in the Unity engine offers benefits up and down the line, from the choice of multiple render pipelines at ground level to checking in with seasoned Mac tech experts for solutions guidance. The latest engine tools and support options allow you to take your creative vision and make it pop on the screen. It’s not enough to wow players with crisp, awe-inspiring visuals. The game needs to run as smoothly as possible on Mac hardware to avoid frustrating players with inconsistent inputs. The Unity Profiler runs optimization checks that locate the pain points and bottlenecks in the pipeline, so you and your team can fix each issue at its source. Continuous upgrades in the Unity software like the Progressive GPU Lightmapper work in harmony with Apple’s offerings at both the coding and hardware levels. Unity’s optimizations for tile-based GPUs are advantageous for the M1 chip, which has a unified memory architecture that makes it easier to perform efficient and speedy tasks. MYTH #4 © 2021 Unity Technologies— 10 We’ve already touched on an example of Apple hardware outputting at UHD resolution with Disco Elysium. However, being paired with a high frame rate in an open-world RPG, complete with sprawling vistas, keeps Mac users immersed and responsive to the highly stylized universe ZA/UM created. It was in no small part thanks to the Scriptable Render Pipeline chosen by the developers, who pushed the limitations of the engine’s performance by layering realistic snow and rain across the breadth of the city landscape. “Those are particles, it’s not in a loop. You can follow every snowflake where it goes,” Kender says. Generating those particles atop existing characters, objects, and textures displayed onscreen, which was a challenge for the development team. Still, Kender explains that it was a personal idea to have the game running as well as possible on the M1, and this guided the team toward a consistent, high-octane performance while using native resolution assets. “We are always looking for optimizations but not at the cost of our artistic level,” elaborates Kender. ZA/UM used Amplify Texture, a Unity Profiler, and other engine tools, ensuring they didn’t have to make sacrifices to their technical or artistic visions. © 2021 Unity Technologies— 11 HARNESS THE RIGHT DEVELOPMENT TOOLS TO UNLOCK THE AMBITIOUS GRAPHICAL FIDELITY AND AWE-INSPIRING VISUALS POSSIBLE ON A MAC. REALITY © 2021 Unity Technologies— 12 BUILDS FOR MAC ARE MORE COMPLICATED THAN OTHER DESKTOP PLATFORMS. As much as one can dream, there’s no magic formula that unlocks a flawless, carefree development cycle. Making video games is a challenge no matter what platform you develop for. Even for those with years of game development experience, it sometimes takes an outside perspective to break through problem areas. There are always options to make the content creation process more straightforward as you strive for perfection. Apple also provides macOS notarization as an additional checkpoint that ensures quality execution on your build as you get closer to launch. It verifies that your title is operating as intended and guarantees that your executable is free of malicious content as an extra assurance to end users. When looking to build macOS projects for a large audience on a third-party engine, Unity Pro leverages the company’s storied partnership with Apple to provide streamlined, knowledgeable platform support. On top of the robust creative suite that comes with the Unity engine, tools like Device Simulator highlight what your game would look like on an iOS device, offering a glimpse of the potential growth should you decide to expand development for Apple’s gaming ecosystems. MYTH #5 © 2021 Unity Technologies— 13 BUILDING GAMES IS HARD FOR ANY PLATFORM. MAKE SURE YOU HAVE THE TOOLS TO DO IT RIGHT. ZA/UM published Disco Elysium on macOS just a few months after their initial PC launch. Despite it being the studio’s first video game project, the support they received from both engine technicians from Unity and Apple’s Metal Ecosystem team was instrumental to the technical success of the game. Unity Pro provided the team support for both the original and native M1 versions when developing for Mac, which, as Kender puts it, “got everything sorted at a really fast pace.” Through their partnership with Apple, the engineers had access to supreme knowledge of the hardware and software ecosystems, going so far as to call their representative “a brother in arms.” “He was crazy good at what he does,” ZA/UM head of publishing Mikk Metsniit proudly exclaims, going so far as to call their representative “a brother in arms.” “We sent him the build of the game or asked for his opinion, and he came back with five to 10 pages of what we can do to improve it, ran it through all his analytical tools, performance tools, all that other stuff. He always had new ideas on how to make it better and better.” When you have foundational partners who are excited by your success and share their knowledge of how to best use the tools at your disposal, making video games can feel like a breeze. Imagine how simple it must feel with a second title, third, or an entire gaming empire under your belt. REALITY © 2021 Unity Technologies— 14 THE GAMING POTENTIAL OF MAC IS A REALITY. →Apple silicon-fueled Macs offer incredible processing power for stunning game experiences. →You can tap into Mac’s vast audience from any development environment. →Never underestimate the performance of the Mac. →Harness the right development tools to unlock the ambitious graphical fidelity and awe- inspiring visuals possible on a Mac. →Building games is hard for any platform. Make sure you have the tools to do it right. THE REALITY → THE REALITY → THE REALITY → THE REALITY → THE REALITY → THE REALITY → THE REALITY → THE © 2021 Unity Technologies— 15 TAKE YOUR GAME TO MAC WITH UNITY. “At Unity, we believe the world is a better place with more creators in it, so we work closely with partners like Apple to deliver the best possible experience for those creators, on the widest range of platforms. With the increased performance and power of the latest Apple silicon pro chips, you can make more complex scenes, bigger games, better games, all on your laptop.” - Nick Rapp, Senior Director, Platform at Unity There’s never been a better time to make a game for Mac. Hardware advances unlock performance that powers stylistic, bold visuals across the platform, proving that Macs can maintain pace no matter where you begin your build. Software tools from both Apple and Unity are essential aids that will help you to push the limits of your creative potential, never holding you back. Now is the time to think different. Now is the time to expand your horizons and reach your players where they want to play. Bringing your game to Mac is a great first step into the Apple ecosystem, opening you up to an audience eagerly awaiting new and exciting gaming experiences. Unity also has your back with Unity Pro support for everyday development needs and an Enterprise plan to get larger teams up to speed with the latest engine upgrades. If you’re still unsure about making the move to Mac with Unity, speak to a Unity expert.
---
# Unknown
© 2024 Unity Technologies Introduction to multiplayer networking in Unity ⟶ E-BOOK Contents Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 The evolution of Unity tools for multiplayer games . . . . . . . . .8 Basic concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Headless servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 UDP packets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 UDP versus TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Ticks and updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Other networking terms . . . . . . . . . . . . . . . . . . . . . . .16 Network synchronization . . . . . . . . . . . . . . . . . . . . . . . . . .16 Techniques for network synchronization . . . . . . . . . .17 Network topologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Client-server topology . . . . . . . . . . . . . . . . . . . . . . . .18 Dedicated game server . . . . . . . . . . . . . . . . . . . .18 Client-hosted listen server . . . . . . . . . . . . . . . . .19 Distributed authority . . . . . . . . . . . . . . . . . . . . . . . . . .19 Local or couch multiplayer . . . . . . . . . . . . . . . . . . . . .20 Peer-to-peer (P2P) . . . . . . . . . . . . . . . . . . . . . . . . . . .20 What is an authoritative server? . . . . . . . . . . . . . . . . .20 Network stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Unity networking solutions . . . . . . . . . . . . . . . . . . . . . . . . . . .23 Netcode for GameObjects . . . . . . . . . . . . . . . . . . . . . . . . .23 Netcode for Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 Unity Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 Third-party networking . . . . . . . . . . . . . . . . . . . . . . . .26 Setting up your first Netcode project . . . . . . . . . . . . . . . . . . .27 Before you begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Sample project setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 Installing Netcode for GameObjects . . . . . . . . . . . . . . . . .29 Adding the NetworkManager . . . . . . . . . . . . . . . . . . . . . . .30 NetworkObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Player NetworkObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 Creating a Player NetworkObject . . . . . . . . . . . . . . . . . . .33 Multiplayer Play Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 Creating your own UI start buttons . . . . . . . . . . . . . .41 Adding NetworkBehaviour . . . . . . . . . . . . . . . . . . . . . . . . .41 Authority and ownership properties . . . . . . . . . . . . . .44 Sync using a NetworkTransform and NetworkAnimator . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 Applying client authority . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Owner authoritative mode components . . . . . . . . . .49 Syncing with server authority . . . . . . . . . . . . . . . . . . . . . .49 Singleton design pattern . . . . . . . . . . . . . . . . . . . . . . .53 Network synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Gameplay mechanic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Define a NetworkVariable . . . . . . . . . . . . . . . . . . . . . . . . . .55 Adding an RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57 Trigger mechanic . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 RPCs versus NetworkVariables . . . . . . . . . . . . . . . . . . . . .59 Designing for multiplayer . . . . . . . . . . . . . . . . . . . . . . . . . .60 Network latency and performance . . . . . . . . . . . . . . . . . . . . . .61 Simulating latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 Unity Transport Debug Simulator . . . . . . . . . . . . . . . .61 Network Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . .62 Other network conditioners . . . . . . . . . . . . . . . . . . . .63 Client-side interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Client-side prediction and anticipation . . . . . . . . . . . . . . .65 Why server authority . . . . . . . . . . . . . . . . . . . . . . . . . .65 How client-side prediction works . . . . . . . . . . . . . . . .66 Reconciliation and rollback . . . . . . . . . . . . . . . . . . . . .67 Client-side anticipation in Netcode for GameObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68 Deterministic physics . . . . . . . . . . . . . . . . . . . . . .70 Client-side prediction in Netcode for Entities . . . . . .70 Testing and debugging networked games . . . . . . . . . . . . . . .73 Local testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 Player builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 Multiplayer Play Mode (MPPM) . . . . . . . . . . . . . . . . . .74 macOS users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 Simulating network conditions . . . . . . . . . . . . . . . . . . . . . .74 Testing client connections . . . . . . . . . . . . . . . . . . . . . . . . .75 Clients connecting . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 Clients disconnecting . . . . . . . . . . . . . . . . . . . . . . . . .75 Host/Server starting the session . . . . . . . . . . . . . . . .75 Host/Server shutting down . . . . . . . . . . . . . . . . . . . . .75 Techniques for debugging multiplayer games . . . . . . . . .76 Command line helper . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Multiplayer Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 Matchmaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 Lobby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 Relay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 Multiplay Hosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 Vivox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 Sample projects and resources . . . . . . . . . . . . . . . . . . . . . . . .82 Resources for Netcode for GameObjects . . . . . . . . . . . . .82 Unity Learn: Get started with Netcode for GameObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 Bitesize samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 Boss Room . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85 Small Scale Competitive Multiplayer template . . . . .86 VR Multiplayer template . . . . . . . . . . . . . . . . . . . . . . .88 Resources for Netcode for Entities . . . . . . . . . . . . . . . . . .89 Getting started with Netcode for Entities . . . . . . . . .89 ECS Netcode samples . . . . . . . . . . . . . . . . . . . . . . . . .89 ECS Network Racing . . . . . . . . . . . . . . . . . . . . . . . . . .90 Megacity Metro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 Experimental Multiplayer Services package . . . . . . . . . . .91 Next steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92 © 2024 Unity Technologies6 of 91 | unity.com Introduction When people get together in an online game, something extraordinary happens. That simple racing game or RPG transforms into a shared experience. What happens there can be unpredictable, challenging, and, most of all, fun. Whether we are teaming up against an interstellar saboteur or dueling in an online shooter, networked multiplayer gaming allows us to collaborate and compete beyond physical boundaries. This collective interaction is what defines the multiplayer experience. Developing networked gameplay, however, can be more complex than creating an equivalent single-player application. The aim of this guide is to help you get started with developing multiplayer games using Unity’s network tools. It provides a foundational knowledge of networking concepts and serves as a primer before you dive into the Unity network samples. It also walks you through a basic use case with the Starter Assets – ThirdPerson package available on The Unity Asset Store. This guide assumes you are familiar with Unity and C# development but may be new or just getting started with networking. It’s designed to help you quickly understand the theoretical aspects of multiplayer development and prepare you for the practical demos. This e-book will: — Explore the core concepts of Unity multiplayer — Explore different multiplayer systems and networking models — Set up a simple example using Netcode for GameObjects © 2024 Unity Technologies7 of 91 | unity.com The evolution of Unity tools for multiplayer games Unity provides a number of multiplayer development tools and solutions. These include the Netcode for GameObjects and Netcode for Entities frameworks, alongside Unity Gaming Services (UGS), which features Game Server Hosting (Multiplay) and Vivox for voice and text chat. Whether you’re building a casual co-op or an open-world MMO, Unity can help you hit the ground running with multiplayer development. Unity 6 brings new and improved features for multiplayer games that make integration, iteration, and deployment more reliable and faster than ever. Here’s a brief look at what’s new in Unity 6 for multiplayer games: —Multiplayer Center: Available as a core package in Unity 6, the Multiplayer Center makes it easier to set up and develop multiplayer games. New prompts and workflows use parameters and requirements for your game to suggest relevant packages and services before generating dynamic templates you can use to start your project. —Multiplayer widgets: Multiplayer widgets help you to integrate Unity Gaming Services (UGS) into your multiplayer game. You can access the widgets as a standalone package, or from the Multiplayer Center. —Multiplayer Tools package: This package improves workflows for multiplayer game development in Unity, performance with Netcode for GameObjects 2.0, and adds support for Distributed Authority. —Multiplayer Play Mode: This package streamlines your process for validating gameplay by launching up to four independent, lightweight editor processes from the same assets on disk. For the most ambitious server-hosted projects, Play Mode Scenarios allows you © 2024 Unity Technologies8 of 91 | unity.com | Introduction | The evolution of Unity tools for multiplayer games | Basic concepts | to configure deployment steps, including the build of your dedicated server, and its upload straight to your Multiplay Hosting servers. —Distributed Authority (beta): Distributed Authority, in beta as of November 2024, is available to use with Netcode for GameObjects. This package gives clients distributed ownership of authority over spawned NetcodeObjects during a game session. The netcode simulation workload is distributed across clients, while the network state is coordinated through a high-performance cloud backend which Unity provides. —Multiplayer Services SDK: This SDK is a one-stop solution for adding multiplayer elements to a game developed in Unity 6. The Unity Gaming Services (UGS) Multiplayer services like Relay, Matchmaker, and more, powers these capabilities to define how groups of players interact in your games through Sessions, which work with either the Netcode for GameObjects or the Netcode for Entities networking libraries. Check out these resources to learn more about Unity 6 multiplayer solutions: —Unite 2024: Accelerating the creation of the your competitive multiplayer game —Unite 2024: Going multiplayer: How to help your studio and game thrive —Unity Manual: New in Multiplayer in Unity 6 —Unity 6 is here: See what’s new Unity’s suite of tools supports the entire multiplayer game development lifecycle, from concept and prototyping to launch and ongoing operations. Work entirely within the Unity ecosystem or select the tools and services that best match the needs of your team. © 2024 Unity Technologies9 of 91 | unity.com Basic concepts In multiplayer gaming, networking enables players to connect to a central server or directly to each other. This allows them to share data and play together in real-time. The same game application runs simultaneously on each player’s device, and each player’s actions are then synchronized across the network. In networked multiplayer, the same game application runs across multiple devices. © 2024 Unity Technologies10 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | A typical networked game consists of two main components in its architecture, clients and servers. Clients are the instances of the game running on players’ devices – PCs, consoles, or mobile phones. Clients render the game graphics, play the audio, handle user input, and send updates to the server about the player’s actions. Servers, on the other hand, manage the game state, the current status of all the elements in the game. They handle communication between clients and enforce the game’s rules. Servers can be dedicated, headless machines run by the game developers or they can be player- hosted, where one of the players also acts as the server. The server receives inputs from clients, processes game logic, and sends updates back to clients. Although the server is the final authority on the game state, clients maintain local copies for responsive gameplay. Constant synchronization then keeps the game as consistent as possible for all players in real-time. The client-server architecture Headless servers A headless server is a server that operates without a graphical user interface, focusing solely on backend tasks. Because they don’t render graphics, they can scale more easily and are often deployed on dedicated hardware or cloud environments. For more information, see Dedicated game server under Network Topologies . © 2024 Unity Technologies11 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | UDP packets Clients and servers communicate by exchanging data packets using standard Internet protocols like UDP (User Datagram Protocol). In real-time applications, especially fast-paced games like first-person shooters, UDP is preferred to TCP (Transmission Control Protocol) because it gives full control to the game to prioritize different aspects of the communication. Unlike TCP, UDP does not require acknowledgement from the recipient. This makes UDP a more efficient and flexible foundation but it also puts the burden on the application to handle cases when such functionality is required. Each UDP packet consists of a header and a payload. The UTP payload contains additional protocol-specific sections, each with their own headers and payloads. In networking terminology, this nesting is known as encapsulation . The IP and UDP headers are of a fixed size and contain important metadata like the address of the sender and receiver (IP address and ports). The payload varies in size, structure, and content, depending on the specific game and context. For example, a payload could carry player inputs or a snapshot of the game state at one moment in time. UDP packets favor low latency and speed, essential for real-time applications; however, this speed comes with a lack of reliability as a tradeoff. The UDP protocol doesn’t provide any mechanisms for reliability, ordering, or congestion control. A packet traveling through the internet could experience errors, including: —Packet Loss: Sometimes a packet may get lost and never arrive at its destination. This could be due to network congestion, faulty hardware, or other issues. Simplification of a UDP packet © 2024 Unity Technologies12 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | —Duplication: A packet might be duplicated, resulting in the same packet arriving multiple times at the receiver. This can happen due to misconfigured network hardware or software. —Reordering: Packets may arrive at the receiver in a different order than they were sent. This can happen if packets take different routes to the destination that have varying latencies . —Corruption: Packet contents may get altered during transmission, resulting in unusable data . UDP versus TCP A network protocol is a set of rules and conventions that govern how data is transmitted and received over a network. Protocols define how to establish connections, format messages, handle errors, and transmit data. UDP is typically preferred over Transmission Control Protocol (TCP) in game development due to its fast and lightweight nature. TCP, while reliable and suitable for web browsing, ensures ordered data delivery by retransmitting lost or out-of-order packets; this can introduce lag or stutter that don’t make it suitable for real-time gaming. In contrast, UDP accepts some data loss to prioritize real-time performance. This means that games can run smoothly at 60 fps or higher without freezing, even if dropping some non-critical data. UDP usually strikes a better balance between responsiveness and occasional data loss, making it ideal for networked multiplayer games. The following techniques can mitigate UDP’s unreliability. Unlike the built-in functionality in TCP, they can be fine-tuned for use in real-time games. TechniqueWhat it does Sequence numbersEach packet has a unique, increasing sequence number. The receiver uses this to detect missing or out-of-order packets. Acknowledgement (ACK) and ACK bitmasks Packets include the sequence number of the last received packet, letting the sender know which packets have been delivered. An ACK bitmask tracks the status of multiple packets at once, allowing for quicker detection of lost packets. Retransmission timeout adjustment (RTO) This is a technique that makes use of measuring round trip time in TCP approximation. For example, you can measure the round trip time and then use it to adjust client-side interpolation or client-side prediction. TimeoutsIf an acknowledgment isn’t received within a certain period, the packet is considered lost. © 2024 Unity Technologies13 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | Ticks and updates In a multiplayer game, the server handles the core game logic, physics simulations, and other gameplay functions, even if it doesn’t have a display. As the server is only handling the global game state, it takes its input from the clients, much like a single-player game handles inputs from a local player. Instead of having a mouse and keyboard, the server processes those inputs to maintain the “authoritative game state” – this includes everything from current player positions and object states to physics calculations and game progress. The heart of server-side processing is the server tick. A server tick is a cycle during which the server updates the game state based on received inputs. This happens at a fixed interval known as the tick rate, measured in Hertz (Hz) or ticks per second. This tick rate determines the frequency at which the game world is updated. Conversely, the update rate refers to how frequently the client exchanges data with the server. A higher update rate can enhance the responsiveness of the game but requires more bandwidth and processing power. It’s typically constrained by the client’s network capabilities and computing resources. Tick rate versus update rate A higher tick rate can improve the game’s responsiveness but may strain server resources. Similarly, a higher update rate enhances interaction smoothness at the expense of greater data transmission. Creating a smooth and responsive multiplayer experience hinges on finding © 2024 Unity Technologies14 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | the right balance between the tick rate and the update rate. The actual tick rate can vary based on gameplay needs. A fast-paced first person shooter often runs at tick rates of 60 Hz or higher to reflect fast player movements and split-second shots. A real-time strategy game, on the other hand, doesn’t rely on twitch reflexes, so a tick rate of 30 Hz may be sufficient. Meanwhile, a large-scale strategy MMO might use a fairly low tick rate of 10 Hz in order to support an extensive number of concurrent players. Latency Latency is the time it takes for data to travel from the source to the destination. Round-trip time (RTT) measures how long it takes for a packet to travel to its destination and return with a response, providing a gauge of network latency. While subjective, a general rule of thumb is that users notice gameplay degradation around 200ms of latency. Different types of games can tolerate more or less latency. For example, first-person shooter games perform best with less than 100ms of latency, whereas real-time strategy games might allow higher latency values of up to 500 ms. Round-trip time is a gauge of network latency. Lower latency produces a responsive experience for the player. Ideally, there is minimal delay between a user’s action and seeing the expected result in a multiplayer game. High latency leads to noticeable delays during gameplay. Sometimes latency results from non-network components. For example, there may be a delay in detecting user input or a hiccup in the render pipeline. Another culprit is Vsync: Though this feature can stop screen tearing, it does so at the cost of additional latency. More often, the network itself is the major source of latency. It can involve several types of delays: —Processing delay: Routers take time to read packet headers and forward packets to their destination. Though usually minimal, this delay can accumulate across multiple hops. © 2024 Unity Technologies15 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | —Transmission delay: This is the time required to put packets onto the network, directly affected by packet size. This is more apparent on end-user networks with lower bandwidth. —Queueing delay: When packets are held in queues due to congestion or limited interface capacity, this delay can significantly increase latency. —Propagation delay: Signals take time to travel across the network. This type of delay results primarily from the physical distance between servers and users, the physical media (fiber, copper, air) and type of signal (electrical, optical, radio wave). While some latency is unavoidable, especially in internet-based games, there are many techniques (e.g., anticipation, prediction, interpolation) to minimize its impact. We’ll examine a few of these later. Other networking terms Here are some other terms that you may encounter when discussing latency: Ping: This involves sending and receiving back a basic message to gauge network responsiveness. Think of it as a simplified version of Round Trip Time (RTT). Jitter: This is the variation in RTT due to fluctuating network conditions, which can affect latency mitigation and cause packets to arrive out of order. Bandwidth: This is the amount of data that can be transmitted over a network in a given amount of time. Higher bandwidth can be important for games that need to transmit large amounts of state data. You can find these terms and more in this glossary page of Multiplayer Networking Terminology . Network synchronization To stay in sync, clients and the server continuously exchange messages in order to maintain a consistent game state across all players. Typically, clients usually send user commands to the server at a high frequency – often at 60 Hz, or about every 16 milliseconds. These commands might be actions or inputs; for example, mouse or gamepad movements or button presses for jumping and shooting. Once the server receives and processes the client commands, it then sends updates about the game world back to the clients. The faster the game reacts to player input, the more responsive it feels. Just bear in mind that the server’s tick rate, the client’s update rate, and the client’s frame rate serve different purposes and don’t need to match. In fact, achieving perfect synchronization is uncommon. A server and its clients are constantly in flux, exchanging a continuous stream of dynamic data. The objective is to reduce their discrepancies, thereby creating the illusion that all clients are playing in unison. © 2024 Unity Technologies16 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | Techniques for network synchronization State synchronization involves the periodic transmission of the state of network objects from the server to the clients. How frequently these game updates happen can vary based on the specific needs of the game genre (e.g. a competitive shooter versus a co-op strategy game). Remote procedure calls (RPCs) invoke functions on the server or other clients remotely. Use RPCs for client-to-server communication, such as sending player inputs, requesting specific actions, or triggering one-time game events. Bandwidth management can significantly impact performance. Synchronization consumes bandwidth, so implement strategies like the following to reduce data transmission over the network: —Data culling: This reduces network traffic by excluding non-essential updates, focusing only on what is necessary for gameplay. For instance, you can sync only critical axes of movement or trigger VFX and animations locally using events instead of continuously synchronizing them. Any reduction in network traffic can enhance game performance. —Delta compression: This also goes by the term delta encoding. It allows the server to send only the changes (deltas) since the last update. Clients then apply only these deltas to their local game state to keep it in sync with the server. —Interest management: This prioritizes data synchronization based on several criteria. Spatial relevance determines the priority of objects based on their distance from the player and their visibility. Age (or staleness) prioritizes objects or data that haven’t been transmitted recently, making them higher-priority until updated. Interaction focuses on objects that have recently interacted with the player or are likely to do so soon. These techniques can help you optimize network performance, ensuring a smoother and more efficient gameplay experience. Network topologies Simply put, a network topology defines how devices are connected and communicate in a multiplayer environment. Each network model has its own advantages and disadvantages. Choosing one depends on the type of game, the desired level of control over the game state, and the resources available for server infrastructure. Topologies can impact the game’s architecture, performance, and the overall player experience. Netcode for GameObjects supports two primary topologies: client-server and distributed authority. Let’s unpack what that means. © 2024 Unity Technologies17 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | Client-server topology The client-server topology is a common network model that divides responsibilities between client devices and a central server to optimize performance and manage the game effectively. A client represents a player’s game instance, handling local inputs, rendering, and partial simulation of the game state. Clients send local inputs like character movements to the server and receive updates in return . The server maintains the definitive, accurate representation of the game world, processing player inputs and enforcing game rules. This central server resolves conflicts and validates actions, ensuring a consistent and fair experience for all players. This setup also helps prevent cheating by controlling game state centrally. Clients and servers can communicate with each other over the internet or a local area network (LAN). Offline LAN games connect multiple devices within the same physical vicinity through a local network without needing internet access. This setup bypasses the internet and ensures minimal latency, high security, and reliable connectivity due to the close proximity of the devices. This makes it suitable for LAN parties, esports tournaments, and environments where the internet is unstable. There are two types of servers within the client-server topology: Dedicated game server A dedicated game server is a separate entity that only processes data and doesn’t participate as a player. It can offer the highest performance while handling all major simulations and player interactions in networked games. Dedicated servers are integral for games where minimizing cheating is paramount. However, this setup can introduce communication latency as all player state changes need to be processed by the server before being relayed to other clients . Dedicated servers are particularly well-suited for performance-sensitive, competitive games such as first-person shooters. They can be essential to maintaining fairness and reducing disruptive behavior. A dedicated game server handles all major game simulations. © 2024 Unity Technologies18 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | Client-hosted listen server A client-hosted listen server acts as both server and client, allowing the host to play the game. This can help reduce costs but gives the host a latency advantage (since no packets need to be sent across the network). This setup often results in degraded server performance since the same machine is tasked with running the game server and generating the visual output for the host player. Also, because the hosting client services connections via a residential internet connection, it can be slower than using a dedicated server in a remote data center. This is because residential internet service providers typically prioritize download performance over upload performance. A client-hosted listen server acts as both a server and client. Distributed authority The distributed authority network model decentralizes control and management of game state among all participating clients. Each client is responsible for owning, tracking, and managing a portion of the state of objects within the game, with the ability to spawn and manage these objects autonomously. A central, lightweight service monitors changes in object states and manages the routing of network traffic, but it does not simulate the game itself. This topology offers several benefits, including reduced costs and lower input latency, as it eliminates the need for a central server to process all game actions and reduces network round-trips since each client is authoritative over its own objects. For example, that means it can handle actions like movement, attacks, or other game inputs locally without waiting for permission from a server. This results in more immediate feedback for the player, which in turn makes the game feel more responsive. However, it also can be subject to increased vulnerability to cheating as there’s no single authoritative server to validate all actions. Distributed authority is less suitable for games requiring precise simulations or high competitiveness but works well for games with less critical interaction needs. © 2024 Unity Technologies19 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | You can learn more about Unity’s new Distributed Authority package (beta) for Netcode for GameObjects in this Unite 2024 session . The distributed authority model decentralizes control and game management. Local or couch multiplayer Local multiplayer games use a single client runtime instance that can be played by two or more people on the same screen in the same physical location. This setup is ideal for social gaming scenarios, offering direct interaction among players without any need for networking. It’s popular in party games and co-op modes, providing a straightforward way for friends and family to play together. Peer-to-peer (P2P) Each device functions as both client and server, allowing for direct connections between players. This resembles distributed authority but disposes of the lightweight server altogether. This method helps reduce the need for centralized servers, lowering costs and complexity. However, it can introduce challenges in ensuring fairness and consistent latency, as there is no central authority to manage game state and security. What is an authoritative server? An authoritative server refers to a server setup that is the central controller of game states and logic. As the name implies, it’s the final authority in a networked game. Rather than splitting authority of what is happening in the game across the player machines, an authoritative server runs the full game simulation itself and dictates what is happening in the game. Clients simply send their inputs to the server, which then updates the game and sends back the latest game state. The server also enforces game rules and resolves conflicts. Authoritative servers are one of the simplest ways to implement networked game logic and the one least prone to exploitation by cheaters, ensuring a uniform experience for everyone playing the game . © 2024 Unity Technologies20 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | Network stack A protocol stack, or network stack, is generally speaking software that implements various communication protocols to enable data transmission across networks. It’s organized like a layered cake: The Network stack (source: Wikipedia) Each layer only interacts with the layers directly above and below it, providing modularity and simplifying network management. Application layer: The high-level of the stack where most Unity development takes place. Packages like Netcode for GameObjects or Netcode for Entities abstract away the complexities of lower-level networking, allowing developers to focus on implementing multiplayer functionality. Transport layer: The transport layer is responsible for providing reliable data transfer, error detection and correction, flow control, and ensuring end-to-end communication between devices in a network. It facilitates the segmentation and reassembly of data packets and provides mechanisms for error recovery and data integrity. Network layer: The network layer is responsible for routing data packets between networked devices across different networks. It relies on the network infrastructure and protocols, such as IP (Internet Protocol), to handle communication. © 2024 Unity Technologies21 of 91 | unity.com | The evolution of Unity tools for multiplayer games | Basic concepts | Unity networking solutions | Data link and physical layers: These layers directly handle physical transmission of data packets over the network medium, such as Ethernet or Wi-Fi. The data link layer and physical layers are typically handled by the operating system and network hardware. As a Unity developer, you’ll primarily work with the high-level application layer to implement multiplayer features, such as synchronizing GameObjects, managing game state, and handling player interactions. Generally, you won’t need to worry about the lower layers unless your application has specific requirements. This simplifies the network stack to something that looks like this: Netcode development layers © 2024 Unity Technologies22 of 91 | unity.com Unity networking solutions Unity provides comprehensive solutions for developing multiplayer games across various genres and scales. Selecting the right netcode solution is crucial because different game types have specific networking demands. Consider several factors here, including the game genre, scale, level of competitiveness, and the desired control over the networking layer. Casual games often prioritize simplicity and cost-effectiveness, while competitive games require precise and robust network management to ensure fairness and responsiveness. Whether you are building a casual cooperative game or a competitive action title, Unity offers powerful netcode packages and complementary services to meet your needs. Netcode for GameObjects For casual cooperative multiplayer games, Unity recommends using the Netcode for GameObjects (NGO) package. This high-level solution simplifies developing multiplayer games by abstracting networking logic, making it easier to manage the game state for all players. If you’re just getting started with multiplayer development, NGO serves as an excellent starting point. Netcode for GameObjects includes a few key features: —NetworkObject: This represents any object in the game that should be synchronized over the network. It handles object spawning, despawning, and ownership. © 2024 Unity Technologies23 of 91 | unity.com | Basic concepts | Unity networking solutions | Setting up your first Netcode project | —NetworkBehaviour: This is a specialized MonoBehaviour that provides networking capabilities. It offers built-in callbacks for handling network events and allows you to write server-side and client-side code. —Remote procedure calls (RPCs): These send messages and invoke methods on remote instances of your GameObjects using Server and Client RPCs. —NetworkVariable: This is a class that allows you to sync states across the network. —NetworkManager: This is a central component that manages the network state of your game, handling tasks such as connection, disconnection, and scene management. These components work at the application layer to help you implement multiplayer functionality. Netcode for GameObjects is designed to be simple yet powerful, providing the tools needed to create robust and scalable multiplayer games. Netcode for Entities Built on top of Unity’s Data-Oriented Technology Stack (DOTS) and the Entity Component System (ECS), Netcode for Entities is designed for server-authoritative gameplay. It includes advanced features like client-side prediction, interpolation, and lag compensation. In this setup, a centralized server handles all game simulations, reducing cheating by controlling game outcomes. Clients send inputs to the server, which processes these inputs and sends back the updated game state, minimizing potential manipulation. Netcode for Entities includes client-side prediction to mitigate latency, creating a smoother, near zero-lag experience. Compared to Netcode for GameObjects, it offers better scalability and bandwidth optimization. If you’re an experienced multiplayer developer with a project that requires a high degree of performance and determinism, DOTS and ECS might be the right base for your game. To learn more about data-oriented design in Unity read our DOTS e-book and reference this DOTS resources list . The Unity sample ECS Network Racing is built with Netcode for Entities. © 2024 Unity Technologies24 of 91 | unity.com | Basic concepts | Unity networking solutions | Setting up your first Netcode project | Choosing the right Netcode solution depends on your project’s requirements and your team’s expertise. You can start by using the table below to help inform your decision. FeatureNetcode for GameObjectsNetcode for Entities Target audienceBeginners and intermediate developers Advanced developers ArchitectureObject-oriented (MonoBehaviour-based) Data-oriented (Entity Component System - ECS and DOTS) PerformanceSuitable for smaller scale games Optimized for high performance and scalability ScalabilityLimited, ideal for a small number of players High, designed for large-scale games Networking features NetworkVariables, RPCs, NetworkTransform, limited client-side prediction (anticipation), interpolation, supports UnityTransport Full featured client- side prediction, interpolation, lag compensation, supports optimized UnityTransport Unity Services Integration Full support for Lobby, Relay, etc. Full support for Lobby, Relay, etc. Sample projectsBoss Room, Bite Size Samples Megacity Metro, ECS Racing, Netcode Samples Another great resource is Unity Multiplayer Center. The Multiplayer Center provides a starting point to create a multiplayer game. It recommends Unity multiplayer packages based on the needs of your game, and gives you access to samples and tutorials to help you use them. See the Multiplayer Center documentation for instructions on how to get and set up the package in your project. Unity Transport The Unity Transport Package is a netcode-agnostic library that provides a low-level network layer focused on performance and reliability – a modern, secure, and portable transport library that extends the conventional UDP with advanced features: —Reliability: Adds reliable communication over UDP, ensuring critical messages are delivered without the overhead of TCP —Security: Incorporates encryption and authentication to protect data from unauthorized access © 2024 Unity Technologies25 of 91 | unity.com | Basic concepts | Unity networking solutions | Setting up your first Netcode project | —Performance: Optimized for low latency and high throughput —Cross-platform compatibility: Designed to work seamlessly across different platforms and devices Both Netcode for GameObjects and Netcode for Entities rely by default on Unity Transport. Developers looking to keep fine-grain control over the network can also use Unity Transport as a standalone library and build their own customized netcode on top for specific game needs. Unity Transport now adds WebGL support that can enhance the cross-platform and web multiplayer experience. Third-party networking Though we recommend starting with Netcode for GameObjects, it’s important to understand it’s not your only option. The Unity community features many different solutions to fit your specific needs. Here are some third-party networking options available from the Unity Asset Store: —Photon Unity Networking (PUN): Photon offers a comprehensive and scalable solution suitable for games demanding high concurrent user numbers. —Mirror: Known for its simplicity and ease of use, Mirror is a free open-source networking library originally based on Unity’s UNet. —DarkRift Networking 2: This solution provides both high performance and flexibility and is tailored for developers looking for detailed control over their networking. —Forge Networking Remastered: This is an open-source option that allows for advanced customization and control. © 2024 Unity Technologies26 of 91 | unity.com Setting up your first Netcode project If you haven’t already tried Unity’s networking solutions, setting up a basic Netcode project involves importing the necessary networking packages and then configuring the necessary multiplayer components. This chapter will walk through your first steps to add networking to a sample project using Netcode for GameObjects. Remember that in Unity 6 you can use Multiplayer Center to set up a new multiplayer project, and Multiplayer Widgets for integrating additional Unity services into the project. Before you begin Make sure you have the following: —An active Unity account with a valid license —The Unity Hub —A supported version of the Unity Editor; some features demonstrated here require Unity 6 or higher, refer to the Netcode for GameObjects requirements —A connection to the Unity Cloud dashboard to connect to the Unity services your project will need; you can do this via the Unity Hub © 2024 Unity Technologies27 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Sample project setup It’s helpful to demo these netcode tools on an existing project with single-player locomotion. In this guide, we’ll use the Starter Assets – ThirdPerson package from the Unity Asset Store. This simulates simple 3D gameplay with a humanoid character using the Universal Render Pipeline (URP). Get this free asset from the Unity Asset Store and then import it using the Package Manager. The Starter Assets package from the Asset Store This demo project includes a small testing playground scene and a configurable third-person controller. The goal is to run multiple copies of this application and then have different clients interact in the same environment. © 2024 Unity Technologies28 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Installing Netcode for GameObjects In the Package Manager (Window > Package Manager), filter for the Unity Registry. Then install the following packages: —Netcode for GameObjects: This is a foundational networking library that adds multiplayer capabilities to the existing GameObject/MonoBehaviour workflow. It streamlines multiplayer game development and is a great starting point for working with networked multiplayer. —Multiplayer Tools Window: This is an extra suite of five new tools introduced in Unity 6 that improve workflows for multiplayer development: —The Multiplayer Tools Window provides convenient access to all of the multiplayer tools and their documentation in one place. —The Network Simulator replicates real-world network conditions, such as packet delay, loss, and disconnections to identify potential issues before going live. —The Runtime Network Stats Monitor (RNSM) displays real-time network statistics, providing configurable onscreen monitoring of network performance. —Network Scene Visualization enhances debugging by visually displaying network activity and object ownership in the scene view. —The Hierarchy Network Debug view provides an overlay on the right-hand side of your Hierarchy window that identifies which objects are networked (with a small network cube logo). —Multiplayer Play Mode: This Unity 6 package enables you to test multiplayer functionality without leaving the Unity Editor. You can simulate up to four players (the Main Editor Player plus three Virtual Players) for faster playtesting. Install Netcode for GameObjects and its supporting packages. © 2024 Unity Technologies29 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Adding the NetworkManager Every project will need a NetworkManager component to support networked multiplayer. This essential component manages the network state of your project, handling connections and network configurations. To add a NetworkManager to your scene, create a new GameObject in the Hierarchy and add the NetworkManager component (Netcode > NetworkManager). In the NetworkManager component, configure the Network Transport layer. Choose Unity Transport. Select a transport layer in the NetworkManager. This attaches a UnityTransport component to the GameObject. The transport layer is responsible for low-level networking tasks, such as connection management, data transmission, and packet encryption. The UnityTransport component © 2024 Unity Technologies30 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Though you don’t need to modify these settings yet, this component can help simulate network conditions (e.g., latency, packet loss, and jitter) for testing and debugging in the Editor. Save the scene and go to File > Build Settings and make sure your current scene is added to the Scenes in Build list. This ensures the new NetworkManager is included in the game build. NetworkObjects NetworkObject is a required component for any GameObject that needs to be networked or synchronized across different clients in a multiplayer game. When you add a NetworkObject component to a GameObject, it becomes “networkable,” meaning that its state and behavior can be shared and updated across the network. The NetworkObject component and its unique ID Each NetworkObject has a few identifiers: —The GlobalObjectIdHash identifies the prefab asset in the project. —The NetworkObjectId is the unique identifier that differentiates instances of the same prefab asset. —The OwnerClientId represents the client that “owns” the object (see Authority below). These identifiers help the NetworkManager keep track of it and ensure that its state is consistent across all connected clients. NetworkObjects can be dynamically created (spawned) or destroyed during gameplay. Spawning a NetworkObject makes it appear on all connected clients. Each NetworkObject has an owner, typically the client that controls its behavior and state. © 2024 Unity Technologies31 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Player NetworkObjects Each player can optionally have their own prefab called a Player NetworkObject. This is a special type of NetworkObject that often contains the character controller and visual representation of the player in the game. The Player NetworkObject in the sample project Player NetworkObjects often store and sync player-specific data, such as the player’s name, score, inventory, or other relevant information. This data is synchronized across the network to ensure that all connected players have a consistent view of the game state. When a client connects, the NetworkManager creates a Player NetworkObject that is “owned” by the corresponding player. This means that the player has authority over their PlayerObject and can control its behavior and state. To set up a Player NetworkObject, start by creating a standard prefab GameObject in your project. This prefab acts as a template for the PlayerObject, containing the necessary components and scripts that define the player’s behavior and appearance. © 2024 Unity Technologies32 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Then, add the appropriate netcode components. These might include: —NetworkObject: Every object that will be networkable needs a NetworkObject component. This contains properties and events related to spawning, despawning, and ownership. —NetworkBehaviours: These scripts add networking behavior to their MonoBehaviour base class. NetworkBehaviours contain network variables, remote procedure calls (RPCs), and network callbacks. —NetworkAnimators: This component syncs animation states and parameters between clients . —NetworkTransform: This component ensures that the player’s position, rotation, and scale are replicated in real-time from the server to all connected clients. Player NetworkObjects are often responsible for handling player input. When a player performs an action, such as moving or interacting with the game world, the input is processed and then propagated to other connected players as needed. Player logic involves a combination of MonoBehaviours for direct game mechanics and NetworkBehaviours for managing network states. Non-networked components, such as character controllers and animators, function normally on each player’s local instance. Using these components locally not only optimizes performance but also reduces network traffic, which can be important when working with limited bandwidth between your clients. Creating a Player NetworkObject Load up the Playground scene from the sample project. The Starter Assets bundle includes a Playground scene. © 2024 Unity Technologies33 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | The Hierarchy includes a PlayerArmature that drives the game character. To convert this into a Player NetworkObject, drag it from the Hierarchy to create a new Original Prefab or modify a copy of the existing prefab in the project. In the Hierarchy window, locate the PlayerArmature GameObject. Delete it to remove the PlayerArmature and its child objects from the scene, leaving only the game environment in the scene . Then, edit the prefab in the Inspector. Add the NetworkObject component. This component is required for the object to be recognized and managed across the network. Add the NetworkObject to the prefab. Register the Player NetworkObject in the Player Prefab field of the NetworkManager. Register the Player NetworkObject in the NetworkManager. © 2024 Unity Technologies34 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Play mode only shows the game environment. The Player NetworkObject will only appear when a client connects. Select the NetworkManager, which now appears under DontDestroyOnLoad in the Hierarchy. Start the host on the NetworkManager. Select Start Host. This spawns the Player NetworkedObject. The PlayerArmature\_Network object appears in the Hierarchy. The game is playable once again (though the camera target is disabled). Use the WASD controls to test the player movement. Exit Play mode and the player character disappears. The NetworkManager now spawns and manages this specific player character at runtime. Keep in mind that the networked aspect of the game won’t be apparent until you have multiple clients connected. We’ll need to test with several clients to understand how this works in a multiplayer scene. © 2024 Unity Technologies35 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Multiplayer Play Mode Testing multiplayer requires running the application across separate runtime processes. Previously, this involved making a separate game build and running it alongside the Unity Editor. While you still have that option, Unity 6 includes Multiplayer Play Mode (MPPM). MPPM enables developers to open multiple instances of the Unity Editor simultaneously, replicating a multiplayer environment. This streamlines the multiplayer testing process. Install Multiplayer Play Mode via the Package Manager. Then, you won’t need to build the application every time you need to test a new feature. Open Multiplayer Play Mode (Window > Multiplayer Play Mode). The Multiplayer Play Mode window Then, check at least one additional Virtual Player from the list in the above screenshot, so you can test a minimum of one host and client. Remember that the host is a client that is also running on the server. When entering Play mode, a second session of the application starts running in a cloned window. © 2024 Unity Technologies36 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Multiplayer Player Mode clones a Virtual Player. Select the NetworkManager in the Hierarchy. Under Start Connection in the Inspector, select Start Host. The PlayerArmature\_Networked object appears in the Game view. Use the Layout button in the second window to enable the Inspector and Hierarchy – much like a second session of the Editor. Select the user interface components to enable and press Apply . © 2024 Unity Technologies37 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Enable the Layouts in the cloned window. In the cloned Editor window, locate the NetworkManager under DontDestroyOnLoad in the Hierarchy. In the Inspector pane, under Start Connection, select Start Client . The NetworkManager contains buttons to connect the client. © 2024 Unity Technologies38 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Two instances of PlayerArmature\_Networked now appear in the Hierarchy. In the Scene view, they appear on top of one another. Using the keyboard or gamepad, move one player instance away from the other to separate them. Select a PlayerArmature\_Networked instance in the Hierarchy to inspect its NetworkObject component. At runtime, note how each instance is identified by its GlobalObjectIdHash (project asset ID) together with its NetworkObjectId (unique instance index). Below that, the OwnerClientId indicates whether the host or the client controls the instance. Switch between the two instances to compare the flags: IsSpawned, IsLocalPlayer, IsOwner, IsOwnerByServer, etc. Compare the NetworkObject settings between the two instances. Use the Network Visualization panel to distinguish between the two instances more clearly. This handy diagnostic tool appears in the Scene view once you’ve installed the Multiplayer Tools package. The two instances are color coded by Bandwidth (how much data is being transmitted) or Ownership (which client has authority over the Player NetworkObject). © 2024 Unity Technologies39 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Network Visualization helps to debug the network objects. Though the NetworkManager creates separate instances for each client, each independently controls the same character. In the Scene view, the character movements driven by WASD controls are not synchronized between the client and host. Although the NetworkManager initially synchronizes their positions at coordinates (0, 0, 0) when players first connect, their subsequent movements are not. Currently several local components drive the character’s behavior: —A CharacterController allows for the player to move while interacting with the game environment, without requiring complex physics calculations. —An Animator enables animation based on a state machine. The Animator controls the transitions and blending between running, jumping, or idle states. —PlayerInput handles per-player input management, device pairing, and event notifications, providing a high-level wrapper around the Unity Input System. —StarterAssetsInputs translates that input into values for the character’s movement, look, jump, and sprint inputs. These are single-player components. To make these work in a multiplayer application, we need to add some networked scripting. © 2024 Unity Technologies40 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Creating your own UI start buttons To create a more user-friendly way to start network sessions at runtime, you can add onscreen buttons that replicate the functionality of the NetworkManager’s Inspector buttons. This can be achieved using either Unity UI (UGUI) or UI Toolkit. In your UI of choice, create three buttons labeled Client, Host, and Server. Then, have them invoke these respective callbacks from the NetworkManager singleton: —NetworkManager.Singleton.StartClient —NetworkManager.Singleton.StartHost —NetworkManager.Singleton.StartServer These callbacks allow you to start the network session without using the buttons from the Inspector window. Adding NetworkBehaviour To manage the MonoBehaviours on the PlayerArmature\_Networked, we can use a NetworkBehaviour. A NetworkBehaviour is a specialized type of MonoBehaviour, designed for networked logic. It provides the framework necessary for synchronizing actions and states across different game clients . NetworkBehaviour shares the same lifecycle events as MonoBehaviours but also incorporates several network-specific features: RPC Methods: NetworkBehaviours can utilize remote procedure calls (RPCs) to handle communications across the network. These methods are annotated with the \[Rpc\] attribute . To send an Rpc to a server or client, call \[Rpc(SendTo.Server)\] and \[Rpc(SendTo. Client)\], respectively. —NetworkVariable: This is a specialized variable designed for synchronized state management across the network. Changes to a NetworkVariable on the server are automatically propagated to all clients. —OnNetworkSpawn and OnNetworkDespawn: These lifecycle methods are triggered when a NetworkBehaviour is instantiated or destroyed. OnNetworkSpawn is used for initialization (think of OnEnable or Start except for networked behavior). OnNetworkDespawn handles cleanup before an object is removed from the network (e.g., analogous to OnDestroy or OnDisable). —Ownership: NetworkBehaviour allows specific clients (or the server) to have ownership over certain objects. This concept of authority, where either a client or the server can “own” a NetworkObject, ensures that only designated players should be able to control or interact with specific objects. © 2024 Unity Technologies41 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | We can implement a NetworkBehaviour called ClientPlayerMove to manage the player movement. This can make sure that input from the host and the client only works on their respective player objects. Here’s the example setup: using Unity.Netcode; using StarterAssets; using UnityEngine; using UnityEngine.InputSystem; namespace NetcodeDemo { public class ClientPlayerMove: NetworkBehaviour { \[SerializeField\] CharacterController m\_CharacterController; \[SerializeField\] ThirdPersonController m\_ThirdPersonController; \[SerializeField\] PlayerInput m\_PlayerInput; \[SerializeField\] Transform m\_CameraFollow; private void Awake() { m\_PlayerInput.enabled = false; m\_ThirdPersonController.enabled = false; m\_CharacterController.enabled = false; } public override void OnNetworkSpawn() { base.OnNetworkSpawn(); enabled = IsClient; // Enable if this is a client. if (!IsOwner) { // Disable if this is not the owner enabled = false; m\_PlayerInput.enabled = false; m\_CharacterController.enabled = false; m\_ThirdPersonController.enabled = false; return; } // Enable if this is an owner m\_PlayerInput.enabled = true; m\_CharacterController.enabled = true; m\_ThirdPersonController.enabled = true; } } } © 2024 Unity Technologies42 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Add this to the PlayerArmature\_Networked prefab. Then fill out the appropriate fields in the Inspector. Fill out the ClientPlayerMove fields in the Inspector. Once this script is applied to the prefab, connect the host and client sessions. When clients connect to the NetworkManager, certain components of the player object are disabled by default due to the IsOwner property, which checks if the local player is the owner of the instance. In the Hierarchy, toggle the selection between the two instances of PlayerArmature\_ Networked. Several components disable themselves if not the owner. © 2024 Unity Technologies43 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Note how several components (like the PlayerInput) now appear deactivated on player instances not owned by the respective client. For the host, this setup allows control over one of the player instances, and for the client, control over the other. However, though we can control different player instances, their movements are not synchronized across the network. To make the movement match from host to client, we’ll need to add additional network components like NetworkTransform . Authority and ownership properties By default, the server owns NetworkObjects, although connected and approved clients can also own NetworkObjects using the SpawnWithOwnership method. Netcode for GameObjects is server-authoritative, which means that only the server is authorized to spawn and despawn NetworkObjects. NetworkBehaviour includes some quick ways to determine the authority and ownership of an instance: —IsClient indicates if the instance is running on a client. —IsServer indicates if the instance is running on a server. —IsHost indicates if the instance is running on a host, which is both a server and a client . —IsLocalPlayer indicates if the associated NetworkObject is the local player object. —IsOwner indicates if the local player owns the object or if the object is the local player object. —IsPlayerObject indicates if the GameObject represents a network player, typically controlled by a specific client. —IsSceneObject indicates if the GameObject is part of the scene by default and not spawned dynamically during gameplay. A scene object is usually managed by the server for consistent state across the network. Inspecting the NetworkObject at runtime shows some of these properties. The NetworkObject settings © 2024 Unity Technologies44 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Sync using a NetworkTransform and NetworkAnimator Though the NetworkBehaviour lets us spawn the same player instance on multiple clients, synchronizing its movements across the network requires additional components. Add a NetworkTransform component to the PlayerArmature\_Networked prefab. Uncheck any axes which won’t affect gameplay; in this case, uncheck all scales, as well as x rotation and z rotation axes. Because synchronization uses bandwidth, it’s essential to minimize syncing any superfluous data. In Multiplayer Play Mode, focusing on the host window allows you to move the player using the controls and watch it sync to the client. This demonstrates the beginning of networked play. Next add the NetworkAnimator component to the PlayerAramature\_Networked. Drag the existing Animator component into the empty field. Add a NetworkTransform and NetworkAnimator component. © 2024 Unity Technologies45 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | The client window represents a second machine that is connected to the host. Ideally, any actions performed on the host are reflected on the client and vice versa. The NetworkTransform allows you to sync the position, rotation, and scale of a Transform, while the NetworkAnimator syncs the animation states. Now when your host player runs around the playground environment, its movements transfer to the client in Multiplayer Play Mode. However, not everything works as expected. Switch focus to the client window and try using the controls. While the host syncs correctly to the client, the client’s movements may not reflect on the host. The player appears to run in place. The client receives input, as indicated by the character animating in place, but the player instance doesn’t move. This happens because the NetworkTransform operates under server authority, syncing only the server’s position to the client. When you try to move the player on the client, the server overrides the client’s desired position, resetting it to (0, 0, 0). © 2024 Unity Technologies46 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Applying client authority By default, NetworkTransform operates in server authoritative mode. Changes to the transform axis are detected on the server-side and pushed to connected clients. In our example, trying to transform the player on the client fails because the server – maintaining an authoritative state with the transform set to (0,0,0) – overrides these client-side changes. Server authority overrides the client. To resolve this, one approach is to transfer authority from the server to the client. This allows the client to control its own transform without being overridden by the server. To implement this behavior, we can create a ClientNetworkTransform component, as seen in the following code example, that switches the server authority for owner authority: using Unity.Netcode.Components; using UnityEngine; namespace NetcodeDemo { \[DisallowMultipleComponent\] public class ClientNetworkTransform : NetworkTransform { protected override bool OnIsServerAuthoritative() { return false; } } } © 2024 Unity Technologies47 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Replace the NetworkAnimator with the ClientNetworkAnimator. Remember to set the Animator field in the Inspector. The ClientNetworkTransform and ClientNetworkAnimator. This overrides the OnIsServerAuthoritative method and returns false. On the Player NetworkObject prefab, replace the NetworkTransform with the custom ClientNetworkTransform. Similarly, we can also create a client-driven NetworkAnimator: using Unity.Netcode.Components; using UnityEngine; namespace NetcodeDemo { \[DisallowMultipleComponent\] public class ClientNetworkAnimator: NetworkAnimator { protected override bool OnIsServerAuthoritative() { return false; } } } © 2024 Unity Technologies48 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | In Multiplayer Play Mode, you can now move the player from the client and its position and animation states should sync properly to the host. Client-driven behaviors are also a way to reduce latency in networked applications. In “owner authoritative mode,” networked behaviors can act immediately and responsively. The client doesn’t need to wait for a packet to make a round trip to the server and back. However, exercise care when creating such client-driven behaviors: they can improve the user experience for each player, but also introduce security risks. Owner authoritative mode opens your application to mods or hacks; in any online competitive game, players will cheat if given the chance. To prevent this and make your application more secure, opt for server authority. Owner authoritative mode components Though you can create the scripts in the above examples yourself, you can also get prebuilt ClientNetworkTransform and ClientNetworkAnimator components from the Multiplayer Samples Utilities package in the Unity project, Boss Room. (com.unity. multiplayer.samples.coop) . Note that this implementation of the ClientNetworkTransform comes with potential issues: —Ownership transfer: Ownership doesn’t always switch smoothly, sometimes causing objects to jump or even get out of sync. —Hierarchical ownership: There’s no support for a ClientNetworkTransform as a child under a server-managed NetworkTransform. —Update rejection: Servers can’t reject updates from clients since the system only recognizes client ownership, not joint client-server ownership. —Object movement at instantiation: The server can’t move an object when it’s first created under client ownership. In many cases, the ClientNetworkTransform can be a viable way to handle client ownership transforms. However, consider these limitations before implementing them as part of your project. Syncing with server authority Though you can allow some client authority for responsive gameplay, some movements can only be done on the server side. Generally, you should use server authority to prevent any potential imbalances or unfair advantages that could arise from client-controlled actions. For instance, allowing clients to choose their spawn locations on the game map could give them an undue advantage, depending on the layout of the map. Instead, it’s more equitable to have the server randomly assign them to one of a set of predetermined spawn points. © 2024 Unity Technologies49 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | To manage this, define some objects with some simple visuals and then scatter them where you want players potentially to spawn. Spawn points are strategically placed throughout the level. A non-networked MonoBehaviour can manage them. Here, the ServerPlayerSpawnPoints class contains a list called m\_SpawnPoints that references each spawn point GameObject. This sample implementation also uses a generic singleton pattern, borrowed from the Unity- made Asset Store project Level up your code with design patterns and SOLID: public class ServerPlayerSpawnPoints : Singleton { \[SerializeField\] private List m\_SpawnPoints; public GameObject GetRandomSpawnPoint() { if (m\_SpawnPoints.Count == 0) return null; return m\_SpawnPoints\[Random.Range(0, m\_SpawnPoints.Count)\]; } } A NetworkBehaviour called ServerPlayerMove can then use the instance of ServerPlayerSpawnPoints to pick a spawn point at random. © 2024 Unity Technologies50 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | using Unity.Netcode; using UnityEngine; \[DefaultExecutionOrder(0)\] // Execute before ClientNetworkTransform public class ServerPlayerMove : NetworkBehaviour { public override void OnNetworkSpawn() { // Only execute on the Server if (!IsServer) { enabled = false; return; } SpawnPlayer(); base.OnNetworkSpawn(); } // Move to the next available position when spawning void SpawnPlayer() { var spawnPoint = ServerPlayerSpawnPoints.Instance.GetRandomSpawnPoint(); var spawnPosition = spawnPoint ? spawnPoint.transform.position : Vector3.zero; transform.position = spawnPosition; } } All of the logic happens in OnNetworkSpawn. Every time a client connects, a call to SpawnPlayer starts the player at a randomly selected spawn. The IsServer check makes sure that this only happens on the server, which maintains the authoritative game state. Add the ServerPlayerMove script to the PlayerArmature\_Networked prefab. When you enter Multiplayer Play Mode, each client will connect and spawn at a random point within the playground environment. This implementation shows how NetworkBehaviours can interact with elements in the scene that aren’t network-controlled. Here, it leverages static data and scene objects already set up in the Hierarchy. When a client connects, the ServerPlayerMove only needs to retrieve one random spawn point from the existing gameplay scene. This limits the amount of data transmitted over the network. © 2024 Unity Technologies51 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | The player appears at a random spawn point. Some important points: —Because the ClientNetworkTransform is owner authoritative, it’s important to disable the CharacterController component during Awake. Re-enable the CharacterController after ServerPlayerMove positions the player to prevent it from overriding the calculated values and resetting to world center. —Likewise, fill out the m\_SpawnPoints in the Inspector to prevent the players from spawning at (0,0,0). —Set the DefaultExecutionOrder attribute with a lower value to ensure that ServerPlayerMove executes before ClientPlayerMove. For example, using \[DefaultExecutionOrder(0)\] prioritizes ServerPlayerMove, allowing it to run first. Our multiplayer project now has the capability of connecting multiple clients to a host. In the game, third-person player characters are able to spawn at designated positions within the level and synchronize their movements and animations in real-time. This synchronization is essential for the multiplayer experience. Components such as NetworkTransform and NetworkAnimator facilitate this process right out of the box, but for gameplay, you’ll need to customize your own NetworkBehaviours as well. © 2024 Unity Technologies52 of 91 | unity.com | Unity networking solutions | Setting up your first Netcode project | Network synchronization | Next, let’s explore additional methods for synchronizing data and game states across the network. Singleton design pattern A singleton provides a convenient means of accessing a unique instance of a particular type at runtime. However, singletons can introduce extra dependencies, so be aware of their drawbacks. In Netcode for GameObjects, you’ll use singletons every time you refer to the NetworkManager.Singleton. The sample project also includes an example of a generic singleton for use with any MonoBehaviour type. For a deeper understanding of singletons, refer to the e-book Level up your code with design patterns and SOLID. This guidebook also demonstrates alternative patterns like events or event channels for object communication in your scene. Get the free Unity e-book on design patterns. See the Unity best practices hub for all advanced guides for programmers, technical artists, artists, and designers. © 2024 Unity Technologies53 of 91 | unity.com Network synchronization Network synchronization is essential for maintaining a consistent – and fair – gaming experience for all players. You’ve already seen how to synchronize player movements and animations with the Player NetworkObject using a client-driven model. However, gameplay often involves more than just the player character. Depending on your game design, your player may need to shoot projectiles, open doors, or interact with other scene objects. These interactions will need to be networkable, with their own game states that need to be synced between the clients and the server . In this section, we will set up client-server communication for gameplay actions, where the player may interact with part of the game environment. This involves implementing networked game states and sending remote procedure calls (RPCs) to and from the server. Gameplay mechanic To illustrate server-client communication, let’s recreate a simple game mechanic. Let’s start by adding Trigger Colliders to the game level that change color when making contact with a player. They can change one color when one player touches it and another color when a different player touches it. In the scene, create a new GameObject (e.g., a cube). Add a BoxCollider component and enable the IsTrigger option. Create and assign a transparent material to the MeshRenderer (this example uses the URP/Lit shader). Set its initial color to something neutral like white. © 2024 Unity Technologies54 of 91 | unity.com | Setting up your first Netcode project | Network synchronization | Network latency and performance | The trigger will receive a networked color value. Next, we need to add network synchronization. Let’s use NetworkVariables and RPCs to synchronize the color change across the network. Define a NetworkVariable A NetworkVariable is a specialized variable designed for synchronized state management across the network. Changes to a NetworkVariable on the server propagate to all clients. This is ideal for continuously synchronized data, such as positions, health points, or in this case, the color state of the trigger. We’ll create a NetworkBehaviour called ColorTrigger and attach it to the trigger object. This script will contain a NetworkVariable called m\_NetworkColor that contains a Color value . using UnityEngine; using Unity.Netcode; public class ColorTrigger : NetworkBehaviour { public NetworkVariable m\_NetworkColor = new NetworkVariable(Color. white); private Material m\_InstanceMaterial; public override void OnNetworkSpawn() { m\_NetworkColor.OnValueChanged += OnColorChanged; MeshRenderer meshRenderer = GetComponent(); if (meshRenderer != null) { m\_InstanceMaterial = new Material(meshRenderer.material); meshRenderer.material = m\_InstanceMaterial; UpdateMaterialColor(m\_NetworkColor.Value); } } © 2024 Unity Technologies55 of 91 | unity.com | Setting up your first Netcode project | Network synchronization | Network latency and performance | public override void OnNetworkDespawn() { m\_NetworkColor.OnValueChanged -= OnColorChanged; } private void OnColorChanged(Color oldColor, Color newColor) { UpdateMaterialColor(newColor); } private void UpdateMaterialColor(Color newColor) { if (m\_InstanceMaterial != null) { m\_InstanceMaterial.SetColor(“\_BaseColor”, newColor); } } } When a player enters the trigger, this script will toggle the base color property of its material instance. The script uses a NetworkVariable called m\_NetworkColor . Here’s a breakdown of how this works: —This NetworkVariable keeps track of the actual color value and then syncs across all clients. Though the script runs on both the server and the clients, by default, only the server has write permissions to the NetworkVariable. Clients can only read its Color value . —The OnValueChanged event updates the trigger’s material base color whenever the NetworkVariable changes. The script subscribes to the event in OnNetworkSpawn and unsubscribes in OnNetworkDespawn . While a NetworkTransform is specific to syncing transform data (position, rotation, scale), a NetworkVariable can sync more general data types, including primitive types, custom structs, and other data necessary for game state management. When working on a client, you can’t change the NetworkVariable directly because it is server- authoritative. Instead, the client must notify the server to make any changes. The server updates the state and propagates it back, and only then does the client see the change take effect. To handle communication for changes like this, we use an RPC. RPCs can allow one device to require another device to perform specific actions or updates. RPCs can be called from the client to the server, or vice versa. © 2024 Unity Technologies56 of 91 | unity.com | Setting up your first Netcode project | Network synchronization | Network latency and performance | Let’s look at how to implement an RPC for this purpose. A server RPC runs remotely from the client to the server. Adding an RPC RPCs allow you to invoke functions on the server or other clients remotely. Methods marked with \[Rpc(SendTo.Server)\] are called on the server from a client, and those marked with \[Rpc(SendTo.Client)\] are called on clients from the server. You can also use the legacy syntax \[ServerRpc\] or \[ClientRpc\] to indicate a server RPC or client RPC here. RPCs are much like other methods, except they must follow a few conventions: —Rpc attribute: Annotate your method with the \[Rpc\] attribute and specify a possible target, e.g., \[Rpc(SendTo.Server)\] will call the method only on the server. —Naming convention: End the method name with the suffix “Rpc” e.g., DoSomethingRpc . RPCs are better suited for discrete events, such as player actions or specific game state changes that do not need continuous synchronization. Append these methods to the TriggerColor script: private void OnTriggerEnter(Collider other) { NetworkObject networkObject = other.GetComponent(); if (IsClient && networkObject != null && networkObject.IsOwner) { ChangeColorServerRpc(networkObject.OwnerClientId); } } © 2024 Unity Technologies57 of 91 | unity.com | Setting up your first Netcode project | Network synchronization | Network latency and performance | \[Rpc(SendTo.Server)\] private void ChangeColorServerRpc(ulong playerId) { // Simple team system: blue for even, red for odd Color newColor = (playerId % 2 == 0) ? new Color(0, 0, 1, 0.5f) : new Color(1, 0, 0, 0.5f); m\_NetworkColor.Value = newColor; } In a single-player game, you could add the appropriate logic to OnTriggerEnter. However, in a multiplayer game, you typically handle interactions using client-server communication to ensure that all clients remain in sync. Instead of setting the m\_NetworkColor value directly, OnTriggerEnter checks if the current game instance is a client. If it is, it calls ChangeColorServerRpc and passes in the OwnerClientId . This method determines the new color based on the player’s ID (in this example, even ID numbers become blue, while odd IDs become red) and updates the m\_NetworkColor value. This change is propagated to all connected clients, ensuring every game instance has a consistent view of the game state. When the m\_NetworkColor changes, the OnColorChanged method is triggered on all clients, updating the trigger’s material color. This simple game mechanic shows client-server interactions. © 2024 Unity Technologies58 of 91 | unity.com | Setting up your first Netcode project | Network synchronization | Network latency and performance | Trigger mechanic Even though this is a simple example, similar game mechanics can be found in many multiplayer games where the player’s actions can trigger visual changes to the environment. For example: —In a cooperative puzzle game, players may need to use buttons or triggers to interact with the environment. The visual cues that happen in the game environment serves as a signal for everyone to coordinate their actions. —In a competitive shooter, players can take control points on the level. These often change color to the team that controls them. Again, this doubles as a visual cue to players to adjust their strategies accordingly. —In online RPGs, specific areas of the level can trigger buffs, debuffs, or other effects . RPCs versus NetworkVariables When synchronizing data, choosing between NetworkVariables and RPCs depends on the use case: —NetworkVariables and NetworkTransforms are ideal for continuously synchronized data, such as positions, health points, or in this case, the color state of the trigger. Here, the color trigger uses a NetworkVariable to store its active color. —Use cases: Health points, positional data, game scores —Remote procedure calls (RPCs) are better suited for discrete events, such as player actions or specific game state changes that do not need continuous synchronization. In this example, the RPC notifies all clients when a player enters the trigger zone, prompting the server to change the color based on the player’s ID. —Use cases: Player actions (e.g., shooting, using an ability), game events (e.g., spawning, game start, game won) Both mechanisms are essential for data synchronization in networked games, where NetworkVariables manage ongoing states and RPCs handle specific events and actions. © 2024 Unity Technologies59 of 91 | unity.com | Setting up your first Netcode project | Network synchronization | Network latency and performance | These gameplay examples can help you determine when to use NetworkVariables or RPCs. Task/systemRPCsNetworkVariables Inventory management Notify clients when an item is picked up or used, to be added or removed from the inventory. Maintain the current inventory for each player. The inventory can be a NetworkList that syncs the list of items. Combat systems Execute combat actions like attacks or special moves. An RPC can apply damage and effects. Track the health and status of each player. Health points and active status effects can be synced using NetworkVariables. Environmental interactions Trigger specific actions like opening a door or activating a mechanism. Maintain the state of interactive objects, such as whether a door is open or closed. ObjectivesSignal the completion of an objective. Track ongoing progress toward an objective. Store the number of items collected or completed tasks in a NetworkVariable. For a more detailed discussion, see the RPC vs NetworkVariable documentation page . Designing for multiplayer Now that you’re familiar with the basics of netcode, it’s essential to adopt a “networked multiplayer” mindset when creating your games. What might be simple in a single-player game often becomes more complex when we need to incorporate NetworkVariables or RPCs to create the same behavior over multiple devices. Plan how you’ll synchronize the states between clients and the server. Use NetworkVariables for continuously synced data and RPCs for discrete events. Then, make sure to minimize network traffic by syncing only what’s necessary. While it’s possible to convert a single-player game into a multiplayer game, it’s usually more efficient to design with multiplayer in mind from the start. Decide early which objects and actions will be owned by the server and which can be managed by the clients. While server authority offers the most security and consistency, balance that with client authority to reduce latency for certain actions. This latency can be a sore sticking point in building your networked game, so let’s next examine how it impacts the multiplayer experience. For some inspiration, see this Unite 2024 session that explores the most common and significant mistakes in making a multiplayer game, and how to avoid them to improve your chances of success. © 2024 Unity Technologies60 of 91 | unity.com Network latency and performance If you’ve ever played an online game, you likely have firsthand experience with how latency can detract from the experience. Poor bandwidth and unstable networking connections lead to jerky player movement, inconsistent frame rates, and noticeable input lag. Now that you understand how clients and servers communicate, you can appreciate why this happens. With the internet filling the gap between your devices, a lot can go wrong. Even with the extra reliability of Unity Transport, UDP packets can get lost, arrive out of order, or get damaged on the way to their destination. These are potential sources of latency, also perceived as lag. Simulating latency To understand and mitigate the effects of latency during development, you can simulate various network conditions in the Unity Editor using either the Debug Simulator in the UnityTransport or Network Simulator. Unity Transport Debug Simulator Adjust the Debug Simulator in the UnityTransport component to introduce artificial latency, jitter, and packet loss. You can find these settings in the Inspector when selecting the NetworkTransport object in your scene. Set a few values to recreate network congestion: Latency: Add a delay in milliseconds to simulate slower network connections. For example, set latency to 100ms to mimic moderate network delay. © 2024 Unity Technologies61 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | Jitter: Introduce variability in latency to simulate fluctuating network conditions. For instance, set jitter to 50ms to see how unstable connections affect gameplay. Packet Loss: Specify a percentage of packets to drop, mimicking poor connection quality. Try setting packet loss to 5% to understand its impact on gameplay. Play the game application again to observe how these simulated conditions affect gameplay. Adjust the Debug Simulator of the Unity Transport. Network Simulator The Network Simulator from the Multiplayer Tools package lets you test less-than-ideal network conditions. This can help you discover and fix issues before they surface in production. It facilitates simulating network events, such as network disconnects, lag spikes, and packet loss . Install the Network Simulator from the Multiplayer Tools package. © 2024 Unity Technologies62 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | Test latency in the Network Simulator. Other network conditioners The Debug Simulator or the Network Simulator only work in the Editor, however. For runtime builds, alternative network conditioners can be used to simulate latency. Tools such as clumsy for Windows and Network Link Conditioner for macOS/iOS can recreate various network conditions for thorough testing. For more information see the Testing and Debugging section further on in this guide. Dealing with the impact of latency on application performance is one of the biggest challenges in multiplayer development. Fortunately there are some strategies to help mitigate the effects of latency. Let’s explore a few of them here. © 2024 Unity Technologies63 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | Client-side interpolation One way to reduce the effects of latency is client-side interpolation. In this method, each client intentionally delays rendering by a short interpolation period, rather than rendering it right away. In client-server topology, clients generally render a state that is about half the round-trip time (RTT) behind the server. Client-side interpolation adds an extra intentional delay on top of that. By running slightly behind, clients can buffer incoming state updates from the server. When it’s time to render the next update, the client calculates an interpolated state from the two most recent server ticks. The buffer allows the client to render regular client updates, even if ticks from the server arrive at a jittered, irregular rate. The interpolated states conceal minor latency or jitter. The client renders interpolated states from a buffer. Client-side interpolation is available in Netcode for GameObjects as a flag on the NetworkTransform component. Enabling Interpolation interpolates position, rotation, and scale for the associated GameObject. Client-side interpolation enabled on the NetworkTransform. © 2024 Unity Technologies64 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | Just bear in mind that client-side interpolation introduces a slight delay in rendering, which is necessary for the interpolation. Client-side prediction and anticipation In our earlier example, the ClientNetworkTransform gives the client direct control over player movement, making the game feel more responsive and instant. However, it’s important to note that client authority is not possible in many games due to a number of factors, such as game design, fairness, and security. Why server authority In competitive games where fair competition is crucial, client authority can give players the ability to cheat or exploit the game by manipulating the client-side code or data. Games with complex player interaction and shared game worlds often require server authority to ensure data integrity, prevent tampering, and maintain a consistent experience for all players. Here, server authority is required to ensure a level playing field and maintain the integrity of the game. This means using the standard NetworkTransform component instead of the owner- authoritative ClientNetworkTransform. This ensures that client input does not control the player; instead, only the server will have control. Moving a NetworkTransform using server authority. Server authority, however, can exacerbate latency. Instead of manipulating an onscreen player directly, each client must send its inputs to the server. The server then processes those inputs to simulate the game and calculates the game state. Only when the client receives the results of that simulation can it display the next frame. When using an authoritative server, players perceive latency because of the time it takes for data to travel from the client to the server and back again. In this scenario, clients tend to lag behind the server, especially as your UDP packets need to traverse the internet. © 2024 Unity Technologies65 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | For many elements in a game, this lag might be acceptable, but for others, like the player’s character, such lag can ruin the feel of the game and make it difficult to play. How client-side prediction works Client-side prediction offers one solution to the lag introduced by server authority. Instead of waiting for the server’s response, the client predicts the game state a fraction of a second into the future and updates the game visually. This is called “prediction” because the client predicts the game state without knowing the true state from the server. By doing this, the client can provide instant visual feedback to the player’s actions, making the game feel responsive. Client predicts the game state. Simultaneously, the client sends the player’s actions to the server in a packet. The server receives the client’s input packet and simulates the game state using those inputs. The server processes these inputs to simulate the game state, establishing the authoritative game state as the ground truth. The server sends that authoritative state back to the client. The server sends back the authoritative state. © 2024 Unity Technologies66 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | Reconciliation and rollback The client then compares the authoritative state with the anticipated state and looks for any differences. If the two states are close enough, then nothing happens and the client continues playing. If there is a significant mismatch – also called a “desync” – then, the client must decide how to correct its state to match the server’s authoritative state. This process is called reconciliation . The client receives a mismatched state, or “desync.” To handle latency and compensate for it, the client stores a history of its inputs and predicted state for a certain number of frames. When a desync occurs, the client can roll back its state to the last known correct state from the server. Then, it re-simulates the game from that point using the correct inputs. This brings the client state back in sync with the server. The client reconciles the desync. © 2024 Unity Technologies67 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | On any given frame, the client may need to re-simulate several frames, which is why a networked application can be more computationally expensive. This reconciliation and rollback, however, is what helps maintain a smooth and consistent experience for the player even with the presence of network latency. Client-side anticipation in Netcode for GameObjects Netcode for GameObjects supports client anticipation, a simplified model for handling latency without full client-side prediction and reconciliation. It uses these components: —AnticipatedNetworkVariable is a generic component used for scalar or simple data types like integers, floats, and colors. It’s suitable for non-transform properties such as health, score, or item states. —AnticipatedNetworkTransform works similarly to AnticipatedNetworkVariable but is designed for Transform data, including position, rotation, and scale. Client anticipation allows the client to provide immediate visual feedback to the user while waiting for the server’s authoritative update. This helps make the game feel more responsive. In our simple ColorTrigger example, when a player changes the color of an object from white to blue, the client can visually update the color immediately while waiting for the server to confirm the change. Between the client and server, anticipation would look something like this: The client anticipates the game state. AnticipatedNetworkVariable and AnticipatedNetworkTransform both work by separating values into anticipated (visual) and authoritative states. Anticipation refers to the client’s predicted state, which provides immediate visual feedback to the player locally. The authoritative state is determined by the server. When the server’s update arrives, the client compares its anticipated state with the authoritative state. If they differ significantly, the client adjusts its state to match the server’s, ensuring consistency across all clients. © 2024 Unity Technologies68 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | Client anticipation can ignore stale data. Client anticipation also needs to account for “stale data” – updates from the server that reflect actions occurring before the client’s last request. Netcode for GameObjects provides two ways to handle this through the StaleDataHandling property: —StaleDataHandling.Ignore ignores stale data and keeps the anticipated value. This can be useful if the state is changing rapidly and causing visual flickering. —StaleDataHandling.Reanticipate treats stale data like any other server update, triggering rollback and re-anticipation, which replays player inputs to maintain consistency. To prevent choppy visual updates when server values differ from anticipated values, use the Smooth method available to both components. Smooth requires a starting value, a final value, and a duration for the smoothing process. This helps maintain a smooth and responsive visual experience despite network latency. While client anticipation improves gameplay responsiveness, this simplified approach may not cover all cases of latency and network issues. Note that true rollback and reconciliation require a deterministic physics system, which ensures that the same inputs will always produce the same results (below). This is essential for accurately rolling back and resimulating game states. Without determinism, discrepancies can arise between the server and client simulations. Netcode for GameObjects does not support deterministic physics, which is necessary for true client prediction and lag compensation. Instead, Netcode for GameObjects provides a simpler solution that focuses on client anticipation and smoothing. This can improve responsiveness without a full rollback system. © 2024 Unity Technologies69 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | Deterministic physics A deterministic physics system ensures that given the same initial conditions and inputs, the physics simulation will always produce the same results. Note that Netcode for GameObjects uses Unity’s built-in physics engine, which is not deterministic. When re-running the simulation with the same inputs, the physics system does not guarantee identical results. Netcode for Entities, however, supports Unity Physics and Havok Physics, both of which offer deterministic simulation capabilities. This allows Netcode for Entities to support true client-side prediction. Client-side prediction in Netcode for Entities Netcode for Entities offers advanced tools for handling client-side prediction and lag compensation. The same simulation code runs on both the client and the server for each entity. This allows the client to predict the state of the game based on player inputs, giving immediate feedback without waiting for the server’s response. When the client receives the latest snapshot from the server, it updates all the predicted entities with this data. After applying this snapshot, the client runs a simulation called the PredictedSimulationSystemGroup. This simulation processes from the oldest saved tick to the current target time, rolling back and re-simulating the game state to ensure that the client accurately simulates the game state. This rollback and re-simulation process helps the client correct any discrepancies and maintain synchronization with the server’s authoritative state. On the server side, the prediction loop runs once per frame. The server updates the authoritative game state and sends this updated state back to the client. The client stores a history of inputs and predicted states. When a desync occurs, the client rolls back to the last correct state from the server and re-simulates the game using the correct inputs. This keeps the client in sync with the server’s “ground truth.” Netcode for Entities also supports advanced physics features like: —Multiple physics worlds: This allows for local-only physics simulations that don’t need to be replicated across the network. —Custom physics proxies: These enable interactions when you would like to make the ghosts interact with physics objects that are present only on the client (ex: debris). —Deterministic physics simulation: This ensures that the client and server simulations produce the same results given the same inputs, maintaining consistency between the client and server states . The GhostPredictionSmoothingSystem helps smooth out prediction errors by transitioning between predicted and authoritative states, with options for custom smoothing. © 2024 Unity Technologies70 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | This combination of prediction, rollback, lag compensation, and smoothing techniques minimizes the impact of latency and helps maintain game integrity and responsiveness. Compare how Netcode for GameObjects and Netcode for Entities handle client prediction: FeatureNetcode for GameObjectsNetcode for Entities Prediction Method Client anticipation: The client anticipates server responses. Full client prediction: The client runs the same simulation code as the server. Latency Mitigation Anticipates server results and smooths transitions Uses rollback and re-simulation to correct desyncs SnapshotsNot explicitly used Uses snapshots to represent game state at specific moments in time Lag Compensation Simplified model with StaleDataHandling options Comprehensive lag compensation with a reference to collision worlds Physics Interaction Limited to client-side prediction with anticipated transforms Supports interaction between predicted and client-only physics worlds Smoothing Uses the Smooth method for anticipated values GhostPredictionSmoothingSystem for smoothing transitions between predicted and authoritative states Use Case Suitable for simpler games requiring immediate visual feedback Suitable for complex games requiring accurate state synchronization Both Netcode for GameObjects and Netcode for Entities provide mechanisms to handle client prediction and mitigate latency issues encountered during multiplayer networking. While Netcode for GameObjects offers a simplified model using client anticipation, Netcode for Entities provides a more advanced system with full prediction, rollback, and lag compensation. © 2024 Unity Technologies71 of 91 | unity.com | Network synchronization | Network latency and performance | Testing and debugging networked games | Netcode for Entities terms Netcode for Entities uses the Entity Component System (ECS) and Data-Oriented Technology Stack (DOTS), which differ from the MonoBehaviour workflow used in Netcode for GameObjects. Here are some terms that may be new: Entity: In ECS, an entity is a basic unit of data representing individual GameObjects or components within the game. Entities are lightweight and contain no behavior, only data. Game world: The game world refers to the entire environment in which the game takes place. It includes all the entities, their states, and the rules governing their interactions. Collision world: The collision world is the state of all physical objects in the game world, including their positions, velocities, and interactions. It is used for collision detection and physics simulations. Snapshot: A snapshot (also called “ghost snapshot”) is a set of data representing the game state at a specific moment in time. Clients and servers periodically stay in sync by updating the game state via snapshots. Ghost: A ghost is a networked entity that is replicated across clients and the server. Every frame, the server sends a snapshot of the current state of all ghosts to the client. Ghosts are used to synchronize the state of entities between the server and clients, ensuring that all players have a consistent view of the game world. Predicted ghost: A predicted ghost is a client-side entity simulated locally to provide instant visual feedback for player actions, reducing perceived latency. Use these for entities that are directly controlled by the player or other interactive entities that need immediate feedback. Interpolated ghost: An interpolated ghost is a representation of a server-side entity on a client. The client displays its state based on snapshots received from the server, blending them to minimize jitter caused by latency. Use these for entities not controlled directly by the player that don’t require immediate feedback, like other players’ characters, NPCs, or server-controlled entities. © 2024 Unity Technologies72 of 91 | unity.com Testing and debugging networked games Testing and debugging your multiplayer games works differently than their single-player counterparts. Be aware of the general workflow for your netcode projects: —Local testing runs multiple instances of the game to assess the interaction between players. Use player builds, the Multiplayer Play Mode package, and Network Scene Visualization to develop your application. —Simulate network conditions with scripts or the NetcodeTransport component. This can recreate latency, jitter, and packet loss to mimic real-world network issues. —Client-connection management handles behaviors for joining, reconnecting, and disconnecting clients. —Logging uses the debug tools to monitor troubleshoot issues. —A command line helper launches game instances with specific roles and network conditions to automate testing. Local testing Developing multiplayer games relies on local testing, where you simulate multiple instances of the game to mimic how different players interact in networked conditions. Player builds Player builds allow for hosting and joining games by running multiple instances of the game executable. You can also run these alongside the Unity Editor, enabling simultaneous hosting and joining of games on a single device to simulate multiplayer scenarios. © 2024 Unity Technologies73 of 91 | unity.com | Network latency and performance | Testing and debugging networked games | Multiplayer Services | Multiplayer Play Mode (MPPM) Included in Unity 6, the Multiplayer Play Mode (MPPM) package enables the simulation of up to four players on a single development device using the same source assets. This feature eliminates the need for separate player builds, reducing build times during testing. macOS users For macOS users, running multiple instances of an app requires command line commands. Use the open command at the terminal to launch a separate instance of your application. For example, at the Terminal, execute open -n YourAppName.app to launch a separate instance of the YourAppName application . Simulating network conditions When testing locally, all game instances run on the same network interface. There will be little to no latency between the clients, so you’ll need to introduce artificial conditions to simulate a real-world environment. Latency, jitter, and packet loss can impact gameplay. Testing your application with less than ideal network conditions can ensure that your final build performs well over the internet. Determining which conditions to test depends on factors such as target platform, region, and the design of your game. As a starting point, use latency values around 100-150 ms for desktop and 200-300 ms for mobile, along with 5-10% packet loss. Testing with jitter and packet loss is essential, as it introduces realistic instability. See this documentation page for more guidelines. For testing locally within the Editor, you can use the Network Simulator tool from the Multiplayer Tools along with Multiplayer Play Mode. For testing development builds, we suggest using the Network Simulator tools with some custom code to inject adverse network conditions into the build (the Network Simulator window only works in the Editor). For testing release builds, we suggest using clumsy if you’re on Windows and Network Link Conditioner if you’re on macOS or iOS. A scriptable alternative to Network Link Conditioner on macOS is dummynet, which offers great control and comes packaged with the operating system. See System-wide network conditioners for full details. © 2024 Unity Technologies74 of 91 | unity.com | Network latency and performance | Testing and debugging networked games | Multiplayer Services | Testing client connections Testing client connection management in a networked game is important to avoid bugs and provide a smooth gaming experience. Here are some things to test and watch out for: Clients connecting: —Test cases can include clients joining new game sessions, rejoining after leaving or hosting, late-joining ongoing games, and handling denied connections. —Consider if the client’s previous state affects connection and if the game state replicates correctly from the server. —Check if the server handles reconnections or late-joining properly. Clients disconnecting: —Test graceful client shutdowns, timeouts, and the impact of losing connection to the host/server. —Ensure objects tied to the game session reset properly if not destroyed, and that clients can reconnect to a new game. Host/Server starting the session: —Test starting new game sessions and after shutting down previous sessions, especially in client-hosted games. —Consider if the application’s state before starting a new session affects the game. Host/Server shutting down: —Test graceful shutdowns of the host/server, especially when using external services like Unity Game Services or lobby services. —Ensure clients are notified of the shutdown, and external services are properly informed. Thorough attention to these test cases can help maintain a stable and enjoyable networked gaming experience. For more specifics, see Testing Client Connection Management . © 2024 Unity Technologies75 of 91 | unity.com | Network latency and performance | Testing and debugging networked games | Multiplayer Services | Techniques for debugging multiplayer games When debugging multiplayer games, all conventional game development wisdom applies. However, certain scenarios that are typical to multiplayer game development call for special tricks and approaches. Below is a list of techniques that may help you when developing multiplayer games with Unity: —Debug drawing techniques: Use debug lines from Debug.DrawRay and Debug.DrawLine to indicate network positions, movement intentions, and objection interactions. They are useful when combined with side-by-side recordings of multiplayer gameplay. —Netcode-enabled Line Renderer: Sometimes it’s useful to have visual feedback that shows a specific direction, value, or any other useful debug metric pertinent to your project. See this example script for implementing a Netcode-enabled Line Renderer . —Text-Based logging: Text-based logging can track non-visual events (such as RPCs) and information. Include network tick and client id in log messages to make it easier to build a timeline when reading the logs. —Network conditioning: Use the Network Simulator tools for application-level network conditioning. This can simulate artificial network conditions and help test for errors specific for latency, jitter, and packet loss. Read more at System-wide network conditioners . —Screen recordings: Record both client and server instances simultaneously to compare real-time gameplay. In debug builds, be sure to stamp each frame with the client ID and the current frame number; this provides a visual reference for a side-by-side comparison. —Increasing fixed timestep: Despite using good debug rendering and logging, it can be hard sometimes to understand what’s going on – even when going through the frames one by one. Increasing the FixedTimeStep setting to a large value (for example, 0.2) can provide extra clarity into the game’s behavior during each frame. —Using Breakpoints: When using breakpoints to debug a game, your connection may time out if you stay too long in this mode. Since it pauses your game, you can temporarily increase the timeout value to avoid disconnecting. See this guide on Techniques and tricks for debugging multiplayer games for more tips and techniques. © 2024 Unity Technologies76 of 91 | unity.com | Network latency and performance | Testing and debugging networked games | Multiplayer Services | Command line helper Repeatedly launching and testing multiplayer builds from within the Unity Editor can be time- consuming. Consider using a command-line tool to automate launching and testing multiplayer game builds outside of the Editor environment. This sample NetworkCommandLine script can help you get started. Attach the NetworkCommandLine component to a GameObject to ensure that the script is included in your build and can be accessed via the command line. In the Player Settings, beneath Settings for PC, Mac, & Linux Standalone, select Resolution and Presentation. Set the Resolution to Windowed. This will make it easier to test multiple instances of your game side by side. The NetworkCommandLine script should first check if the game is running outside the Editor. If so, it should read the command-line arguments to determine the desired mode (server, host, or client) and start the corresponding services. This will allow you to launch your game build with specific network roles from the command line. Build a binary from File > Build Settings then test at the command line. On Windows: Open the Command Prompt and navigate to the directory where you saved your build. Use specific commands to start the server or client instances of your game, adjusting the paths as necessary. For example: \\HelloWorld.exe -mode server \\HelloWorld.exe -mode client On macOS: On macOS, open the Terminal and use similar commands as mentioned above, but adjust the paths to match the macOS directory structure. For example: /HelloWorld.app/Contents/MacOS/ -mode server /HelloWorld.app/Contents/MacOS/ -mode client Optionally, you can log the output of your game instances to text files for easier tracking and analysis with the -logfile flag. © 2024 Unity Technologies77 of 91 | unity.com Multiplayer Services © 2024 Unity Technologies78 of 91 | unity.com | Testing and debugging networked games | Multiplayer Services | Sample projects and resources | Unity provides a number of services that can simplify your networked multiplayer development. Start learning about each service by looking at the documentation for the Multiplayer Services package, which simplifies the work it takes to manage dependencies across multiplayer services. For example, you can: —Quickly add multiplayer elements that integrate Unity Gaming Services into your game. Set up Lobby, Relay, Distributed Authority, Matchmaker and Multiplay Hosting. —A new session system provides a simple shared cloud-side backing for a multiplayer game loop that groups players together and manages a shared session/player state. —Create and manage peer-to-peer (P2P), Dedicated Game Server, and Distributed Authority hosted online sessions. Players can join sessions through matchmaking, a Join Code, or by browsing a list of active sessions. Let’s take a brief look at each of the services: Matchmaker Matchmaking is the process of connecting players with other players or game sessions based on specified criteria, such as skill level or geographic location, to ensure a balanced and enjoyable game experience. Implementing Unity’s Matchmaker service involves several steps: —Define matchmaking criteria: Determine the parameters that will be used to match players. This can include skill level, geographic proximity, latency, and player preferences. —Player profiles and ratings: Maintain profiles for each player that include their matchmaking criteria. Use rating systems (e.g., Elo rating) to assess player skill levels and ensure balanced matches. —Matchmaking requests: When a player requests a match, the matchmaking service searches for suitable opponents or teammates based on the defined criteria. This involves querying a pool of available players and finding the best possible match. —Match assignment: Once a suitable match is found, players are assigned to a game session. The service ensures that all players are connected and ready to start the game. —Dynamic adjustments: If specific criteria cannot be met, the matchmaking service can adjust its parameters dynamically to ensure that matches are made promptly without compromising too much on quality. Use Unity’s Matchmaking to create fair and competitive matches by considering these factors. © 2024 Unity Technologies79 of 91 | unity.com | Testing and debugging networked games | Multiplayer Services | Sample projects and resources | Lobby Lobbies are pre-game areas where players can gather, configure game settings, and prepare to start the game. The Lobby service provides a way for players to discover and connect to each other for various multiplayer gaming scenarios. Some common examples include: —Browsing a list of available game sessions to select and join one —Sharing a join code with your friend to allow them to connect to your game session —Using Quick Join to find any available match and jump in —Creating a public or private lobby and sending invites to your in-game friends list —Hosting a lobby from a game server to manage and restrict access to the server session —Query for lobbies that match specific requirements (e.g. game mode, map type) The Game lobby sample demonstrates how to use the Lobby and Relay packages to create a typical game lobby experience, including Vivox Voice chat. Players can host lobbies that other players can join using a public lobby list or lobby code. They can then connect via Relay to use Unity Transport for basic real-time communication. Relay Unity Relay simplified connecting multiple players through a join code system. When a host sets up a game session, they generate a unique join code to share with friends or teammates, who use it to connect to the session. This system streamlines the connection process while ensuring privacy by keeping sensitive information like IP addresses hidden. In peer-to-peer multiplayer games, connecting clients can be difficult due to network issues like NAT (Network Address Translation) and firewalls. Direct connections often require complex network configurations and expose players’ IP addresses, raising security and privacy concerns. Relay solves these problems by acting as an intermediary server, providing secure and simplified connectivity between clients. It eliminates the need for dedicated servers and reduces development overhead. With Relay, just generate a join code and your players can connect right away. After connection, Relay provides a join code. See this Getting starting guide to Unity Relay for more information. © 2024 Unity Technologies80 of 91 | unity.com | Testing and debugging networked games | Multiplayer Services | Sample projects and resources | Multiplay Hosting Multiplay Hosting removes the complexity of running and operating infrastructure at scale, so your development team can focus on creating engaging player experiences. It also provides ways for you to: —Track server health and other analytic data . —Update servers with zero downtime patching . —Place players in servers that offers the best experience based on quality of service (QoS) data . —Containerize your builds using Docker and the Multiplay Hosting container registry. Vivox Vivox enables better cooperative and competitive multiplayer experiences by letting your players talk through in-game voice or text chat. Vivox allows you to integrate text and voice chat into your service with a managed hosted solution. While also providing accessibility and regulatory features such as speech-to-text, chat filtering, and more. Vivox allows player communication across multiple platforms, whether your game is built in Unreal, Unity, or a custom engine. Plug into your game and configure your project settings to add communications to your project from the Unity Dashboard. Connect an unlimited number of users in 2D and 3D channels. Allow users to control voice volume, perform mute actions, and manage their channels. See this GDC session that explains how a number of multiplayer services were integrated into the Megacity Metro demo. © 2024 Unity Technologies81 of 91 | unity.com Sample projects and resources Unity offers a variety of sample projects designed to help you get started with Netcode for GameObjects and Netcode for Entities. These resources provide practical examples to guide you through implementing multiplayer networking in your own applications. Resources for Netcode for GameObjects Unity Learn: Get started with Netcode for GameObjects This Unity Learn tutorial provides practical steps on building and testing a basic multiplayer game in Unity, as well as utilizing and testing Remote Procedure Calls (RPCs) and Network Variables. You’ll also learn how to create a simple user interface for different modes (Host, Client, and Server) and add and control basic movements in these modes. © 2024 Unity Technologies82 of 91 | unity.com | Multiplayer Services | Sample projects and resources | Next steps A screenshot from the Unity Learn tutorial on Netcode GameObjects © 2024 Unity Technologies83 of 91 | unity.com | Multiplayer Services | Sample projects and resources | Next steps Bitesize samples The Bitesize Samples repository provides a series of sample code as modules to use in your games and better understand Netcode for GameObjects. The repository includes: —2D Space Shooter Sample: Learn more about physics movement and status effects using Netcode NetworkVariables and object pooling. The 2D Space Shooter from the Bitesize Samples —Distributed Authority Social Hub: Learn how to set up this topology where control and management of the game state are distributed among multiple clients, reducing server load. —Multiplayer Use Cases Overview: This sample shows you how to perform common actions in a multiplayer environment, so that you can build the features of your game with them in mind. —Client Driven Sample: Learn more about client-driven movements, networked physics, spawning vs statically placed objects, and object reparenting. —Dynamic Addressables Network Prefabs: Learn more about the dynamic prefab system, which allows us to add new spawnable prefabs at runtime. © 2024 Unity Technologies84 of 91 | unity.com | Multiplayer Services | Sample projects and resources | Next steps Boss Room Boss Room is a 3D casual co-op game sample project built with Netcode for GameObjects that is designed to help you explore the concepts and patterns behind a multiplayer game flow. Boss Room is a slice of a full-featured co-op multiplayer game. Both a functional game sample and learning tool for developers interested in networked multiplayer games, Boss Room is Unity’s longest running production-ready multiplayer sample built with the Netcode for GameObjects workflows. This sample includes production-level code and is integrated with our Lobby and Relay hosting services. Boss Room demonstrates game mechanics for network play, including character abilities and special attacks, networked physics, and state tracking (e.g., breakable objects, switches, and doors). These techniques demonstrate how to hide latency and create smooth gameplay even under less than ideal network conditions. Let’s take a closer look. Game flow and state management: Boss Room includes a practical implementation of game state, covering both the lobby and in-game play. It demonstrates how to handle player connections, load and unload scenes for network play, and manage graceful disconnections. Integration with UGS: Boss Room integrates several UGS features, including Relay, Lobby, and Authentication. Utility scripts and tools: The repo also contains a variety of utility scripts and tools that can be adapted for use in other projects, including examples of client authority, scene management utilities, and networked object pooling. © 2024 Unity Technologies85 of 91 | unity.com | Multiplayer Services | Sample projects and resources | Next steps Client-server model: Boss Room uses a client-server model where one of the players acts as the host (server) and other players are clients. Centralizing game logic reduces the chances of cheating and ensures that the game state is consistent across all clients. The start menu in the Boss Room sample project For a deep dive into the project, be sure to check out this blog post and this four-part YouTube webinar, “Build a production-ready multiplayer game with Netcode for GameObjects.” The series covers foundational game mechanics and server authority, including how to implement networked gameplay and object spawning. It also demonstrates how to enhance game resilience to player actions and optimize for better bandwidth management. This resource is for developers looking for practical, hands-on guidance using a full-featured multiplayer project. Small Scale Competitive Multiplayer template Available from the Unity Hub, this template provides a starting point to create and ship your multiplayer project using Netcode For GameObjects and UGS . The template includes a Bootstrapper tool that helps you test using various network modes (Host, Client, Server) and dynamic configurations. © 2024 Unity Technologies86 of 91 | unity.com | Multiplayer Services | Sample projects and resources | Next steps To get started open the project and follow the instructions in the included welcome dialog. Follow the in-editor tutorials or explore on your own and load the start scene from the Multiplayer > Bootstrapper menu item. Adjust the value of each field of the Bootstrapper according to what you want to test and enter Play mode. Set the Bootstrapper options. Remember that you can access tutorials and useful resources at any time from the Tutorials > Show tutorials menu. © 2024 Unity Technologies87 of 91 | unity.com | Multiplayer Services | Sample projects and resources | Next steps VR Multiplayer template Open the VR Multiplayer template from the Unity Hub. The VR Multiplayer template is is designed for creators starting a new project that will target an OpenXR device. It provides everything you need for networked interactions, voice chat, lobbies, and more. It leverages Unity Gaming Services, Netcode For GameObjects and the XR Interaction Toolkit and is built to work well on the Meta Quest platform as well as other OpenXR compliant devices. The key features of the VR Multiplayer template include: —Networked Interactions via XRI Interaction Toolkit and Netcode for GameObjects —Voice Communication via Vivox —Connect to anyone, anywhere with Relay and Lobby —Networked Avatars and Hands —Works cross platform via OpenXR Download the Unity VR Multiplayer Template for Unity 2022 LTS and Unity 6 Preview from the Unity Hub and check out the quickstart guide . © 2024 Unity Technologies88 of 91 | unity.com | Multiplayer Services | Sample projects and resources | Next steps Resources for Netcode for Entities Getting started with Netcode for Entities This on-demand webinar takes a deep dive into Megacity Metro, Unity’s large-scale, cross- platform multiplayer game sample made with Netcode for Entities and Unity Gaming Services. The webinar is for users who are already familiar with DOTS and want to start creating ambitious multiplayer games. ECS Netcode samples These samples demonstrate many basic and advanced features, including syncing, connection flows, integration with Unity Physics, and more. Start with the Networked Cube tutorial, which covers: —Establishing a connection with the server. —Communicating with the server. —Spawning synchronized entities on the server. —Creating standalone builds of the server and client. —Running the server and a client in Play mode within the Editor. The Networked Cube tutorial running in the Editor and as a standalone build © 2024 Unity Technologies89 of 91 | unity.com | Multiplayer Services | Sample projects and resources | Next steps ECS Network Racing This multiplayer racing game sample showcases best practices for using Unity Netcode for Entities. This demo features an implementation of client-server architecture with client-side prediction, interpolation, and lag compensation. ECS Racing showcases advanced multiplayer features. Megacity Metro Megacity Metro (Unity 6, Unity 2022 LTS) is a scalable, high-concurrency, cross-platform demo of our latest technology, including the Netcode for Entities package. This third-person multiplayer action demo supports 128+ players. The multiplayer sample is perfect for those who want to master implementing server- authoritative gameplay and leveraging UGS for an end-to-end multiplayer game. The Megacity Metro demo from Unity supports 128+ players. © 2024 Unity Technologies90 of 91 | unity.com | Multiplayer Services | Sample projects and resources | Next steps Learn more about building ambitious games using ECS for Unity and our Multiplayer solutions. ECS for Unity brings value to seasoned Unity creators who need additional control and determinism to achieve more ambitious games. Megacity Metro features advanced mechanics like interpolation, client-side prediction and lag compensation. Download the demo to explore services like Multiplay Hosting, Matchmaker, and Vivox Voice Chat. Megacity Metro uses Netcode for Entities in a multiplayer action demo. Experimental Multiplayer Services package Building a multiplayer game requires integrating several products and services together. With the new Multiplayer Services package (com .unity .services .multiplayer), we’re simplifying integration and dependencies management across multiplayer services while offering a new way to interact with the products. The Multiplayer Services package is a one-stop solution for adding online multiplayer elements to a game. Powered by UGS, it combines capabilities from services such as Relay and Lobby into a single new “Sessions” system to help you quickly define how groups of players connect together. The Multiplayer Services package enables you to create peer-to-peer (P2P) sessions while providing multiple methods for players to join those sessions, such as by a join code, by browsing a list of active sessions, and “Quick Join.” © 2024 Unity Technologies91 of 91 | unity.com Next steps Now that you have a solid foundation in networking concepts and practical experience with Netcode for GameObjects, continue your multiplayer learning journey: Dive into Unity Learn: We’re simplifying the multiplayer learning curve even further with new guided content. On Unity Learn, our first Multiplayer Course will teach you the basics of Netcode for GameObjects and guide you through your first networked project. Explore the sample projects: Dive deeper into the sample projects, such as Boss Room, Galactic Kittens, and the Bitesize Samples. Modding these projects will expose you to new techniques and help discover the best practices when working with networked multiplayer. Experiment with multiplayer services: Remember there’s no need to reinvent the wheel. Relay, Lobby, and Matchmaker are ready to deploy into your projects. These services can significantly reduce development time. Master advanced techniques: As your project’s needs grow, consider Netcode for Entities. This advanced package includes techniques like client-side prediction and lag compensation for the highest networking performance. The Megacity Metro and ECS Racing samples showcase these features in action. Happy networking. unity.com
---
# Unknown
UNITY FOR GAMES The True Costs of Creating, Launching and Operating a Game © 2020 Unity Technologies 2 So, you’ve decided to make a game. You’ve got some idea of what you want to create and what kind of people you need to do it. Ready, set, go! Seems easy, right? We all know it’s really not that simple or easy. If it were, every video game would be a success, but that’s clearly not the case (ever play E.T. for Atari?). There’s actually a lot more to making a game than just pulling your team together. Some considerations are obvious, while others tend to lurk unseen. We’re going to focus on the latter. The hidden costs of developing video games can be intimidating. Numerous decisions made during the development process can cascade back on one another in ways that amplify their negative effects. Setbacks can occur at any stage of a game’s lifecycle, from the first twinkling of an idea to release – and beyond. Even if these costs don’t ravage your game’s bottom line, they carry real consequences in terms of wasted time, damaged reputations, and the loss of other fulfilling or profitable work. Yet these stumbling blocks don’t have to stay unseen if you ask the right questions. By considering every phase of the development cycle, this e-book will help you unearth some of the hidden costs you might encounter – and, more importantly, to identify the questions you should ask yourself if and when they arise. As you start your game development journey, we’re going to guide you through the five milestones you need to hit in order to ensure you’re on the right path to success. Let the journey begin! Introduction © 2020 Unity Technologies 3 GAMEDEV PHASE: Concept/ prototype Inspiration can arrive at any time, but without knowing the best way to transform this into a reality, it can fizzle out just as fast – and everyone from first-time game designers to industry veterans can run into problems right out of the gate. MILESTONE 1 Meet Chris. He’s a gamedev who’s just beginning his quest. Chris has a great idea, but he’s missing a map – what will he need to find success on his journey? 1 © 2020 Unity Technologies 4 Do my tools let my team do their work efficiently, regardless of location? Remote work is expected to continue trending upward in the coming years, so flexible solutions for game development are a must. EpicHouse Games cofounders Tim van het Kaar and Joshua Boren are a perfect example of how a team can collaborate remotely, having met through a web forum. They knew it would be fun to work together and had a solid vision for their “world- shifting” 2D platformer, Phased, but they lived half a world apart: one in the U.S., the other in the Netherlands. And with one of them going to school and the other working a full-time job, time was a precious commodity. They needed tools that allowed them to determine very quickly whether their ideas were viable. By choosing software that helped them to ideate and iterate quickly, EpicHouse estimates they saved 10–20 hours a week – which may not sound like a lot, until you consider that the team was just two people with busy lives outside of game development. Using Tilemap, “we soon realized that we could extend \[its tools\] with brushes and features that matched our own workflow, and it was making it very easy to prototype and iterate on new levels,” van het Kaar says. “That meant we could just try out a feature in a separate scene and then once everything worked, put it in the main level, and we didn’t have to break things before th were ready.” More importantly, choosing tools that worked well in networked situations meant that the creators did not have to physically be together to work on Phased. In an industry that is increasing its reliance on remote teams, this can be the difference between a published game and a promising concept that dies on the vine. Key considerations MILESTONE 1 “The Tilemap and spritesheet support have saved us hours and hours of work every week... if we didn’t have those 2D features, we simply couldn’t have made a game of this scale.” – EpicHouse Games cofounder and developer Tim van het Kaar © 2020 Unity Technologies 5 Is my game targeting the correct platform? Choosing between an established audience or breaking new ground can be a tricky decision. The answer here is not always easily apparent; it’s great if it makes sense to be everywhere in today’s cross-play-obsessed, multiplatform environment, but that’s not always the case. Are you making a game that’s for mobile or PC? Xbox or Playstation? Nintendo Switch? If you plan beforehand, it could make it easier to port to other platforms when the time comes. Sometimes you may not know until some preproduction work has already been done. When Game Insight first dreamt up Guns of Boom, it had an eye on the PC and console market – a logical move for a 4v4 multiplayer shooter. But along the way to its alpha release, the studio decided that the absence of high-quality, competitive team shooters on mobile meant it might be worth switching gears to concentrate on iOS and Android instead. There was a risk involved in the change – especially since it meant switching engines as well – but the Guns of Boom team found it was well worth the effort. The game saw five million downloads in just its first two weeks, and is now a staple of the mobile esports community. MILESTONE 1 Help your game hit a bullseye by choosing your platform strategically, like Game Insight’s savvy release of Guns of Boom for mobile. © 2020 Unity Technologies 6 Most of the big decisions get made in preproduction. Each one is a risk – the wrong choice can cost you production time down the road, but being paralyzed by indecision will get you nowhere. Chris is so worried about the dangers that he almost didn’t set out on his quest at all! Roadblocks are inevitable – to succeed, he’ll need to stay nimble and seek a better path when problems arrive. MILESTONE 2 2 GAMEDEV PHASE: Preproduction © 2020 Unity Technologies 7 Are there existing resources we can use to help with preproduction builds? Changing directions when your game is already underway can be daunting. The clear hazard is wiping out the work your team has already done, and the time spent recovering – which can lead to dreaded launch delays. It’s an even trickier calculus when external stakeholders are involved, as was the case for Ludia when developing Jurassic World Alive. The pressure came from managing one of the world’s most recognizable IPs, along with a large number of preregistrations. The studio put in six months of work using its own in-house tech before realizing that they needed to switch engines for something better suited to location-based AR. Instead of holding back progress, the developers found that this change helped claw back some of the time spent on the initial work, thanks to things like improved rendering speed: a matter of hours compared to half a day for the previous prototype. On top of that, the team’s workflows improved as people became empowered to make contributions that previously required them to wait for colleagues to assist. Making big changes carries the risk of sinking the initial effort’s costs in terms of time and money, but finding the best possible tech to create Jurassic World Alive proved to be worth it since it allowed the game to release on time, earning $25 million in revenue in less than four months. Key considerations At first, Chris tried to do everything himself – even when it wasn’t his strongest skillset (like, er, game art). Creating something awesome doesn’t mean doing everything from scratch – sometimes the best way forward is the path of least resistance. MILESTONE 2 © 2020 Unity Technologies 8 Are there existing resources we can use to help with preproduction builds? In the preproduction phase, rapid iteration can be a huge asset. Determining what works and what can be discarded as quickly as possible helps you save time and money, but only if you’re able to limit the work needed to create each new version. Gameloft does this as part of its standard preproduction procedures. The team puts together a working version of a game’s core concepts as quickly as possible, decides whether or not it’s viable, and then moves on to something else if it isn’t. In just one year, they completed over 30 projects and saw 12 games greenlit for production. Since the Gameloft team never really knows what kind of initial builds it will be assembling from month to month, it needs a source for game-ready assets it can rely on, which in their case means purchasing existing assets from an online marketplace. “When you just need models or controllers or something similar, the research team can go to the Asset Store to create the first look and feel, and it can save them up to six months of development time,” says Gameloft Montreal’s director of gameplay Renaud Forestié, noting that his studio has found and used everything from characters, environments, and music to billing add-ons and localization tools. Try a lot, and see what sticks. At first, Chris thought this 8-bit tree owl looked dumb – but it ended up being the cornerstone of his game’s storytelling! Hoot, hoot! MILESTONE 2 © 2020 Unity Technologies 9 GAMEDEV PHASE: Production Once production is underway, most of your crucial decisions have been made – but certainly not all of them. Imagine Chris’s surprise when he discovers that issues he’d thought were done and dealt with have come back to haunt him. MILESTONE 3 3 © 2020 Unity Technologies 10 Can we capitalize on proven strengths in new ways? Unless your goal is specifically to push yourself in a new direction and step outside your comfort zone, there’s no need to reinvent the wheel. Sometimes the recipe for success is already there and only needs an additional ingredient or two. That doesn’t necessarily mean a sequel, but rather reframing what works in a new way to broaden your audience. When Flyclops was considering a follow-up to Dominos!, it didn’t want to stray too far from what made it the #1 dominoes game in the App Store. With a proven revenue stream in hand, the question became how to bring in more money and heighten retention without jeopardizing it. Flyclops leaned into what it knew for Dominoes Gold, but with an esports twist and a partnership with Skillz. In just one week, a single developer integrated an SDK into the game that added new features like prizes, large-scale tournaments, and leagues, while maintaining the core gameplay that made the original game a hit. “We’re actually showing fewer third-party ads and making more money,” Flyclops coowner Dave Martorana said after seeing an increase in ARPDAU. The new game also had a D1 retention rate of 41%, proving that the studio’s decision to build on top of what was already working was a wise one. Key considerations Used just 10 simulations to efficiently run 165 million playthroughs, saving at least $80,000 and 600 hours of development time along the way (Death Carnival, Furyion Games) simulations 10 165 600 million playthroughs hours of development MILESTONE 3 EN GARDE! © 2020 Unity Technologies 11 Is my team spending its time on the right things? The important process of playtesting and balancing can also bog down any game prior to launch. The more complicated a game’s systems are, the more critical the balancing act becomes. For Furyion Games’s top-down multiplayer online shooter Death Carnival, the game’s deep weapons systems made it a priority to get the game balance just right. The developers found that each weapon typically took five test iterations to balance by hand, each one averaging six hours from build to observation and feedback to tweaking. Automation turned out to be the key. A third-party service allowed the studio to use just 10 simulations to efficiently run through 165 million playthroughs, trying out every possible combination available to players. Furyion estimates it saved at least $80,000 and 600 hours of development time along the way. Less time spent balancing also freed Furyion’s programmers and artists to spend more time leading up to release on polish, getting additional details just the way they envisioned. Those types of prelaunch improvements don’t necessarily translate directly to the bottom line, but they’re the kind that players and critics notice. MILESTONE 3 There is constant pressure to produce higher-quality content in ever-shortening timelines. Look for opportunities to automate repetitive tasks so your team can focus on creating the best game possible. © 2020 Unity Technologies 12 GAMEDEV PHASE: Launch Launch day is a huge milestone – but it’s not the end of your game development journey. With your game in players’ hands, the next challenge is making sure they can play it with as little friction as possible. Chris just slew a big gamedev dragon – getting to launch day – but he’s still got a lot of work to do before he gets to collect his treasure. MILESTONE 4 4 © 2020 Unity Technologies 13 Is our game optimized for the widest range of player experiences? Creating a console game means you’ll know exactly what kind of hardware will be used by players, and that gives you a good deal of certainty about the experience people will have. In contrast, developing for platforms like PC and mobile – particularly for Android – may as well be the Wild West. Creating an Android game means taking into account the fact that the audience will play it using a wide range of devices, all at different points on the scales of power and capability. The last thing you want is to compromise on quality just to get a game to run properly, but coding for the full spectrum of Android devices can eat away at valuable time and resources. That dilemma popped up for Yodo1 during the creation of Rodeo Stampede. Because it’s exactly the kind of game that appeals to casual gamers who don’t always have the latest phones, the developers needed to keep the lowest-possible range of devices in mind during development. Even though Yodo1 had previously crafted its own solution to optimize for all Android hardware, doing so required a lot of work on both the game and its servers. The studio discovered it could save time and money by utilizing a third-party tool for device optimization called LiveTune, reducing load times across all devices to 10 seconds or less. Not coincidentally, Day 1 retention rates as low as 29% on certain low-end Android handsets saw a boost to rates of between 40–45% across the board. Key considerations Welcome to the Wild West, where big risks mean big rewards. MILESTONE 4 Yodo1 VP of global publishing Vincent Diao explains: “It took us around a week to get everything fully integrated and upgraded. It would have cost us hundreds of hours of work time with our previous solution, and we still wouldn’t have been able to achieve the kind of results we have with LiveTune.” © 2020 Unity Technologies 14 Are we prepared if launch proves much more successful than anticipated? This sounds like the kind of problem any developer would love to have. You’ve made projections and have reasonable expectations about how many people to expect at launch, and your game ends up shattering all of them. Nothing but good times ahead, right? Not necessarily. If you’re not ready for an unexpected crush of players, it’s possible that everyone playing will have a bad experience. And sometimes success comes at a level that’s simply impossible to predict, as was the case with Apex Legends. Respawn’s surprise battle royale release proved so popular that 50 million people downloaded it within the first 24 days, and concurrent server loads reached eye-popping levels: two million players at once about a week after launch – more than 10 times the most optimistic studio estimates. Trying to figure out the maximum server capacity needed is a difficult exercise for any multiplayer online game. Respawn’s solution didn’t involve nailing the right numbers for server capacity, but instead using hybrid cloud technology to be able to scale right past their own projections when needed. The dev team went into the Apex Legends launch believing it could handle uncertainty, and they were right. Pulling it off protected Respawn’s reputation for providing a reliable multiplayer experience, despite achieving the kind of enormous popularity that might have crushed other games. Be ready for anything like the team behind Apex Legends. I mean, a Day 1 rush is a good problem to have, right? Just make sure you’re armed with the right resources to solve it. MILESTONE 4 © 2020 Unity Technologies 15 GAMEDEV PHASE: Live ops Your work isn’t done after launch – you still need to take care of potential problems for players and anticipate their needs. Chris’s game is out and performing well – but live ops offers new, next-level challenges every day. MILESTONE 5 5 © 2020 Unity Technologies 16 Am I using the best tools to help players communicate? In-game channels to keep players in touch are crucial to many different genres of games in the current market. Chat was once a nice extra but has now become an expectation, with studies highlighting its importance in helping players win at online games and even improving their ability to form social bonds. Sometimes you won’t even need to dig into any data to see when in-game communication has to be improved because the lack becomes obvious. In the first part of 2017, it wasn’t hard to find people playing Rainbow Six Siege posting about their poor experiences with in-game chat and looking for help from within the community. Complaints about being unable to hear other players sent an undeniable message to Ubisoft that a change was needed. Rainbow Six Siege’s custom-built, peer-to-peer voice chat software simply wasn’t as reliable as it needed to be – an even more significant consideration given the game’s status as an esports staple. Ubisoft turned to an existing product from Vivox and found a level of stability that suited everyone from casual to pro gamers, and without having to take apart too much of what they had built. “When we were evaluating solutions for our voice needs, Vivox immediately jumped out with their proven stability and notable partner list,” explained Alexandre Remy, brand director for Rainbow Six Siege. “What surprised us was the ease of the integration and how the Vivox tech just worked from the first day of our testing.” Key considerations MILESTONE 5 © 2020 Unity Technologies 17 Can I identify the most important and valuable players? Player engagement has proven to be linked to behaviors like a willingness to upgrade to premium versions of games and make in-app purchases. However, your ability to identify and target the right people is just as important. Think of it as a virtuous cycle: Finding the gamers who are most engaged, giving them reasons to keep playing, and improving their likelihood of spending money to increase their engagement. Without insight into which players are the true backbone of your ongoing success, you face the prospect of creating content without a purpose. Mindstorm Studios wrestled with this consideration when it released the mobile strategy title War Incorporated. After four million downloads across iOS and Android, there was no question it had found an audience, but sifting through the data was a hurdle for a relatively small team. By choosing an analytics solution that met their specific needs, the studio responded to the demand for new content and engagement almost in real-time. The War Incorporated team also learned more about how players differ by region, such as how North American players tended to make their first IAPs sooner than their European counterparts – the kind of realization that can directly improve a game’s profitability. MILESTONE 5 © 2020 Unity Technologies 18 We’re here to help throughout the game lifecycle. Game development is a marathon, not a sprint, but if you keep these five checkpoints in mind you’ll be on the right path to success: 1. Concept/prototype – What are we building, and for whom? 2. Preproduction – How are we going to do it? 3. Production – Are we focused on the right things? 4. Launch – Are we ready for success? 5. Live ops – What should we adjust? The obvious expenses of creating, launching and operating a game can be formidable on their own, but the additional costs in time and missed opportunities are no less relevant – they’re just harder to anticipate. Unity is here to help you with tools and services to make sure you are supported throughout your game development journey, from concept to commercialization. If you’re ready to dive in deeper, you can get started with Unity Pro today or talk to one of our experts to learn all the ways we can assist you.
---
# Unknown
UNITY 6 PREVIEW EDITION ⟶ E-BOOK Level up your code with design patterns and SOLID Contents Introducing design patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Using this guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 The sample project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 The SceneBootstrapper . . . . . . . . . . . . . . . . . . . . . . . . . . .10 The SOLID principles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Single-responsibility principle . . . . . . . . . . . . . . . . . . . . . .13 Example: Sample project . . . . . . . . . . . . . . . . . . . . .17 Open-closed principle . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Example: Sample project . . . . . . . . . . . . . . . . . . . . .22 Liskov substitution principle . . . . . . . . . . . . . . . . . . . . . . .23 Example: Sample project . . . . . . . . . . . . . . . . . . . . .30 Interface segregation principle . . . . . . . . . . . . . . . . . . . . .31 Example: Sample project . . . . . . . . . . . . . . . . . . . . .33 Serializing interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Dependency inversion principle . . . . . . . . . . . . . . . . . . . .36 Example: Sample project . . . . . . . . . . . . . . . . . . . . .41 Interfaces versus abstract classes . . . . . . . . . . . . . . . . . .43 Abstract classes . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 A SOLID understanding . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Design patterns for game development . . . . . . . . . . . . . . . . .48 The Gang of Four . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48 Learning design patterns . . . . . . . . . . . . . . . . . . . . . . . . . .49 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50 Patterns within Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50 Factory pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 Example: A simple factory . . . . . . . . . . . . . . . . . . . . . . . . .52 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56 Object pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57 Example: Simple pool system . . . . . . . . . . . . . . . . . . . . . .58 UnityEngine .Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 Singleton pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 Example: Simple singleton . . . . . . . . . . . . . . . . . . . . . . . . .67 Persistence and lazy instantiation . . . . . . . . . . . . . . . . . . .68 Using generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 Command pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 The command object and command invoker . . . . . . . . . .74 Example: Undoable movement . . . . . . . . . . . . . . . . . . . . .75 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 State pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 States and state machines . . . . . . . . . . . . . . . . . . . . . . . . .80 Example: Simple state pattern . . . . . . . . . . . . . . . . . . . . . .82 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 Example: Game states . . . . . . . . . . . . . . . . . . . . . . . . . . . .89 Explore the QuizU Project . . . . . . . . . . . . . . . . . . . . . . . . .92 Observer pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94 Example: Simple subject and observer . . . . . . . . . . . . . . .95 Naming conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97 UnityEvents and UnityActions . . . . . . . . . . . . . . . . . . . . . .99 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 Model View Presenter (MVP) . . . . . . . . . . . . . . . . . . . . . . . . . .102 Model View Controller (MVC) design pattern . . . . . . . . .102 Model View Presenter (MVP) and Unity . . . . . . . . . . . . .103 Example: Health interface . . . . . . . . . . . . . . . . . . . . . . . .104 MVP in Unity UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 Model-View-ViewModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110 MVVM in Unity 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Data binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Example: Updated sample project . . . . . . . . . . . . . . . . . .112 Data binding: UI Builder . . . . . . . . . . . . . . . . . . . . .113 Data binding: Scripting . . . . . . . . . . . . . . . . . . . . .117 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 Strategy pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121 Example: An ability system . . . . . . . . . . . . . . . . . . . . . . .122 Before refactoring . . . . . . . . . . . . . . . . . . . . . . . . .122 Implementing the strategy pattern . . . . . . . . . . . .124 Example: Sample project . . . . . . . . . . . . . . . . . . . . . . . . .126 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 More examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 Flyweight pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128 Unrefactored example . . . . . . . . . . . . . . . . . . . . . . . . . . .129 Implementing the flyweight pattern . . . . . . . . . . . . . . . .131 Example: Sample project . . . . . . . . . . . . . . . . . . . . . . . . .132 Prefabs versus flyweights . . . . . . . . . . . . . . . . . . . . . . . .135 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136 More examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136 Dirty flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 Example: Sample project . . . . . . . . . . . . . . . . . . . . . . . . .138 Pros and cons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 Dirty flags versus dirty bits and caching . . . . . . . . . . . .143 More examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145 Other design patterns . . . . . . . . . . . . . . . . . . . . . . . . . . .146 A series of advanced resources for Unity programmers . . . . . . . . . . . . . . . . . . . . . . . . . . .147 © 2024 Unity Technologies6 of 147 | unity.com When working in Unity, you don’t have to reinvent the wheel . It’s likely someone has already invented one for you . For every software design issue you encounter, a thousand developers have been there before . Though you can’t always ask them directly for advice, you can learn from their decisions through design patterns . Design patterns are general solutions to common problems found in software engineering . These aren’t finished solutions that you can copy and paste into your code, but you can think of design patterns as extra tools in your toolbox . Some are more obvious than others . This guide assembles well-known design patterns in Unity development . The examples in this guide have been simplified and technical jargon reduced, to make them more accessible, though you should have a working knowledge of C# basics before starting with them . Important note: This second edition includes some of the new patterns that were requested by members of the Unity community . Additionally, the code examples and project that accompany this guide have been upgraded to work with Unity 6 . Unity 6 will be available later this year . If you want to follow along with the examples in this guide, and the accompanying demo project, make sure to download Unity 6 Preview . If you’re still new to design patterns or need a quick refresher, the guide also provides common scenarios where you can apply them in game development . For those switching from another object-oriented language (Java, C++, etc.) to C#, these samples will show you how to adapt patterns specifically to Unity . Introducing design patterns © 2024 Unity Technologies7 of 147 | unity.com | Introducing design patterns | Using this guide | The SOLID principles | At the core of it, design patterns are just ideas . They won’t apply in all situations . But they can help you build larger applications that scale when used correctly . Integrate them into your project to improve code readability and make your codebase cleaner . As you gain experience with patterns, you’ll recognize when they can speed up your development process . Then you can stop reinventing the wheel and, well, start working on something new . Contributors This guide was written by Wilmer Lin, a 3D and visual effects artist with over 15 years of industry experience in film and television, who now works as an independent game developer and educator . Significant contributions were also made by senior technical content marketing manager Thomas Krogh-Jacobsen and senior Unity engineers Peter Andreasen and Scott Bilas. © 2024 Unity Technologies8 of 147 | unity.com Using this guide This guide aims to present you with new ways of thinking about and organizing your code . It adapts various software design patterns specifically for Unity development . The sample project This e-book is accompanied by a sample project that shows some of the code in context . Download the project from the Asset Store and use it to follow along in the corresponding scenes to explore these design patterns and their underpinning principles . Navigate the menus to the SOLID and design pattern samples . © 2024 Unity Technologies9 of 147 | unity.com | Introducing design patterns | Using this guide | The SOLID principles | Start the project with the Boot scene . This is a bootstrap scene that configures the demo and gives access to the main menu (see factbox below). Then, you can navigate the menus to the appropriate sample . Each scene demonstrates a different SOLID concept or design pattern . Explore the sample project . Please note that there may be minor differences between the sample project and the code examples in this guide . To enhance clarity and readability, some examples feature simplified code, (e.g., public fields). Your team might prefer a coding style different from the conventions used in this guide or the sample project . We recommend creating a C# style guide specific to your specific needs and then following it consistently across the team . For further guidance, refer to our e-book, Create a C# style guide: Write cleaner code that scales, which offers some tips on how to adapt, create, and implement code style guidelines . © 2024 Unity Technologies10 of 147 | unity.com | Introducing design patterns | Using this guide | The SOLID principles | The SceneBootstrapper The project features a SceneBootstrapper class designed to streamline the development process when dividing your project into multiple Unity scenes . The bootstrap logic automatically loads a designated Boot scene whenever you enter Play mode as the first thing . For that reason the Boot scene should be listed first in the File> Build Settings . This approach ensures a consistent starting point for the game . Even if you don’t have the Boot scene currently opened, entering Play mode will force the project to load from there . The SceneBootstrapper also tracks the last scene active in the Editor before Play mode is initiated, storing this information in EditorPrefs . After exiting Play mode, it reverts to the last active scene, making it easier to pick up where you left off . Toggle the SceneBootstrapper using the menus . If you want to explore the scenes individually without the need to go through the Boot scene every time, simply disable the bootstrapper from the Design Patterns menu (Design Patterns > Don’t Load Bootstrap on Play). Re-enable the bootstrapper through the same menu . For the application to function correctly, all scenes must be listed in the Build Settings, with the bootstrapper scene positioned at index 0 . Otherwise, the IsSceneInBuildSettings method in the example implementation will log an error . For a more in-depth understanding of how the Bootstrapper works, you can refer to the appendix section . You can also explore the similar bootstrapper from the QuizU project in this related article . © 2024 Unity Technologies11 of 147 | unity.com | Introducing design patterns | Using this guide | The SOLID principles | The KISS principle When reviewing these examples, remember there isn’t a blanket “right way” to approach a problem . The sample code is one solution among many . When in doubt, filter everything in this guide through the KISS principle: “Keep it simple, stupid .” Only add complexity if necessary . Every design pattern comes with tradeoffs, whether that means additional structures to maintain or more setup at the beginning . Decide if the benefit justifies extra work before implementing it . If you’re unsure if a pattern applies to your specific problem, you might be better off waiting for a situation where it feels like a more natural fit . Don’t use a pattern because it’s new or novel to you; use it when you need it . Then, the design pattern will serve its intended purpose: to help you develop better software . Let’s get started . The Bootstrapper loads the Boot scene . © 2024 Unity Technologies12 of 147 | unity.com The SOLID principles SOLID is a mnemonic acronym for five core fundamentals of software design . You can think of them as five basic rules to keep in mind while coding to keep object-oriented designs understandable, flexible, and maintainable . Before charging into the patterns themselves, let’s look at some design principles that influence how they work . The five core principles are: —Single responsibility —Open-closed —Liskov substitution —Interface segregation —Dependency inversion Let’s examine each concept and see how they help you make your code more understandable, flexible, and maintainable . © 2024 Unity Technologies13 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Single-responsibility principle A class should have one reason to change, just its single responsibility . The first and most important SOLID principle is the single-responsibility principle (SRP), which states that each module, class, or function is responsible for one thing and encapsulates only that part of the logic . In other words, it states that you should create many smaller classes rather than one monolithic class . Shorter classes and methods are easier to explain, understand, and implement . If you’ve worked in Unity for a while, you’re likely already familiar with this concept . When you create a GameObject, it holds a variety of smaller components . For example, it might come with: A MeshFilter that stores a reference to the 3D model —A Renderer that controls how the model surface appears onscreen —A Transform component that stores scale, rotation, and position —A Rigidbody if it needs to interact with the physics simulation Each component does one thing and does it well . You build an entire scene from GameObjects . The interaction between their components is what makes a game possible . You’ll construct your scripted components in the same way . Design them so each one can be clearly understood . Then have them work in concert to make complex behavior . If you ignore single responsibility, you might create a custom component that does this: A Player script with multiple responsibilities © 2024 Unity Technologies14 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | public class UnrefactoredPlayer : MonoBehaviour { \[SerializeField\] private string inputAxisName; \[SerializeField\] private float positionMultiplier; private float yPosition; private AudioSource bounceSfx; private void Start() { bounceSfx = GetComponent(); } private void Update() { float delta = Input.GetAxis(inputAxisName) \* Time.deltaTime; yPosition = Mathf.Clamp(yPosition + delta, -1, 1); transform.position = new Vector3(transform.position.x, yPosition \* positionMultiplier, transform.position.z); } private void OnTriggerEnter(Collider other) { bounceSfx.Play(); } } This UnrefactoredPlayer class has a mishmash of responsibilities . It plays a sound when a player collides with something, manages input, and handles movement . Even if the class is relatively short at the moment, it will become tricky to maintain as your project evolves . Consider breaking the Player class into smaller classes . The Player, refactored into classes with single responsibilities © 2024 Unity Technologies15 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | \[RequireComponent(typeof(PlayerAudio), typeof(PlayerInput), typeof(PlayerMovement))\] public class Player : MonoBehaviour { \[SerializeField\] private PlayerAudio playerAudio; \[SerializeField\] private PlayerInput playerInput; \[SerializeField\] private PlayerMovement playerMovement; private void Start() { playerAudio = GetComponent(); playerInput = GetComponent(); playerMovement = GetComponent(); } } public class PlayerAudio : MonoBehaviour { ... } public class PlayerInput : MonoBehaviour { ... } public class PlayerMovement : MonoBehaviour { ... } A Player script can still manage the other scripted components but each class does only one thing . This design makes it more approachable to revise the code, especially as the requirements for your project change over time. On the other hand, however, you need to balance the single-responsibility principle with a good dose of common sense . Don’t oversimplify to the extreme by creating classes with just one method . © 2024 Unity Technologies16 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Keep these objectives in mind when working with the single-responsibility principle: —Readability: Short classes are easier to read . There is no hard and fast rule but many developers set a limit of 200-300 lines. Determine for yourself or as a team what constitutes “short .” When you exceed this threshold, decide if you can refactor it into smaller parts . —Extensibility: You can inherit from small classes more easily . Modify or replace them without fear of breaking unintended features . —Reusability: Design your classes to be small and modular so that you can reuse them for other parts of your game . When refactoring, consider how rearranging code will improve the quality of life for yourself or other team members . Some extra effort at the beginning can save you a lot of trouble later . Simple is not easy Simplicity is often talked about in software design and is a prerequisite for reliability. Can your software design handle changes in production? Can you extend and maintain your application over time? Many of the design patterns and principles presented in this guide help you enforce simplicity . In doing so, they make your code more scalable, flexible, and readable . However, they require some extra work and planning. “Simple” does not equate to “easy.” Though you can create the same functionality without the patterns (and often more quickly), something fast and easy doesn’t necessarily result in something simple. Making something simple means making it focused . Design it to do one thing, and don’t overcomplicate it with other tasks . Check out Rich Hickey’s lecture, Simple Made Easy, to understand how simplicity can help you build better software . © 2024 Unity Technologies17 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Example: Sample project The sample project includes a simple demo of applying single responsibility principle to a player character . The Player class references other scripts that each handle a specific aspect of player behavior: —PlayerInput captures and processes player inputs from the keyboard, translating them into a directional vector . —PlayerMovement controls the player’s movement based on the input vector from the PlayerInput class . —PlayerAudio plays back sound effects when the player collides with obstacles . —PlayerFX handles particle systems for the player . Single responsibility makes the codebase more modular and easier to read . It also simplifies the process of updating or extending each component without affecting the others . The single responsibility demo separates the Player into smaller components . Open-closed principle The open-closed principle (OCP) in SOLID design says that classes must be open for extension but closed for modification . A classic example of this is calculating the area of a shape . Structure your classes so that you can create new behavior without modifying the original code . © 2024 Unity Technologies18 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | In this example, an AreaCalculator class has methods to return the area of a rectangle and circle . For the sake of calculating area, a Rectangle class has a Width and Height . A Circle only needs a Radius and the value of pi . public class AreaCalculator { public float GetRectangleArea(Rectangle rectangle) { return rectangle.width \* rectangle.height; } public float GetCircleArea(Circle circle) { return circle.radius \* circle.radius \* Mathf.PI; } } public class Rectangle { public float width; public float height; } public class Circle { public float radius; } This works well enough, but if you want to add more shapes to your AreaCalculator, you’ll need to create a new method for each new shape . Suppose you want to pass it a pentagon or an octagon later? What if you need 20 more shapes? The AreaCalculator class would quickly balloon out of control. You could make a base class called Shape and create one method to process the shapes . However, doing so would require multiple if statements inside the logic to handle each type of shape . That won’t scale well . You want to open the program for extension (the ability to use new shapes) without modifying the original code (the internals of the AreaCalculator). Though it’s functional, the current AreaCalculator violates the open-closed principle . © 2024 Unity Technologies19 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | How do we design the AreaCalculator to take new shapes? Instead, consider defining an abstract Shape class: public abstract class Shape { public abstract float CalculateArea(); } © 2024 Unity Technologies20 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | This includes an abstract method called CalculateArea . If you then make Rectangle and Circle inherit from Shape, each shape can calculate its own area and return the following result: public class Rectangle : Shape { public float width; public float height; public override float CalculateArea() { return width \* height; } } public class Circle : Shape { public float radius; public override float CalculateArea() { return radius \* radius \* Mathf.PI; } } The AreaCalculator can simplify into this: public class AreaCalculator { public float GetArea(Shape shape) { return shape.CalculateArea(); } } public class AreaCalculator : MonoBehaviour © 2024 Unity Technologies21 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | { private void Start() { Debug.Log(GetArea(new RectAngle { width = 2, height = 3 })); Debug.Log(GetArea(new Circle { radius = 3 })); } public float GetArea(Shape shape) { return shape.CalculateArea(); } } The revised AreaCalculator class can now get the area of any shape that properly implements the abstract Shape class . You can then extend the AreaCalculator functionality without changing any of its original source . Revising the classes for the open-closed principle © 2024 Unity Technologies22 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Every time you need a new polygon, simply define a new class that inherits from Shape. Each subclassed shape then overrides the CalculateArea method to return the correct area . This new design makes debugging easier . If a new shape introduces an error, you don’t have to revisit the AreaCalculator . The old code remains unchanged, so you only need to examine new code for any faulty logic . Take advantage of interfaces and abstraction when creating new classes in Unity . This helps to avoid unwieldy switch or if statements in your logic that will be difficult to extend later . Once you get accustomed to setting up your classes to respect OCP, adding new code in the long term becomes simpler . Example: Sample project The sample project shows a similar example of applying the open-closed principle in a simple demo . Here, the abstract base class, AreaOfEffect, introduces an abstract method called CalculateArea . Derived classes (CircleEffect, HexagonalEffect, RectangleEffect, and TriangularEffect) can implement their unique formulas for calculating the area of effect or playing back a visual effect . Each simply defines its own logic within CalculateArea . Adding new area effect types doesn’t alter existing code . When the player collides with an EffectTrigger component, it interacts with the AreaOfEffect without knowledge of each effect’s specific details . Adding new effects thus become more flexible and extensible . The open-closed principle makes your code more extensible . © 2024 Unity Technologies23 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Liskov substitution principle The Liskov substitution principle (LSP) states that derived classes must be substitutable for their base class . Inheritance in object-oriented programming allows you to add functionality through subclasses . However, this can lead to unnecessary complexity if you’re not careful . The Liskov substitution principle, the third pillar of SOLID, tells you how to apply inheritance to make your subclasses more robust and flexible . Imagine your game requires a class called Vehicle . This will be the base class of a vehicle subclass that you will create for your application . For example, you might need a car or truck . Everything inherits from Vehicle . Everywhere you can use the base class (Vehicle), you should be able to use a subclass like Car or Truck without breaking the application . © 2024 Unity Technologies24 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Your Vehicle class might look like this: public class Vehicle { public float speed = 100; public Vector3 direction; public void GoForward() { ... } public void Reverse() { ... } public void TurnRight() { ... } public void TurnLeft() { ... } } © 2024 Unity Technologies25 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Suppose you are building a turn-based game where you move the vehicles around a board . An example game of cars versus trains You could have another class called Navigator to steer a vehicle along a prescribed path: public class Navigator { public void Move(Vehicle vehicle) { vehicle.GoForward(); vehicle.TurnLeft(); vehicle.GoForward(); vehicle.TurnRight(); vehicle.GoForward(); } } © 2024 Unity Technologies26 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | With this class, you expect to be able to pass any vehicle into the Navigator’s Move method, and this will work fine with cars and trucks . What happens, though, when you want to implement a class called Train? A Train would violate your base class . The TurnLeft and TurnRight methods would not work in a Train class since a train can’t leave its tracks . If you do pass a train into the Navigator’s Move method, that would throw an unimplemented Exception (or do nothing) when you get to those lines. You violate the Liskov substitution principle if you cannot substitute a type for its subtype . Since a Train is a subtype of Vehicle, you would expect to use it any place that accepts the Vehicle class . Doing otherwise might make your code behave unpredictably . Consider some tips to adhere more closely to Liskov substitution principle: —If you are removing features when subclassing, you are likely breaking Liskov substitution: A NotImplementedException is a dead giveaway that you’ve violated this principle . Leaving a method blank does so as well . If the subclass does not behave like the base class, you’re not following LSP – even if there’s no explicit error or exception. —Keep abstractions simple: The more logic you put into the base class the more likely you will break LSP . The base class should only express the common functionality of the derived subclasses . © 2024 Unity Technologies27 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | —A subclass needs to have the same public members as the base class: Those members also need to have the same signatures and behavior when calling them . —Consider the class API before establishing class hierarchies: Even though you think of them all as vehicles, it might make more sense for a Car and Train to inherit from separate parent classes . Classifications in reality don’t always translate into class hierarchy . —Favor composition over inheritance: Instead of trying to pass functionality through inheritance, create an interface or separate class to encapsulate a specific behavior . Then build up a “composition” of different functionality by mixing and matching . Composition over inheritance To fix this design, scrap the original Vehicle type, then move much of the functionality into interfaces: public interface ITurnable { public void TurnRight(); public void TurnLeft(); } public interface IMovable { public void GoForward(); public void Reverse(); } © 2024 Unity Technologies28 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Follow the LSP principle more closely by creating a RoadVehicle type and RailVehicle type . The Car and Train would then inherit from their respective base classes . Refactoring to take Liskov substitution into consideration © 2024 Unity Technologies29 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | public class RoadVehicle : IMovable, ITurnable { public float speed = 100f; public float turnSpeed = 5f; public virtual void GoForward() { ... } public virtual void Reverse() { ... } public virtual void TurnLeft() { ... } public virtual void TurnRight() { ... } } public class RailVehicle : IMovable { public float speed = 100; public virtual void GoForward() { ... } public virtual void Reverse() { ... } } public class Car : RoadVehicle { ... } public class Train : RailVehicle { ... } © 2024 Unity Technologies30 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | In this way the functionality comes through interfaces rather than inheritance . Car and Train no longer share the same base class, which now satisfies LSP . Though you could derive RoadVehicle and RailVehicle from the same base class, there is not much need to in this case . This way of thinking can be counterintuitive because you have certain assumptions about the real world . In software development, this is called the circle–ellipse problem . Not every actual “is a” relationship translates into inheritance. Remember, you want your software design to drive your class hierarchy, not your prior knowledge of reality . Follow the Liskov substitution principle to limit how you use inheritance to keep your codebase extendable and flexible . Example: Sample project The sample project demonstrates the Liskov substitution principle through a set of power ups . The PowerUp abstract class serves as the base class for example player buffs (including an InvulnerabilityPowerUp, HealthBoost, and SpeedBoost). Each subclass overrides the ApplyEffect method to implement specific logic . Liskov substitution allows any instance of PowerUp to be replaced with instances of its subclasses . This ensures that the game works correctly regardless of the specific type of power-up encountered . The result is code reusability and maintainability. Reinforcing the open-closed principle, adding new types of power-ups in the future won’t necessitate modifying existing code . In Liskov substitution, objects of a subclass can always replace objects of a base class . © 2024 Unity Technologies31 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Interface segregation principle The interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use . In other words, avoid large interfaces . Follow the same idea as the single-responsibility principle, which tells you to keep classes and methods short . This gives you maximum flexibility, keeping interfaces compact and focused . Imagine you’re making a strategy game with different player units . Each unit has different stats like health and speed . You might want to make an interface to guarantee that all of the units implement similar features: public interface IUnitStats { public float Health { get; set; } public int Defense { get; set; } public void Die(); public void TakeDamage(); public void RestoreHealth(); public float MoveSpeed { get; set; } public float Acceleration { get; set; } public void GoForward(); public void Reverse(); public void TurnLeft(); public void TurnRight(); public int Strength { get; set; } public int Dexterity { get; set; } public int Endurance { get; set; } } Let’s say you want to make a destructible prop like a breakable barrel or crate . This prop will also need the concept of health despite not moving . A crate or barrel also won’t have many of the abilities associated with other units in the game . Split it into several smaller interfaces rather than make one interface that gives the breakable prop too many methods . A class implementing them will then only mix and match what it needs . © 2024 Unity Technologies32 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Split the interface into smaller ones . public interface IMovable { public float MoveSpeed { get; set; } public float Acceleration { get; set; } public void GoForward(); public void Reverse(); public void TurnLeft(); public void TurnRight(); } public interface IDamageable { public float Health { get; set; } public int Defense { get; set; } public void Die(); public void TakeDamage(); public void RestoreHealth(); } public interface IUnitStats { public int Strength { get; set; } public int Dexterity { get; set; } public int Endurance { get; set; } } © 2024 Unity Technologies33 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | You can also add an IExplodable interface for the exploding barrel: public interface IExplodable { public float Mass { get; set; } public float ExplosiveForce { get; set; } public float FuseDelay { get; set; } public void Explode(); } Because a class can implement more than one interface, you can compose an enemy unit from IDamageable, IMoveable, and IUnitStats . An exploding barrel could use IDamageable and IExplodable without needing the unnecessary overhead of the other interfaces . public class ExplodingBarrel : MonoBehaviour, IDamageable, IExplodable { ... } public class EnemyUnit : MonoBehaviour, IDamageable, IMovable, IUnitStats { ... } Example: Sample project The sample project demonstrates the interface segregation through a set of target objects . Aim the gun with the mouse and shoot with the left mouse button . Each target only implements the methods that it needs . By defining smaller, more focused interfaces (such as IEffectTrigger, IExplodable, and IDamageable), each class only implements the functionalities that are relevant . This reduces unnecessary dependencies between classes and interfaces . —IEffectTrigger allows objects to trigger visual or audio effects at a specific location . In this case, the projectile shows a small hit effect on collision . —IDamageable allows an object to take damage . A target with a HealthBar attached disappears when its health runs out . —IExplodable instantiates an explosion prefab when the target dies . © 2024 Unity Technologies34 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | This segregation of interfaces allows for greater flexibility in how objects interact within the game environment . For example, in this way, the Projectile class can then affect other objects without direct knowledge of each target’s specific implementation . Interface segregation says that no client should depend on methods it doesn’t use . Serializing interfaces Even if you apply the SerializeField attribute to an interface-type field, or make it public, the field won’t display in the Inspector . Unity’s serialization system is designed to work with concrete classes, especially those inheriting from MonoBehaviour or ScriptableObject . Interfaces, which are abstract by nature, do not hold concrete data themselves and hence fall outside the direct scope of the serialization mechanism . To work around this limitation: —Instead of trying to serialize the interface, serialize a reference to a concrete object (e.g. MonoBehaviour or ScriptableObject) that implements the interface. —At runtime, use the is keyword to check and cast the serialized object . Then, you can verify if it implements the required interface. © 2024 Unity Technologies35 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Here’s an example: // Define an interface public interface IInteractable { void Interact(); } // Concrete class implementing the interface public class DoorController : MonoBehaviour, IInteractable { public void Interact() { // Door logic here Debug.Log(“Door opened”); } } public class GameManager : MonoBehaviour { \[SerializeField\] private MonoBehaviour interactableObject; private void Start() { // Check and cast at runtime if (interactableObject is IInteractable interactable) { interactable.Interact(); } } } Again, this favors composition over inheritance, similar to the example with Liskov substitution . The interface segregation principle helps decouple your systems and makes them easier to modify and extend . © 2024 Unity Technologies36 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Dependency inversion principle The dependency inversion principle (DIP) says that high-level modules should not import anything directly from low-level modules . Both should depend on abstractions . Let’s unpack what that means . When one class has a relationship with another, it has a dependency or coupling . Each dependency in software design carries some risk . If one class knows too much about how another class works, modifying the first class can damage the second or vice versa . A high degree of coupling is considered unclean code practice . An error in one part of the application can snowball into many . Ideally, aim for as few dependencies between classes as possible . Each class also needs its internal parts to work together in unison, rather than relying on connections to the outside . Your object is considered cohesive when it functions on internal or private logic . In the best scenario, aim for loose coupling and high cohesion . Strive for loose coupling with high cohesion . © 2024 Unity Technologies37 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | You need to be able to modify and expand your game application . If it’s fragile and resistant to modification, investigate how it’s currently structured . The dependency inversion principle can help reduce this tight coupling between classes . When building classes and systems in your application, some are naturally “high-level” and some “low-level” . A high-level class depends on a lower-level class to get something done . SOLID tells us to switch this up . Suppose you are making a game where a character explores the level and triggers a door to open . You might want to create a class called Switch and another class called Door . The Switch (high-level) depends directly on the Door (low-level) class. On a high-level, you want the character to move to a specific location and for something to happen . The Switch will be responsible for that . On a low-level is another class, Door, that contains the actual implementation of how to open the door geometry . For simplification, a Debug.Log statement is added to represent the logic of the opening and closing door . © 2024 Unity Technologies38 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | public class Switch : MonoBehaviour { public Door door; public bool isActivated; public void Toggle() { if (isActivated) { isActivated = false; door.Close(); } else { isActivated = true; door.Open(); } } } public class Door : MonoBehaviour { public void Open() { Debug.Log(“The door is open.”); } public void Close() { Debug.Log(“The door is closed.”); } } Switch can invoke the Toggle method to open and close the door . It works, but the problem is that a dependency is wired from the Door directly into the Switch . What if the logic of the Switch needs to work on more than just a Door for example, to activate a light or giant robot? You can add extra methods into the Switch class, but you’d be violating the open-closed principle . You have to modify the original code every time you want to extend functionality . Once again abstractions come to the rescue . You can sandwich an interface called ISwitchable in between your classes . © 2024 Unity Technologies39 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | An interface, ISwitchable, between the two classes ISwitchable just needs a public property so you know whether it’s active, plus a couple of methods to Activate and Deactivate it . public interface ISwitchable { public bool IsActive { get; } public void Activate(); public void Deactivate(); } Then the Switch becomes something like this, depending on an ISwitchable client, instead of a door directly . © 2024 Unity Technologies40 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | public class Switch : MonoBehaviour { public ISwitchable client; public void Toggle() { if (client.IsActive) { client.Deactivate(); } else { client.Activate(); } } } On the other hand, you’ll need to rework the Door to implement ISwitchable: public class Door : MonoBehaviour, ISwitchable { private bool isActive; public bool IsActive => isActive; public void Activate() { isActive = true; Debug.Log(“The door is open.”); } public void Deactivate() { isActive = false; Debug.Log(“The door is closed.”); } } Now you’ve inverted the dependency . The interface creates an abstraction in between them rather than hardwiring the switch to the door exclusively . The Switch no longer depends directly on the door-specific methods (Open and Close). Instead it uses the ISwitchable’s Activate and Deactivate . © 2024 Unity Technologies41 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | This small but significant change promotes reusability . Whereas Switch would only work with a Door previously, now it works with anything that implements ISwitchable . This enables you to make more classes that the Switch can activate . The high-level Switch will work, whether it’s a trap door or a laser beam . It just needs a compatible client that implements ISwitchable . The Switch can now activate any ISwitchable object . Like the rest of SOLID, the dependency inversion principle asks you to examine how you normally set up relationships between your classes . Conveniently scale your project with loose coupling . Example: Sample project The sample project showcases dependency inversion with an implementation of a door and trap example. Click each respective switch to activate the device in question. Remember that high-level modules (like the switch) should not depend on low-level modules (like the door or trap). Instead, the ISwitchable interface acts as an abstraction layer between them . It defines a contract for activating or deactivating objects, regardless of their specific implementations . © 2024 Unity Technologies42 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | The Door and Trap classes implement the ISwitchable interface . This allows them to be controlled by other parts of the system without direct knowledge of their concrete behaviors . Thus, the Door can manage the mechanics of opening and closing, while the Trap can handle activation and deactivation logic, all under the same interface . By depending on an abstraction rather than concrete implementations, the system can easily be extended with new types of switchable objects . In dependency inversion, high-level modules should not depend on low-level modules . Both depend on abstractions . © 2024 Unity Technologies43 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Interfaces versus abstract classes In keeping with the philosophy of favoring “composition over inheritance,” many examples in this guide use interfaces . However, you can follow many of the design principles and patterns with abstract classes as well . Both are valid ways to achieve abstractions in C# . Which one you use depends on your situational needs . Abstract classes The abstract keyword lets you define a base class, so you can pass common functionality (methods, fields, constants, etc.) to subclasses through inheritance. You can’t instantiate an abstract class directly . Instead you’ll need to derive a concrete class . In the preceding example, an abstract class could achieve the same dependency inversion, just with a different approach . So rather than use an interface, derive a concrete class (e .g ., Light or Door) from an abstract class called Switchable . Using abstract classes © 2024 Unity Technologies44 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Inheritance defines an “is a” relationship . Shown in the diagram above are all “switchable” things that can turn on and off . The advantage of abstract classes is they can have fields and constants as well as static members . They can also apply more restricted access modifiers, like protected and private . Unlike interfaces, abstract classes let you implement logic that enables you to share core functionality between your concrete classes . Inheritance works well until you want to create a derived class that has characteristics of two different base classes . In C#, you can’t inherit from more than one base class . Choosing between base classes If you had another abstract class for all Robots in your game, then it’s harder to decide what to derive from . Do you use the Robot or Switchable base class? © 2024 Unity Technologies45 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Interfaces As seen in the interface segregation principle, interfaces give you more flexibility when something doesn’t fit neatly into the paradigm of inheritance . You can pick and choose more easily with a “has a” relationship . However, interfaces only contain declarations of their members . A class that actually implements the interface will be responsible for fleshing out the specific logic . Thus, it’s not always an either-or decision . Use abstract classes to define the base functionality where you want to share code . Use interfaces to define peripheral abilities where you need flexibility . In this example, you can derive the NPC from the Robot base class to inherit its core features, but then use an interface ISwitchable to add the ability to switch the NPC on and off . The NPC Robot using both © 2024 Unity Technologies46 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | Keep in mind the following differences between abstract classes and interfaces: Abstract classInterface Fully or partially implements methodsDeclares methods but can’t implement them Declares/uses variables and fields Declares only methods and properties (but not fields) Has static membersCan’t declare/use static members Uses constructorsCan’t use constructors Uses all access modifiers (protected, private, etc.) Can’t use access modifiers (all members are implicitly public) Remember: A class can inherit from at most one abstract class, but it can implement multiple interfaces . © 2024 Unity Technologies47 of 147 | unity.com | Using this guide | The SOLID principles | Design patterns for game development | A SOLID understanding Getting to know the SOLID principles is a matter of daily practice . Think of them as five basic rules to always keep in mind while coding . Here’s a handy recap: —Single responsibility: Make sure classes only do one thing and have only one reason to change . —Open-closed: You should be able to extend the functionality of a class without changing how it already works . —Liskov substitution: Subclasses should be substitutable for their base classes . —Interface segregation: Keep your interfaces short with few methods . Clients only implement what they need . —Dependency inversion: Depend on abstractions . Don’t depend directly from one concrete class to another . The SOLID principles are guidelines to help you write cleaner code so that it’s more efficient to maintain and extend . SOLID principles have dominated software design for nearly two decades at the enterprise level because they’re well-suited for large applications that must scale . In some cases, adhering to SOLID can result in additional work up front . You might need to refactor some of your functionality into abstractions or interfaces . However, there is often a payoff in long-term savings . Determine for yourself how strictly you will apply the principles to your projects; they’re not absolutes . There are nuances, and numerous ways to implement each one that are not covered here. Remember: the thinking behind the principle is more important than any specific syntax . When unsure about how to use them, refer back to the KISS principle . Keep it simple, and don’t try to force the principles into your scripts just for the sake of doing it . Let them organically work themselves into place through necessity . For more information, be sure to check out the Unity SOLID presentation from Unite Austin . © 2024 Unity Technologies48 of 147 | unity.com Design patterns for game development Once you understand the SOLID principles, you’ll want to dive deeper into design patterns . Design patterns let you repurpose well-known solutions for everyday software problems . A pattern, however, isn’t an off-the-shelf library or framework . Nor is it an algorithm, which is a specific set of steps to achieve a result . Instead, think of a design pattern more like a blueprint . It’s a general plan that leaves the actual construction up to you . Two programs can follow the same pattern but have very different code . When developers encounter the same problem in the wild, many of them will inevitably come up with similar solutions . Once such a solution becomes repeated enough, someone might “discover” a pattern and formally give it a name . The Gang of Four Many of today’s software design patterns stem from the seminal work, Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. This book describes 23 such patterns identified in a variety of day-to-day applications . The original authors are often referred to as the “Gang of Four” (GoF), and you’ll also hear the original patterns dubbed the GoF patterns. While the examples cited are mostly in C++ (and Smalltalk), you can apply their ideas to any object-oriented language, such as C#. © 2024 Unity Technologies49 of 147 | unity.com | The SOLID principles | Design patterns for game development | Factory pattern | Since the Gang of Four originally published Design Patterns in 1994, developers have discovered dozens more object-oriented patterns in a variety of fields . Many engineering specialities have well-established patterns . Game development is no different . Learning design patterns While you can work as a game programmer without studying design patterns, learning them will only help you become a better developer . After all, design patterns are labeled as such because they’re common solutions to well-known problems . Software engineers rediscover them all the time in the normal course of development . You may have already implemented some of these patterns unwittingly . Train yourself to look for them . Doing this can help you: —Learn object-oriented programming: Design patterns aren’t secrets buried in an esoteric StackOverflow post . They are common ways to overcome everyday hurdles in development . They can inform you how many other developers approached the same issue. Remember, even if you aren’t using patterns, someone else is. —Talk to other developers: Patterns can serve as a shorthand when trying to communicate as a team . Mention the “command pattern” or “object pool” and experienced Unity developers will know exactly what you’re trying to implement . —Explore new frameworks: When you import a built-in package or something from the Asset Store, inevitably you’ll stumble onto one or more patterns discussed here . Recognizing design patterns will help you understand how a new framework works and the thought process involved in its creation . Of course, not all design patterns apply to every game application . Don’t go looking for them with Maslow’s hammer; otherwise, you might only find nails . Like any other tool, a design pattern’s usefulness depends on context . Each one provides a benefit in certain situations and also comes with its share of drawbacks . Every decision in software development comes with compromises . Are you generating a lot of GameObjects on the fly? Does it impact your performance? Can restructuring your code fix that? Be aware of these design patterns and when the time is right, pull them from your gamedev bag of tricks to solve the problem at hand . © 2024 Unity Technologies50 of 147 | unity.com | The SOLID principles | Design patterns for game development | Factory pattern | Further reading In addition to the Gang of Four’s Design Patterns: Elements of Reusable Object-Oriented Software, another standout volume is Game Programming Patterns by Robert Nystrom. The author details a variety of software patterns in a no-nonsense manner . The web- based edition is available for free at gameprogrammingpatterns .com . Patterns within Unity Unity already implements several established gamedev patterns, saving you the trouble of writing them yourself . These include: —Game loop and update: At the core of all games is an infinite loop that must function independently of clock speed, since the hardware that powers a game application can vary greatly . To account for computers of different speeds, game developers often need to use a fixed timestep (with a set frames-per-second) and a variable timestep where the engine measures how much time has passed since the previous frame . Unity takes care of this out of the box, so you don’t have to implement it yourself . You only need to manage gameplay using MonoBehaviour methods like Update, LateUpdate, and FixedUpdate . Then, you can modify GameObjects and components for each frame of the game clock . —Prototype: Often you need to copy objects without affecting the original . This creational pattern solves the problem of duplicating and cloning an object to make other objects similar to itself . This way you avoid defining a separate class to spawn every type of object in your game . Unity’s Prefab system implements a form of prototyping for GameObjects . This allows you to duplicate a template object complete with its components . Override specific properties to create Prefab Variants or nest Prefabs inside other Prefabs to create hierarchies . Use a special Prefab editing mode to edit Prefabs in isolation or in context . —Component: Most people working in Unity know this pattern . Instead of creating large classes with multiple responsibilities, build smaller components that each do one thing . If you use composition to pick and choose components, you combine them for complex behavior. Add Rigidbody and Collider components for physics. Add a MeshFilter and MeshRenderer for 3D geometry. Each GameObject is only as rich and unique as its collection of components . Of course, Unity can’t do everything for you . Inevitably you’ll need other patterns that aren’t built-in . Let’s explore a few of these in the next chapters . © 2024 Unity Technologies51 of 147 | unity.com Factory pattern A factory can spawn one or more products . Sometimes it’s helpful to have a special object that creates other objects . Many games spawn a variety of things over the course of gameplay, and you often don’t know what you need at runtime until you actually need it . © 2024 Unity Technologies52 of 147 | unity.com | Design patterns for game development | Factory pattern | Object pool | The factory pattern designates a special object called – you guessed it – a factory for this purpose . On one level, it encapsulates many of the details involved in spawning its “products .” The immediate benefit is to declutter your code . However, if each product follows a common interface or base class, you can take this a step further and make it contain more of its own construction logic, hiding it away from the factory itself . Creating new objects thus becomes more extensible . You can also subclass the factory to make multiple factories dedicated to specific products . Doing this helps generate enemies, obstacles, or anything else at runtime . Example: A simple factory Imagine you want to create a factory pattern to instantiate items for a game level . You can use Prefabs to create GameObjects, but you might also want to run some custom behavior when creating each instance . Rather than using if statements or a switch to maintain this logic, create an interface called IProduct and an abstract class called Factory: public interface IProduct { public string ProductName { get; set; } public void Initialize(); } public abstract class Factory : MonoBehaviour { public abstract IProduct GetProduct(Vector3 position); // shared method with all factories ... } Products need to follow a specific template for their methods, but they don’t otherwise share any functionality . Hence, you define the IProduct interface . Factories might need some shared common functionality, so this sample uses abstract classes . Just be mindful of Liskov substitution from the SOLID principles when using subclasses. © 2024 Unity Technologies53 of 147 | unity.com | Design patterns for game development | Factory pattern | Object pool | They can result in a structure like this: Using an interface to define shared properties and logic between your products The IProduct interface defines what is common between your products . In this case, you simply have a ProductName property and any logic the product runs on Initialize . You can then define as many products as you need (ProductA, ProductB, etc.) so long as they follow the IProduct interface . The base class, Factory, has a GetProduct method that returns an IProduct . It’s abstract, so you can’t make instances of Factory directly . You derive a couple of concrete subclasses (ConcreteFactoryA and ConcreteFactoryB), which will actually get the different products . GetProduct in this example takes a Vector3 position so that you can instantiate a Prefab GameObject more easily at a specific location . A field in each concrete factory also stores the corresponding template Prefab . © 2024 Unity Technologies54 of 147 | unity.com | Design patterns for game development | Factory pattern | Object pool | public class ProductA : MonoBehaviour, IProduct { \[SerializeField\] private string productName = “ProductA”; public string ProductName { get => productName; set => productName = value ; } private ParticleSystem particleSystem; public void Initialize() { // any unique logic to this product gameObject.name = productName; particleSystem = GetComponentInChildren(); particleSystem?.Stop(); particleSystem?.Play(); } } public class ConcreteFactoryA : Factory { \[SerializeField\] private ProductA productPrefab; public override IProduct GetProduct(Vector3 position) { // create a Prefab instance and get the product component GameObject instance = Instantiate(productPrefab.gameObject, position, Quaternion.identity); ProductA newProduct = instance.GetComponent(); // each product contains its own logic newProduct.Initialize(); return newProduct; } } Here’s the sample ProductA and ConcreteFactoryA . Here, you’ve made the product classes MonoBehaviours that implement IProduct take advantage of Prefabs in the factory . © 2024 Unity Technologies55 of 147 | unity.com | Design patterns for game development | Factory pattern | Object pool | Note how each product can have its own version of Initialize . The example ProductA Prefab contains a ParticleSystem, which plays when the ConcreteFactoryA instantiates a copy . The factory itself does not contain any specific logic for triggering the particles; it only invokes the Initialize method, which is common to all products . Explore the sample project to see how the ClickToCreate component switches between factories to create ProductA and ProductB, which have different behaviors . ProductB plays a sound when it spawns, while ProductA sets off a particle effect . Pros and cons You’ll benefit the most from the factory pattern when setting up many products . Defining new product types in your application doesn’t change your existing ones or require you to modify previous code . Separating each product’s internal logic into its own class keeps the factory code relatively short . Each factory only knows to invoke Initialize on each product without being privy to the underlying details . The downside is that you create a number of classes and subclasses to implement the pattern . Like the other patterns, this introduces a bit of overhead, which may be unnecessary if you don’t have a large variety of products . One product plays a sound, while another plays particles . Both use the same interface . © 2024 Unity Technologies56 of 147 | unity.com | Design patterns for game development | Factory pattern | Object pool | Improvements The implementation of the factory pattern can vary widely from what’s shown here . Consider the following adjustments when building your own factory pattern: —Use a dictionary to search for products: You might want to store your products as key-value pairs in a dictionary. Use a unique string identifier (e.g., the Name or some ID) as the key and the type as a value. This can make retrieving products and/or their corresponding factories more convenient . —Make the factory (or a factory manager) static: This makes it easier to use but requires additional setup . Static classes won’t appear in the Inspector, so you will need to make your collection of products static as well . —Apply it to non-GameObjects and non-MonoBehaviours: Don’t limit yourself to Prefabs or other Unity-specific components . The factory pattern can work with any C# object . —Combine with the object pool pattern: Factories don’t necessarily need to instantiate or create new objects . They can also retrieve existing ones in the hierarchy . If you are instantiating many objects at once, (e.g., projectiles from a weapon), use the object pool pattern for more optimized memory management . Factories can spawn any gameplay element on an as-needed basis . Note, however, that creating products is often not their only purpose . You might be using the factory pattern as part of another larger task (e.g., setting up UI elements in a dialog box of parts of a game level). © 2024 Unity Technologies57 of 147 | unity.com Object pool Managing the lifecycle of numerous objects within your game scene is key to achieving optimal performance . While C#’s automatic memory management system offers convenience through its garbage collector, this feature can also introduce noticeable stutters or spikes when objects are frequently created and destroyed. To mitigate this, consider using the object pool pattern. This technique optimizes performance by reusing GameObjects . Instead of constantly creating and destroying objects, you maintain a “pool” of pre-initialized, deactivated objects . When you need an object, your application doesn’t instantiate it. Instead you request the GameObject from the pool and enable it. After use, an object is deactivated and returned to the pool, avoiding the overhead of destruction . Ideally, you should initialize the object pool during less noticeable moments (e .g . during a loading screen), to prevent stutter. This optimization technique is useful whenever creating and destroying a lot of GameObjects . If you’ve used Unity’s ParticleSystem, then you have firsthand experience with an object pool . The ParticleSystem component contains a setting for the max number of particles . This simply recycles available particles, preventing the effect from exceeding a maximum number . The object pool works similarly, but with any GameObject of your choosing . © 2024 Unity Technologies58 of 147 | unity.com | Factory pattern | Object pool | Singleton pattern | An object pool can help you shoot bullets without gameplay stutter . Example: Simple pool system Unity includes a built-in object pooling feature via the UnityEngine .Pool namespace . Available in Unity 2021 LTS and later, this namespace facilitates the management of object pools, automating aspects like object lifecycle and pool size control . Creating your own object pool, however, can help you understand the underlying principles of how the pattern works . Let’s walk through how to build a simple object pool to see its mechanics in action . Consider a simple pooling system with two defined MonoBehaviours: —An ObjectPool that holds the collection of GameObjects to draw from —A PooledObject component added to the Prefab to help each cloned item keep a reference to the pool © 2024 Unity Technologies59 of 147 | unity.com | Factory pattern | Object pool | Singleton pattern | In ObjectPool, you set up fields describing the size of the pool, the PooledObject Prefab that you want to store, and a collection that will form the pool itself (a stack in this example). public class ObjectPool : MonoBehaviour { \[SerializeField\] private int initPoolSize; \[SerializeField\] private PooledObject objectToPool; // Store the pooled objects in a collection private Stack stack; private void Start() { SetupPool(); } // Creates the pool (invoke when the lag is not noticeable) private void SetupPool() { stack = new Stack(); PooledObject instance = null; for (int i = 0; i < initPoolSize; i++) { instance = Instantiate(objectToPool); instance.Pool = this; instance.gameObject.SetActive(false); stack.Push(instance); } } The SetupPool method populates the object pool . Create a new stack of PooledObjects and then instantiate copies of the objectToPool to fill it with initPoolSize elements . Invoke SetupPool in Start to make sure that it runs once during gameplay . © 2024 Unity Technologies60 of 147 | unity.com | Factory pattern | Object pool | Singleton pattern | You’ll also need methods to retrieve a pooled item (GetPooledObject) and return one to the pool (ReturnToPool): // returns the first active GameObject from the pool public PooledObject GetPooledObject() { // if the pool is not large enough, instantiate a new PooledObjects if (stack.Count == 0) { PooledObject newInstance = Instantiate(object ToPool); newInstance.Pool = this; return newInstance; } // otherwise, just grab the next one from the list PooledObject nextInstance = stack.Pop(); nextInstance.gameObject.SetActive(true); return nextInstance; } public void ReturnToPool(PooledObject pooledObject) { stack.Push(pooledObject); pooledObject.gameObject.SetActive(false); } } GetPooledObject creates a new PooledObject only if the pool is empty . Otherwise, it simply returns the next available element . If the pool size is sufficient, most of the time you should only get a reference to an existing GameObject . The client calling GetPooledObject then needs to move/rotate the pooled object into place . © 2024 Unity Technologies61 of 147 | unity.com | Factory pattern | Object pool | Singleton pattern | Each pooled element will have a small PooledObject component, just to reference the ObjectPool: public class PooledObject : MonoBehaviour { private ObjectPool pool; public ObjectPool Pool { get => pool; set => pool = value; } public void Release() { pool.ReturnToPool(this); } } Calling Release disables the GameObject and returns it to the pool queue. The accompanying project includes an ExampleGun script attached to a GameObject . That stores a reference to the object pool . When the user shoots, the weapon script invokes its GetPooledObject method instead of calling Object.Instantiate . On the projectile itself is an ExampleProjectile script and a PooledObject script . The ExampleProjectile has a Deactivate method to disable each fired bullet GameObject after a few seconds, returning it to the available pool . Disable and reuse pooled objects © 2024 Unity Technologies62 of 147 | unity.com | Factory pattern | Object pool | Singleton pattern | This way, you can appear to fire hundreds of bullets offscreen when in reality, you simply disable and recycle them. Just make sure your pool size is large enough to show the concurrently active objects . If you need to exceed the pool size, the pool can instantiate extra objects . However, most of the time, it pulls from the existing inactive objects . If you want to see an implementation of creating an object pool from scratch, refer to the ManualExample folder in the sample project . UnityEngine.Pool Unity includes a built-in object pooling system via the UnityEngine .Pool namespace (available in Unity 2021 LTS and later), so there’s no need to create your own PooledObject or ObjectPool classes like in the previous example . This gives you a stack-based ObjectPool to track your objects with the object pool pattern . Depending on your needs, you can also use a CollectionPool(List, HashSet, Dictionary, etc.) The sample project shows how to rebuild the manually-created projectile pool using built-in ObjectPool from UnityEngine.Pool: using UnityEngine.Pool; public class RevisedGun : MonoBehaviour { ... // Stack-based ObjectPool available with Unity 2021 and above private IObjectPool objectPool; // Throw an exception if we try to return an existing item, already in the pool \[SerializeField\] private bool collectionCheck = true; // Extra options to control the pool capacity and maximum size \[SerializeField\] private int defaultCapacity = 20; \[SerializeField\] private int maxSize = 100; © 2024 Unity Technologies63 of 147 | unity.com | Factory pattern | Object pool | Singleton pattern | private void Awake() { objectPool = new ObjectPool (CreateProjectile,OnGetFromPool, OnReleaseToPool, OnDestroyPooledObject, collectionCheck, defaultCapacity, maxSize); } // Invoked when creating an item to populate the object pool private RevisedProjectile CreateProjectile() { RevisedProjectile projectileInstance = Instantiate(projectilePrefab); projectileInstance.ObjectPool = objectPool; return projectileInstance; } // Invoked when returning an item to the object pool private void OnReleaseToPool(RevisedProjectile pooledObject) { pooledObject.gameObject.SetActive(false); } // Invoked when retrieving the next item from the object pool private void OnGetFromPool(RevisedProjectile pooledObject) { pooledObject.gameObject.SetActive(true); } // Invoked when we exceed the maximum number of pooled items (i.e. destroy the pooled object) private void OnDestroyPooledObject(RevisedProjectile pooledObject) { Destroy(pooledObject.gameObject); } private void FixedUpdate() { ... } } © 2024 Unity Technologies64 of 147 | unity.com | Factory pattern | Object pool | Singleton pattern | Much of the script works for the original ExampleGun script . The ObjectPool constructor, however, now includes the helpful ability to set up some logic when: —First creating a pooled item to populate the pool —Taking an item from the pool —Returning an item to the pool —Destroying a pooled object (e.g., if you hit a maximum limit) You must then define some corresponding methods to pass into the constructor . Note how the built-in ObjectPool also includes options for a default pool size and maximum pool size . Items exceeding the max pool size trigger an action to self-destruct, keeping memory usage in check . The projectile script gets a small modification to keep a reference to the ObjectPool . This makes releasing the object back to the pool a little more convenient . public class RevisedProjectile : MonoBehaviour { ... private IObjectPool objectPool; // public property to give the projectile a reference to its ObjectPool public IObjectPool ObjectPool { set => object Pool = value; } ... } The UnityEngine .Pool API makes setting up object pools faster, now that you don’t have to rebuild the pattern from scratch . That’s one less wheel to reinvent . Pros and cons Object pools are a powerful tool for optimizing performance, but note there are considerations associated with every design pattern . The object pool offers these advantages: —Reduced garbage collection overhead: Reusing objects instead of creating and destroying them reduces the need for garbage collection . This can prevent performance spikes and stutters at runtime . © 2024 Unity Technologies65 of 147 | unity.com | Factory pattern | Object pool | Singleton pattern | —Improved performance: Initializing objects ahead of time and reactivating them when needed can lead to smoother performance in certain fast-paced games (e.g., shooters). —Optimized initialization: Optimize resources and application startup times by spreading object creation over less critical moments . Keep in mind, however, these drawbacks: —Increased complexity: Object pools require more management. Be sure to initialize and release objects properly . Otherwise, this can introduce errors or bugs . —Memory usage: While object pools reduce garbage collection, they can lead to higher static memory usage . Object pools store a predefined number of objects in memory, even if they are unused . Balance the pool size according to your project needs . —More management: Determining the optimal size of an object pool can be challenging . Too small of a pool might lead to frequent allocations, while too large of a pool may underutilize the allocated memory . Improvements The example above is a simple one . When deploying an object pool for actual projects, consider the following upgrades: —Make it static or a singleton: If you need to generate pooled objects from a variety of sources, consider making the object pool static and reusable . This makes it accessible anywhere in your application but precludes use of the Inspector . Alternatively, combine the object pool pattern with the singleton pattern to make it globally accessible for ease of use . —Use a dictionary to manage multiple pools: If you have a number of different Prefabs that you want to pool, store them in separate pools and store a key-value pair so you know which pool to query (the InstanceID of the Prefab can work as the unique key). —Remove unused GameObjects creatively: Part of utilizing an object pool effectively is hiding unused objects and returning them to the pool . Use every opportunity to deactivate a pooled object (e.g., offscreen, hidden by explosions, etc.) —Check for errors: Avoid releasing an object that is already in the pool . When creating an instance of an ObjectPool, you can set the collectionCheck parameter to true . This throws an exception in the Editor if you try to return an object to the pool that is already in it . —Add a maximum size/cap: Lots of pooled objects consume memory . Use the maxSize parameter in the ObjectPool constructor to cap the size of your pool . How you use object pools will vary by application . This pattern commonly appears when a gun or weapon needs to fire multiple projectiles like in a bullet hell shooter . Every time you instantiate a large number of objects, you run the risk of causing a small pause from a garbage-collection spike . An object pool alleviates this issue to keep your gameplay smooth . © 2024 Unity Technologies66 of 147 | unity.com Singleton pattern Singletons get a bad rap . If you’re new to Unity development, the singleton is likely one of the first recognizable patterns that you will encounter . It’s also one of the most maligned design patterns . According to the original Gang of Four, the singleton pattern: —Ensures that a class can only instantiate one instance of itself —Gives global access to that single instance This is useful if you need to have exactly one object that coordinates actions across the entire scene . For example, you might want exactly one game manager in your scene to direct the main game loop . You also probably only want one file manager writing to your filesystem at a time . Central, manager-level objects like these tend to be good candidates for the singleton pattern . The SimpleSingleton destroys any instances beyond the first . © 2024 Unity Technologies67 of 147 | unity.com | Object pool | Singleton pattern | Command pattern | In Game Programming Patterns, it says that singletons do more harm than good and lists it as an anti-pattern . This poor reputation is because the pattern’s ease of use lends itself to abuse . Developers tend to apply singletons in inappropriate situations, introducing unnecessary global states or dependencies . Let’s examine how to build a singleton in Unity and weigh its strengths and weaknesses . Then you can decide whether it’s worth incorporating into your application . Example: Simple singleton One of the simplest singletons might look like this: using UnityEngine; public class SimpleSingleton : MonoBehaviour { public static SimpleSingleton Instance; private void Awake() { if (Instance == null) { Instance = this; } else { Destroy(gameObject); } } } The public static Instance will hold the one instance of Singleton in the scene . In the Awake method, check if it’s already set . If Instance is currently null, then Instance gets set to this specific object . This must be the first singleton in the scene . Otherwise, this instance must be a duplicate; you call Destroy(gameObject) to guarantee your singleton only has one such component in the scene . If you attach the script to more than one GameObject in the hierarchy at runtime, the logic in Awake will keep the first object and then discard the rest . © 2024 Unity Technologies68 of 147 | unity.com | Object pool | Singleton pattern | Command pattern | The singleton pattern only allows one instance . The Instance field is public and static . Any component has global access to the lone singleton from anywhere in the scene . Persistence and lazy instantiation The SimpleSingleton works as written . However, it does suffer from two issues: Loading a new scene destroys the GameObject . —You need to set up the singleton in the hierarchy before using it . —Because the singleton often serves as an omnipresent manager script, you can benefit from making it persistent using a DontDestroyOnLoad . © 2024 Unity Technologies69 of 147 | unity.com | Object pool | Singleton pattern | Command pattern | Further, you can use lazy instantiation to build the singleton automatically when you first need it . You only need some logic to create a GameObject and then add the appropriate Singleton component . The improved singleton looks something like this: public class Singleton : MonoBehaviour { private static Singleton instance; public static Singleton Instance { get { if (instance == null) { SetupInstance(); } return instance; } } private void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(this.gameObject); } else { Destroy(gameObject); } } private static void SetupInstance() { instance = FindObjectOfType(); if (instance == null) { GameObject gameObj = new GameObject(); gameObj.name = “Singleton”; instance = gameObj.AddComponent(); DontDestroyOnLoad(gameObj); } } © 2024 Unity Technologies70 of 147 | unity.com | Object pool | Singleton pattern | Command pattern | Instance is now a public property referring to the private instance backing field . The first time you refer to the singleton, check for the existence of Instance in the getting . If it doesn’t exist, the SetupInstance method creates a GameObject with the appropriate component . DontDestroyOnLoad(gameObject) prevents a scene load from clearing the singleton from the hierarchy . The singleton instance is now persistent, staying active even if you change scenes in your game . Using generics Neither version of the script addresses how to create different singletons within the same scene . For example, if you want a singleton that behaves as an AudioManager and another singleton as a GameManager, they can’t coexist right now . You’ll need to duplicate the relevant code and paste the logic into each class . Instead, make a generic version of the script like so: public class Singleton : MonoBehaviour where T : Component { private static T instance; public static T Instance { get { if (instance == null) { instance = (T)FindObjectOfType(typeof(T)); if (instance == null) { SetupInstance(); } } return instance; } } public virtual void Awake() { RemoveDuplicates(); } private static void SetupInstance() { instance = (T)FindObjectOfType(typeof(T)); if (instance == null) { © 2024 Unity Technologies71 of 147 | unity.com | Object pool | Singleton pattern | Command pattern | GameObject gameObj = new GameObject(); gameObj.name = typeof(T).Name; instance = gameObj.AddComponent(); DontDestroyOnLoad(gameObj); } } private void RemoveDuplicates() { if (instance == null) { instance = this as T; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } } } This allows you to turn any class into a singleton . When you declare your class, simply inherit from the generic singleton . For example, you can make a MonoBehaviour called GameManager into a singleton by declaring it like so: public class GameManager: Singleton { // ... } Then you can always refer to the public static GameManager.Instance whenever you need it . © 2024 Unity Technologies72 of 147 | unity.com | Object pool | Singleton pattern | Command pattern | Pros and cons Singletons are unlike the other patterns in this guide in that they break with SOLID principles in several respects . Many developers dislike them for a variety of reasons: —Singletons require global access: Because you use them as global instances, they can hide many dependencies, making bugs much harder to troubleshoot . —Singletons make testing difficult: Unit tests must be independent of each other . Because the singleton can change the state of many GameObjects across the scene, they can interfere with your testing . —Singletons encourage tight coupling: Most of the patterns in this guide attempt to decouple dependencies . Singletons do the opposite . Tight coupling makes refactoring difficult . If you change one component, you can affect any component connected to it, leading to unclean code . The nays against singletons are considerable . If you’re building an enterprise-level game that you expect to maintain for years to come, you might want to steer clear of singletons . But many games are not enterprise-level applications . You don’t need to extend them continuously the same way you might for business software . In fact, singletons offer some benefits that you may find attractive if you’re building a small game that doesn’t need extensibility: —Singletons are relatively quick to learn: The core pattern itself is somewhat straightforward . —Singletons are user-friendly: To use your singleton from another component, simply reference the public and static instance . The singleton instance is always available on demand from any object in your scene . —Singletons are performant: Because you always have global access to the static singleton instance, you can avoid caching the results of GetComponent or Find operations, which tend to be slow . In this way, you can make a manager object (e.g., game flow manager or audio manager) that is always accessible from every other GameObject in your scene . Also, if you’ve implemented the object pool, you can design your pooling system as a singleton to make getting pooled objects easier . If you decide to use singletons in your project, keep them to a minimum . Don’t use them indiscriminately. Reserve the singletons for a handful of scripts that can benefit from global access . © 2024 Unity Technologies73 of 147 | unity.com Command pattern One of the original Gang of Four patterns, command is useful whenever you want to track a specific series of actions . You’ve likely seen the command pattern at work if you’ve played a game that uses undo/redo functionality or keeps your input history in a list . Imagine a strategy game where the user can plan several turns before actually executing them . That’s the command pattern . Instead of invoking a method directly, the command pattern allows you to encapsulate one or more method calls as a “command object .” Storing actions with the command pattern Storing these command objects in a collection like a queue or a stack allows you to control the timing of their execution . This functions as a small buffer . You can then potentially delay a series of actions for later playback or undo them . © 2024 Unity Technologies74 of 147 | unity.com | Singleton pattern | Command pattern | State pattern | To implement the command pattern, you need a general object that will contain your action . This command object will hold what logic to perform and how to undo it . The command object and command invoker There are a number of ways to implement this, but here’s one version that uses an interface: public interface ICommand { void Execute(); void Undo(); } In this case, every gameplay action will apply the ICommand interface (you could also implement this with an abstract class). Each command object will be responsible for its own Execute and Undo methods . Thus, adding more commands to your game won’t affect any existing ones . You’ll need another class to execute and undo commands . Create a CommandInvoker class . In addition to the ExecuteCommand and UndoCommand methods, it has an undo stack to hold the sequence of command objects. public class CommandInvoker { private static Stack undoStack = new Stack(); public static void ExecuteCommand(ICommand command) { command.Execute(); undoStack.Push(command); } public static void UndoCommand() { if (undoStack.Count > 0) { ICommand activeCommand = undoStack.Pop(); activeCommand.Undo(); } } } © 2024 Unity Technologies75 of 147 | unity.com | Singleton pattern | Command pattern | State pattern | Example: Undoable movement Let’s imagine you want to move your player around a maze in your application . You could create a PlayerMover responsible for shifting the player’s position: public class PlayerMover : MonoBehaviour { \[SerializeField\] private LayerMask obstacleLayer; private const float boardSpacing = 1f; public void Move(Vector3 movement) { transform.position = transform.position + movement; } public bool IsValidMove(Vector3 movement) { return !Physics.Raycast(transform.position, movement, board Spacing, obstacleLayer); } } You’ll pass in a Vector3 into the Move method to guide the player along the four compass directions . You can also use a raycast to detect the walls in the appropriate LayerMask . Of course, implementing what you want to apply to the command pattern is separate from the pattern itself . The command pattern can make actions undoable . © 2024 Unity Technologies76 of 147 | unity.com | Singleton pattern | Command pattern | State pattern | To follow the command pattern, capture the PlayerMover’s Move method as an object . Instead of calling Move directly, create a new class, MoveCommand, that implements the ICommand interface: public class MoveCommand : ICommand { PlayerMover playerMover; Vector3 movement; public MoveCommand(PlayerMover player, Vector3 moveVector) { this.playerMover = player; this.movement = moveVector; } public void Execute() { playerMover.Move(movement); } public void Undo() { playerMover.Move(-movement); } } ICommand requires an Execute method to store what you’re trying to accomplish. Whatever logic you want to accomplish goes in here, so invoke Move with the movement vector . ICommand also needs an Undo method to restore the scene back to its previous state . In this case, the Undo logic subtracts the movement vector, essentially pushing the player in the opposite direction . The MoveCommand stores any parameters that it needs to execute . Set these up with a constructor . In this case, you save the appropriate PlayerMover component and the movement vector . Once you create the command object and save its needed parameters, use the CommandInvoker’s static ExecuteCommand and UndoCommand methods to pass in your MoveCommand . This runs the MoveCommand’s Execute or Undo and tracks the command object in the undo stack . © 2024 Unity Technologies77 of 147 | unity.com | Singleton pattern | Command pattern | State pattern | The CommandInvoker, ICommand, and MoveCommand The InputManager doesn’t call the PlayerMover’s Move method directly . Instead, add an extra method, RunMoveCommand, to create a new MoveCommand and send it to the CommandInvoker . private void RunPlayerCommand(PlayerMover playerMover, Vector3 movement) { if (playerMover == null) { return; } if (playerMover.IsValidMove(movement)) { ICommand command = new MoveCommand(playerMover, movement); CommandInvoker.ExecuteCommand(command); } } Then, set up the various onClick events of the UI Buttons to call RunPlayerCommand with the four movement vectors . Check out the sample project for implementation details for the InputManager or set up your own input using the keyboard or gamepad . Your player can now navigate the maze . Click the Undo button so you can backtrack to the beginning square. © 2024 Unity Technologies78 of 147 | unity.com | Singleton pattern | Command pattern | State pattern | Pros and cons Implementing replayability or undoability is as simple as generating a collection of command objects. You can also use the command buffer to play back actions in sequence with specific controls . For example, think about a fighting game where a series of specific button clicks triggers a combo move or attack . Storing player actions with the command pattern makes setting up such combos much simpler . On the flip side, the command pattern introduces more structure, just like the other design patterns . You’ll have to decide where these extra classes and interfaces provide enough benefit for deploying command objects in your application . Improvements Once you learn the basics, you can affect the timing of commands and play them back in succession or reverse, depending on the context . Consider the following when incorporating the command pattern: —Create more commands: The sample project only includes one type of command object, the MoveCommand . You can create any number of command objects that implement ICommand and track them using the CommandInvoker . —Adding redo functionality is a matter of adding another stack: When you undo a command object, push it onto a separate stack that tracks redo operations . This way you can quickly cycle through the undo history or redo those actions. Clear out the redo stack when the user invokes an entirely new movement (you can find an implementation in the accompanying sample project). Undo and redo stacks © 2024 Unity Technologies79 of 147 | unity.com | Singleton pattern | Command pattern | State pattern | —Use a different collection for your buffer of command objects: A queue might be handier if you want first in, first out (FIFO) behavior. If you use a list, track the currently active index; commands before active index are undoable . Commands after the index are redoable . A list or other collection acts as a command buffer . —Limit the size of the stacks: Undo and redo operations can quickly blow up out of control . Limit the stacks to the last number of commands . —Pass any necessary parameters into the constructor: This helps encapsulate the logic as seen in the MoveCommand example . The CommandInvoker, like other external objects, doesn’t see the inner workings of the command object, only invoking Execute or Undo . Give the command object any data needed to work when calling the constructor . © 2024 Unity Technologies80 of 147 | unity.com State pattern Imagine constructing a playable character . At one moment, the character may be standing on the ground . Move the controller, and it appears to run or walk . Press the jump button and the character leaps into midair . A few frames later, it lands and reenters its idle, standing position . States and state machines Games are interactive, and they force us to track many systems that change at runtime . If you draw a diagram that represents the different states of your character, you might come up with something like this: A simple state diagram © 2024 Unity Technologies81 of 147 | unity.com | Command pattern | State pattern | Observer pattern | This describes something called a finite-state machine (FSM), which resembles a flowchart with a few differences: —The diagram consists of a number of states (Idling/Standing, Walking, Running, Jumping, and so on), and only one current state is active at a given time. —Each state can trigger a transition to one other state based on conditions at runtime . —When a transition occurs, the output state becomes the new active state . In game development, one typical use case for an FSM is for tracking the internal state of a game actor or prop . To set up a basic state machine in code, you might use a naive approach with an enum and a switch statement . public enum PlayerControllerState { Idle, Walk, Jump } public class UnrefactoredPlayerController : MonoBehaviour { private PlayerControllerState state; private void Update() { GetInput(); switch (state) { case PlayerControllerState.Idle: Idle(); break; case PlayerControllerState.Walk: Walk(); break; case PlayerControllerState.Jump: Jump(); break; } } private void GetInput() { © 2024 Unity Technologies82 of 147 | unity.com | Command pattern | State pattern | Observer pattern | // process walk and jump controls } private void Walk() { // walk logic } private void Idle() { // idle logic } private void Jump() { // jump logic } } This would work, but the PlayerController script can get messy quickly. Adding more states and complexity can make the class balloon up. It also requires us to revisit the PlayerController script’s internals each time we want to make a change . In keeping with SOLID principles, we want to make our classes shorter and more focused . Keeping them closed for modification but open for extension ensures better scalability and manageability . Example: Simple state pattern Fortunately, the state pattern can help you reorganize the logic . According to the original Gang of Four, the state pattern solves two problems: —An object should change its behavior when its internal state changes . —State-specific behavior is defined independently . Adding new states does not impact the behavior of existing states . While the above example UnrefactoredPlayerController class can track state changes, it does not satisfy the second issue . You want to minimize the impact on existing states when you add new ones . Instead, you can encapsulate a state as an object . © 2024 Unity Technologies83 of 147 | unity.com | Command pattern | State pattern | Observer pattern | Imagine structuring each state like this: The encapsulated state with an Entry, Exit, and Execute Here you enter the state and loop each frame until a condition causes control flow to exit . To implement this pattern, create an interface, IState: public interface IState { public void Enter() { // code that runs when we first enter the state } public void Execute() { // per-frame logic, include condition to transition to a new state } public void Exit() { // code that runs when we exit the state } } © 2024 Unity Technologies84 of 147 | unity.com | Command pattern | State pattern | Observer pattern | Each concrete state in your game will implement the IState interface: —An Entry: This logic executes when first entering the state . —Execute: This logic runs every frame (sometimes called Tick or Update). You can further segment the Execute method as MonoBehaviour does with Update, FixedUpdate, LateUpdate, and so on . Any functionality in the Execute runs each frame until a condition is detected that triggers a state change . —An Exit: Code here runs before leaving the state and transitioning to a new state . You’ll need to create a class for each state that implements IState . In the sample project, a separate class has been set up for WalkState, IdleState, and JumpState . Another class, the StateMachine, will then manage how control flow enters and exits the states . With the three example states, the StateMachine could look like this: \[Serializable\] public class StateMachine { public IState CurrentState { get; private set; } public WalkState walkState; public JumpState jumpState; public IdleState idleState; public void Initialize(IState startingState) { CurrentState = startingState; startingState.Enter(); } public void TransitionTo(IState nextState) { CurrentState.Exit(); CurrentState = nextState; nextState.Enter(); } public void Execute() { if (CurrentState != null) { CurrentState.Execute(); } } } © 2024 Unity Technologies85 of 147 | unity.com | Command pattern | State pattern | Observer pattern | To follow the pattern, the StateMachine references a public object for each state under its management (in this case, walkState, jumpState, and idleState). Because StateMachine doesn’t inherit from MonoBehaviour, use a constructor to set up each instance: public StateMachine(PlayerController player) { this.walkState = new WalkState(player); this.jumpState = new JumpState(player); this.idleState = new IdleState(player); } You can pass in any parameters needed to the constructor . In the sample project, a PlayerController is referenced in each state . You then use that to update each state per frame (see the IdleState example below). Note the following about the StateMachine: —The Serializable attribute allows us to display the StateMachine (and its public fields) in the Inspector. Another MonoBehaviour (e.g., a PlayerController or EnemyController) can then use the StateMachine as a field . —The CurrentState property is read-only . The StateMachine itself does not explicitly set this field . An external object like the PlayerController can then invoke the Initialize method to set the default State . —Each State object determines its own conditions for calling the TransitionTo method to change the currently active state . You can pass in any necessary dependencies (including the State Machine itself) to each state when setting up the StateMachine instance . In the example project, the PlayerController already includes a reference to the StateMachine, so you only pass in one player parameter . Each state object will manage its own internal logic, and you can make as many states as needed to describe your GameObject or component . Each one gets its own class that implements IState . In keeping with the SOLID principles, adding more states has minimal impact on any previously created states . © 2024 Unity Technologies86 of 147 | unity.com | Command pattern | State pattern | Observer pattern | Here’s an example of the IdleState: public class IdleState : IState { private PlayerController player; public IdleState(PlayerController player) { this.player = player; } public void Enter() { // code that runs when we first enter the state } public void Execute() { // Here we add logic to detect if the conditions exist to // transition to another state ... } public void Exit() { // code that runs when we exit the state } } Again, use the constructor to pass in the PlayerController object . In the example, this player contains a reference to the StateMachine and everything else needed for the Update logic . The idleState monitors the Character Controller’s velocity or jump state and then invokes the StateMachine’s TransitionTo method appropriately . Review the sample project for the WalkState and JumpState implementation as well. Rather than have one large class that switches behavior, each state has its own update logic . This way, states can function independently from one another . © 2024 Unity Technologies87 of 147 | unity.com | Command pattern | State pattern | Observer pattern | Pros and cons The state pattern can help you adhere to the SOLID principles when setting up internal logic for an object . Each state is relatively small and just tracks the conditions for transitioning into another state . In keeping with the open-closed principle, you can add more states without affecting existing ones and avoid cumbersome switch or if statements . On the other hand, if you only have a few states to track, the extra structure can be overkill . This pattern might only make sense if you expect your states to grow to a certain complexity . The state pattern tracks an object’s internal state . Improvements The capsule in the sample project changes color, and the UI updates with the player’s internal state . In a real-world example, you could have much more complex effects to accompany the state changes: —Combine the state pattern with animation: One common application for the state pattern is animation . The player or enemy characters are often represented as primitives (a capsule) on a macro level. Then, you can have animated geometry that reacts to internal state changes, so the game actor can appear to be running, jumping, swimming, climbing, etc . If you’ve used Unity’s Animator window, you’ll notice that its workflow pairs well with the state pattern . Each animation clip occupies one state, with only one state active at a time . © 2024 Unity Technologies88 of 147 | unity.com | Command pattern | State pattern | Observer pattern | An example of an Animator state graph: Compare its structure with a StateMachine . —Add events: To communicate state changes to outside objects, you might want to add events (see the observer pattern). Having an event on entering or exiting a state can notify the relevant listeners and have them respond at runtime . —Add a hierarchy: As you begin to describe more complex entities with the state pattern, you might want to implement hierarchical state machines . Inevitably some states will be similar; for example, if the player or game actor is grounded, it can duck or jump whether in a WalkingState or RunningState. If you implement a SuperState, you can keep common behaviors together . Then using inheritance, you can override anything specific in a sub-state . For example, you might first declare a GroundedState. You could then inherit a RunningState or WalkingState from that . © 2024 Unity Technologies89 of 147 | unity.com | Command pattern | State pattern | Observer pattern | —Implement simple AI: Finite-state machines can also be useful in generating basic enemy AI . An FSM approach to building an NPC brain might look like this: A simple AI based on state patterns Here’s the state pattern at work again in a completely different context . Every state represents an action, such as attacking, fleeing, or patrolling . Only one state is active at a time, with each state determining its transition to the next one . Example: Game states In the previous example, the character’s material color and UI label update when the player moves, jumps, or stands idle . Apply the state pattern to wherever you need to track an object’s internal state . Character animation is a prime example – so much so that Unity includes a built-in state machine into its AnimatorController . The sample project includes a more advanced state machine for another practical application of the state pattern – maintaining your game states . The demo itself uses this state machine to manage its behavior at runtime . © 2024 Unity Technologies90 of 147 | unity.com | Command pattern | State pattern | Observer pattern | Inside the Scripts/StateMachine folder are several components to build and customize a more sophisticated state machine: —The StateMachine tracks an object’s current state and handles transitions between various states . It executes each state’s lifecycle methods and monitors state changes in a loop . —An IState interface defines standardized functionality for each state object (lifecycle methods such as Enter, Execute, and Exit as well as transitions to other states). —AbstractState implements the IState interface and serves as the base class for all states . To set up the state pattern, define concrete states: —A general purpose State class can execute predefined actions upon entry and execution . —DelayState introduces a waiting period before transitioning to the next state, useful for progress bars or load screens . —LoadSceneState and UnloadLastSceneState are state classes designed for managing scene transitions . These states can load or unload scenes additively, allowing us to divide the project content into individual Unity scenes . To transition to other states, implement logic that responds to specific conditions or events . This allows for state changes due to game events or user input: —The ILink interface defines a transition between states . —Implement an EventLink to trigger a transition based on a specific C# event . —Implement an EventSOLink to trigger a transition based on a specific ScriptableObject- based event . —Implement a SceneEventSOLink to trigger a transition based on a specific scene- loading event . The state machine uses several event channels (using both custom C# events and ScriptableObject-based events) to communicate with any other systems in the application. Put all of these together and you can build a state machine that works with many different types of applications. Just create additional states or transitions as your project requires. In the sample project, the GameManager uses this state machine to drive the application’s general flow . The system uses ScriptableObject-based events to transition from the menu UIs to demo content . © 2024 Unity Technologies91 of 147 | unity.com | Command pattern | State pattern | Observer pattern | User interactions (e.g. button clicks) notify the GameManager to change its internal state. The UI then updates according to this state diagram: The GameManager state diagram . While the example focuses on UI updates, the GameManager states can be customized to meet your application’s specific needs . Here, using the state pattern makes it easier to assemble your application from smaller parts . Each menu button raises an event . That event, in turn, triggers the transition to a new state and loads the corresponding demo content . Introducing new functionality is as straightforward as adding a new state and configuring the necessary transitions . In keeping with SOLID, building a new part to your application does not affect the existing project . © 2024 Unity Technologies92 of 147 | unity.com | Command pattern | State pattern | Observer pattern | Explore the QuizU Project Want to see more design patterns in action? The QuizU sample project also showcases the use of MVP and state patterns in its main menus, built using the UI Toolkit . This project also features a variation of this state machine in the main game loop . You can explore the project along with its companion series of articles on Unity Discussions . The QuizU project uses the state pattern for managing game states . © 2024 Unity Technologies93 of 147 | unity.com At runtime, any number of things can occur in your game . What happens when you destroy an enemy? How about when you collect a power-up or complete an objective? You often need a mechanism that allows some objects to notify others without directly referencing them, thereby creating unnecessary dependencies . The observer pattern is a common solution to this sort of problem . It allows your objects to communicate but stay loosely coupled using a “one-to-many” dependency . When one object changes states, all dependent objects get notified automatically . This is analogous to a radio tower that broadcasts to many different listeners . The observer pattern functions like a radio tower . The subject broadcasts to the observers . Observer pattern © 2024 Unity Technologies94 of 147 | unity.com | State pattern | Observer pattern | Model View Presenter (MVP) | The object that is broadcasting is called the subject . The other objects that are listening are called the observers . This pattern loosely decouples the subject, which doesn’t really know the observers or care what they do once they receive the signal . While the observers have a dependency on the subject, the observers themselves don’t know about each other . Events The observer pattern is so widespread that it’s built into the C# language . You can design your own subject-observer classes but it’s usually unnecessary. Remember the point about reinventing the wheel? C# already implements the pattern using events . An event is simply a notification that indicates something has happened . It involves a few parts: —The publisher (the subject) creates an event based on a delegate, establishing a specific function signature . The event is just some action that the subject will perform at runtime (e.g., take damage, click a button, and so on). —The subscribers (the observers) then each make a method called an event handler, which must match the delegate’s signature . —Each observer’s event handler subscribes to the publisher’s event . You can have as many observers join the subscription as necessary . All of them will wait for the event to trigger . —When the publisher signals the occurrence of an event at runtime, you say that it raises the event . This, in turn, invokes the subscribers’ event handlers, which run their own internal logic in response . In this way, you make many components react to a single event from the subject . If the subject indicates that a button is clicked, the observers could play back an animation or sound, trigger a cutscene, or save a file . Their response could be anything, which is why you’ll frequently find the observer pattern used to send messages between objects. © 2024 Unity Technologies95 of 147 | unity.com | State pattern | Observer pattern | Model View Presenter (MVP) | The subject raises the event to notify the observers . Example: Simple subject and observer For example, you might define a basic subject/publisher like this: using UnityEngine; using System; public class Subject: MonoBehaviour { public event Action ThingHappened; public void DoThing() { ThingHappened?.Invoke(); } } Here, you inherit from MonoBehaviour to attach to a GameObject more easily, but that’s not required. © 2024 Unity Technologies96 of 147 | unity.com | State pattern | Observer pattern | Model View Presenter (MVP) | While you are free to define your own custom delegate, System .Action works in most cases . If you need to send parameters with the event, use the Action delegate and pass them as a List within the angle brackets (up to 16 parameters). ThingHappened is the actual event, which the subject invokes in the DoThing method . To listen to the event, you can build an example Observer class . Here you inherit from MonoBehaviour for convenience, but that’s not required. public class Observer : MonoBehaviour { \[SerializeField\] private Subject subjectToObserve; private void OnThingHappened() { // any logic that responds to event goes here Debug.Log(“Observer responds”); } private void OnEnable() { if (subjectToObserve != null) { subjectToObserve.ThingHappened += OnThingHappened; } } private void OnDisable() { if (subjectToObserve != null) { subjectToObserve.ThingHappened -= OnThingHappened; } } } Attach this component to a GameObject and reference the subjectToObserver in the Inspector order to listen for the ThingHappened event . The OnThingHappened method can contain any logic the observer executes in response to the event . Often developers add the prefix “On” to denote the event handler (just use the naming convention from your style guide). © 2024 Unity Technologies97 of 147 | unity.com | State pattern | Observer pattern | Model View Presenter (MVP) | In the Awake or Start, you can subscribe to the event with the += operator . That combines the observer’s OnThingHappened method with the subject’s ThingHappened . If anything runs the subject’s DoThing method, that raises the event . Then, the observer’s OnThingHappened event handler invokes automatically and prints the debug statement . Note: If you delete or remove the observer at runtime while it’s still subscribed to the ThingHappened, calling that event could result in an error . Thus, it’s important to unsubscribe from the event in the MonoBehaviour’s OnDestroy method with -= operator . Unsubscribing from events in the MonoBehaviour’s OnDestroy method with the -= operator is crucial . It prevents memory leaks, avoids null references, and keeps the code clean by managing event subscriptions throughout the Unity object’s lifecycle . Naming conventions There isn’t a single convention for naming the parts of the observer pattern . In your style guide, be sure to identify how to name these parts: —Events: This is the actual action or signal . In this example, the event is called ThingHappened . —Event handlers: This is the logic that happens in response to the event . In this example, the event handler is prefixed with “On .” The event handler OnThingHappened executes in response to the ThingHappened event . —Event-raising methods: This is a method that invokes the event . In this example, DoThing is the event-raising method . Events are often named with descriptive verbs indicating the action or occurrence (e .g . DoorOpened, DamageReceived). Using a naming convention for the events, their triggers, and their responses can help make their relationship more clear . For more information about creating your team’s own C# style guide, see the e-book, Create a C# style guide: Write cleaner code that scales . You can apply the observer pattern to nearly everything that happens during the course of gameplay . For example, your game could raise an event every time the player destroys an enemy or collects an item . If you need a statistics system that tracks scores or achievements, the observer pattern could allow you to create one without affecting the original gameplay code . © 2024 Unity Technologies98 of 147 | unity.com | State pattern | Observer pattern | Model View Presenter (MVP) | Many Unity applications apply events to: —Objectives or goals —Win/lose conditions —PlayerDeath, EnemyDeath, or Damage —Item pickups —User interface The subject simply needs to raise an event at the opportune time, and then any number of observers can subscribe . The observer sample scene In the sample project, the ButtonSubject allows the user to invoke a Clicked event with the mouse button . Several other GameObjects with the AudioObserver and ParticleSystemObserver components can then respond in their own ways to the event . Determining which object is a “subject” and which one is an “observer” only varies by usage . Anything that raises the event acts as the subject, and anything that responds to the event is the observer . Different components on the same GameObject can be subjects or observers . Even the same component can be a subject in one context and an observer in another . For instance, the AnimObserver in the example adds a little bit of movement to the button when clicked . It acts as an observer even though it’s part of the ButtonSubject GameObject . © 2024 Unity Technologies99 of 147 | unity.com | State pattern | Observer pattern | Model View Presenter (MVP) | UnityEvents and UnityActions Unity also includes a separate system of UnityEvents, which uses the UnityAction delegate from the UnityEngine .Events API . UnityEvents provide a graphical interface for the observer pattern . These offer an artist- friendly approach for quick prototyping or for setting up interactions without needing additional code . If you’ve used Unity’s UI system (e .g . , creating a UI Button’s OnClick event), you already have some experience with it. UnityEvents have graphical components for your setup . In this example, the button’s OnClick event invokes and triggers a response from the two AudioObservers’ OnThingHappened methods . You can thus set up a subject’s event without code . UnityEvents are useful if you want to allow designers or non-programmers to create gameplay events. However, be aware that they may be slower than their equivalent events or actions from the System namespace . Weigh performance versus usage when considering UnityEvents and UnityActions . See the Create a Simple Messaging System with Events module on Unity Learn for an example . © 2024 Unity Technologies100 of 147 | unity.com | State pattern | Observer pattern | Model View Presenter (MVP) | Pros and cons Implementing an event adds some extra work but does offer advantages: —The observer pattern helps decouple your objects: The event publisher does not need to know anything about the event subscribers themselves . Instead of creating a direct dependency between one class and another, the subject and observer communicate while maintaining a degree of separation . —You don’t have to build it: C# includes an established event system, and you can use System .Action delegate instead of defining your own delegates . Alternatively, Unity also includes UnityEvents and UnityActions . —Each observer implements its own event handling logic: In this way, each observing object maintains the logic it needs to respond . This makes it easier to debug and unit test . —It’s well-suited for user interface: Your core gameplay code can live separately from your UI logic . Your UI elements then listen for specific game events or conditions and respond appropriately . The MVP and MVC patterns use the observer pattern for this purpose . Be aware of these caveats for the observer pattern: —It adds additional complexity: Like other patterns, creating event-driven architecture does require more setup up front. Also, be careful deleting subjects or observers. Make sure you unregister observers in OnDestroy . —The observers need a reference to the class that defines the event: Observers still have a dependency to the class that is publishing the event . Using a static EventManager (below) that handles all events can help disentangle objects from each other. —Performance can be an issue: Event-driven architecture adds extra overhead . Large scenes and many GameObjects can hinder performance . Improvements While only a basic version of the observer pattern is introduced here, you can expand this to handle all of your game application’s needs . Consider these suggestions when setting up the observer pattern: —Use the ObservableCollection class: C# provides a dynamic ObservableCollection to track specific changes . It can notify your observers when items get added, removed, or when the list is refreshed . —Pass a unique instance ID as an argument: Each GameObject in the hierarchy has a unique instance ID . If you trigger an event that could apply to more than one observer, pass the unique ID into the event (use type Action). Then only run the logic in the event handler if the GameObject matches the unique ID. © 2024 Unity Technologies101 of 147 | unity.com | State pattern | Observer pattern | Model View Presenter (MVP) | —Create a static EventManager: Because events can drive much of your gameplay, many Unity applications use a static or singleton EventManager . This way, your observers can reference a central source of game events as the subject to make setup easier . The FPS Microgame has a good implementation of a static EventManager which implements custom GameEvents and includes static helper methods to add or+remove listeners . The Unity Open Project also showcases a game architecture that uses ScriptableObjects to relay UnityEvents . It uses events to play audio or load new scenes . —Create an event queue: If you have a lot of objects in your scene, you might not want to raise your events all at once . Imagine the cacophony of a thousand objects playing back sounds when you invoke a single event . Combining the observer pattern with the command pattern allows you to encapsulate your events into an event queue. Then you can use a command buffer to play back the events one at a time or selectively ignore them as necessary (e .g ., if you have a maximum number of objects that can make sounds at once). The observer pattern heavily figures into the Model View Presenter (MVP) architectural pattern, which is covered in more detail in the next chapter . © 2024 Unity Technologies102 of 147 | unity.com Model View Presenter (MVP) Model View Controller (MVC) is a family of design patterns commonly used when developing user interfaces . The general idea behind MVC is to separate the logical portion of your software from the data and from the presentation . Games, like other applications, rely on user interface to connect the player with the program’s underlying data . The UI and data components can often span various parts of the application, leading to potential issues if directly coupled . Tightly coupled components can introduce unnecessary dependencies, increasing the complexity of the codebase and making it more susceptible to bugs . The MVC pattern promotes modularity and looser coupling between parts of the application . This helps reduce unnecessary dependencies and potentially cut down on spaghetti code . Model View Controller (MVC) design pattern As the name implies, the MVC pattern splits your application into three layers: —The Model stores data: The Model is strictly a data container that holds values . It does not perform gameplay logic or run calculations . —The View is the interface: The View formats and renders a graphical presentation of your data on screen . —The Controller handles logic: Think of this as the brain . It processes the game data and calculates how the values change at runtime . © 2024 Unity Technologies103 of 147 | unity.com | Observer pattern | Model View Presenter (MVP) | Model-View-ViewModel | The Model, View, and Controller This separation of concerns also specifically defines how these three parts interact with one another . The Model manages the application data, while the View displays that data to the user . The Controller handles input and performs any decisions or calculations on the game data . Then it sends the results back to the Model . Thus, the Controller does not contain any game data unto itself . Nor does the View . The MVC design limits what each layer does . One part holds the data, another part processes the data, and the last one displays that data to the user . On the surface, you can think of this as an extension of the single-responsibility principle . Each part does one thing and does it well, which is one advantage of MVC architecture . Model View Presenter (MVP) and Unity When developing a Unity project with MVC, the existing UI framework (either the UI Toolkit or Unity UI) naturally functions as the View. Because the engine gives you a complete user interface implementation, you won’t need to develop individual UI components from scratch . However, following the traditional MVC pattern would require View-specific code to listen for any changes in the Model’s data at runtime . © 2024 Unity Technologies104 of 147 | unity.com | Observer pattern | Model View Presenter (MVP) | Model-View-ViewModel | While this is a valid approach, many Unity developers opt to use a variation on MVC where the Controller acts as an intermediary . Here, the View doesn’t directly observe the Model . Instead, it does something like this: This variation on MVC is called the Model View Presenter design, or MVP . MVP still preserves the separation of concerns with three distinct application layers . However, it slightly changes each part’s responsibilities . In MVP, the Presenter (called the Controller in MVC) acts as a go-between for the other layers . It retrieves data from the Model and then formats it for display in the View . MVP switches which layer handles input . Rather than the Controller, the View is responsible for handling user input . Note how the architecture leverages events and the observer pattern . While the View captures user inputs through UI elements like buttons, toggles, and sliders, it relays these inputs to the presenter via events . The Presenter then updates the model based on these interactions . Once the data has been updated, another event informs the Presenter . It then refreshes the UI using the modified data . Example: Health interface To formalize an MVP example, imagine a simple system to show the health of a character or item . You could stuff everything into one class that mixes the data and UI, but that wouldn’t scale well . Adding more functionality would become more complicated as you need to expand it . Instead, you can rewrite your health components in a more MVP-centric way . Divide your scripts into a HealthModel and HealthPresenter . MVP: A variation on MVC © 2024 Unity Technologies105 of 147 | unity.com | Observer pattern | Model View Presenter (MVP) | Model-View-ViewModel | In MVP, any object can hold the health data, but using a ScriptableObject works well here since it decouples behavior from the data itself . The sample HealthModel ScriptableObject looks something like this: \[CreateAssetMenu(fileName = “HealthData”, menuName = “DesignPatterns/ MVP/HealthModel”)\] public class HealthModel : ScriptableObject { public event Action HealthChanged; public int CurrentHealth; public string LabelName; ... public void Increment(int amount) { ... } public void Decrement(int amount) { ... } public void Restore() { ... } } HealthModel only stores the actual health value, CurrentHealth, and invokes an event, HealthChanged, every time that value changes . HealthModel does not contain gameplay logic, only methods to increment and decrement the data . It also contains a string field for the LabelName . The sample uses UI Toolkit, so the View is defined in UXML . The interface includes the health bar itself, a status label, and a value label . The visual representation is styled using a USS file . Manage these assets in the UI Builder or directly as text . The UXML in the UI Builder © 2024 Unity Technologies106 of 147 | unity.com | Observer pattern | Model View Presenter (MVP) | Model-View-ViewModel | The HealthPresenter acts as a mediator between the data layer of the Model and the user interface of the View . It updates the UI in response to HealthModel changes and handles user input to modify health data . Serialized fields reference the UI Document (the View) and the m\_HealthModelAsset ScriptableObject (the Model). public class HealthPresenter : MonoBehaviour { \[SerializeField\] private UIDocument m\_Document; \[SerializeField\] private HealthModel m\_HealthModelAsset; private VisualElement m\_Root; private ProgressBar m\_HealthBar; private Label m\_StatusLabel; private Label m\_ValueLabel; private void OnEnable() { NullRefChecker.Validate(this); m\_Root = m\_Document.rootVisualElement; ... if (m\_HealthModelAsset != null) { m\_HealthModelAsset.HealthChanged += OnHealthChanged; UpdateUI(); } } private void OnHealthChanged() => UpdateUI(); private void OnDisable() { if (m\_HealthModelAsset != null) m\_HealthModelAsset.HealthChanged -= OnHealthChanged; } private void UpdateUI() { ... // Logic to update UI elements based on the health model data } © 2024 Unity Technologies107 of 147 | unity.com | Observer pattern | Model View Presenter (MVP) | Model-View-ViewModel | private void RegisterElements() { var resetButton = m\_Root.Q(“reset-button”); if (resetButton != null) resetButton.clicked += RestoreHealth; } public void RestoreHealth() => m\_HealthModelAsset.Restore(); public void ApplyDamage(int damage) => m\_HealthModelAsset .Decrement(damage); } Other GameObjects will need to use the HealthPresenter to modify the health values using ApplyDamage and RestoreHealth methods . Importantly, the HealthPresenter includes an UpdateUI method responsible for keeping the View in sync with the Model data . This method is called in the OnHealthChanged event handler, which is raised every time the health data changes in the HealthModel . private void UpdateUI() { float healthPercentage = (float)m\_HealthModelAsset.CurrentHealth / m\_HealthModelAsset.MaxHealth; // Update the progress bar to reflect the current health m\_HealthBar.value = healthPercentage \* 100; // Change the color of the health bar based on health percentage m\_HealthBar.Q(“progress”).style.backgroundColor = new StyleColor(Color.Lerp(Color.red, Color.green, healthPercentage)); // Update the status label based on the health percentage m\_StatusLabel.text = healthPercentage switch { < 0.33f => “Danger”, < 0.66f => “Neutral”, \_ => “Good” }; // Update the numerical value label m\_ValueLabel.text = m\_HealthModelAsset.CurrentHealth.ToString(); } © 2024 Unity Technologies108 of 147 | unity.com | Observer pattern | Model View Presenter (MVP) | Model-View-ViewModel | UpdateUI calculates the ProgressBar value, changes its fill bar’s background color, and updates both Labels . The logic converts the integer value into a string message or color as necessary for each element . It’s important to note that the HealthPresenter needs to subscribe to events from the HealthModel to trigger the UpdateUI method when the CurrentHealth value changes . Any data outside of the UpdateUI method, such as the LabelName, is only initialized once at the start and does not update automatically when the CurrentHealth changes . Sample health interface using MVP In the sample project, click the target to damage the health bar or reset the health with the button . These UI elements inform the HealthPresenter (which invokes ApplyDamage or ResetHealth) rather than change the Health directly . MVP in Unity UI If you are using Unity UI, you can also find an older version of the sample scene that supports UGUI . Explore the MVP scene within the 7\_MVP directory. Just remember to disable the SceneBootstrapper before accessing the Unity scene . © 2024 Unity Technologies109 of 147 | unity.com | Observer pattern | Model View Presenter (MVP) | Model-View-ViewModel | Pros and cons MVP (and MVC) really shine for larger applications. If your game requires a sizable team to develop and you expect to maintain it for a long time after launch, you might benefit from the following: —Smooth division of work: Because you’ve separated the View from the Presenter, developing and updating your user interface can happen nearly independently from the rest of the codebase . This lets you divide your labor between specialized developers . Do you have expert front-end developers on your team? Let them take care of the View . They can work independently from everyone else . —Simplified unit testing with MVP and MVC: These design patterns separate gameplay logic from the user interface . As such, you can simulate objects to work with your code without actually needing to enter Play mode in the Editor . This can save considerable amounts of time . —Readable code that can be maintained: You’ll tend to make smaller classes with this design pattern, which makes them easier to read . Fewer dependencies usually means fewer places for your software to break and fewer places that might be hiding bugs . Though MVC and MVP are widespread in web development or enterprise software, often, the benefits won’t be apparent until your application reaches a sufficient size and complexity . You’ll need to consider the following before implementing either pattern in your Unity project: —You need to plan ahead: Unlike the other patterns described in this guide, MVC and MVP are larger architectural patterns . To use one of them, you’ll need to split your classes by responsibility, which takes some organization and requires more work up front. —Not everything in your Unity project will fit the pattern: In a “pure” MVC or MVP implementation, anything that renders to screen really is part of the View . Not every Unity component is easily split between data, logic, and interface (e .g ., a MeshRenderer). Also, simple scripts may not yield many benefits from MVC/MVP. You’ll need to exercise judgment where you can stand to benefit the most from the pattern . Usually, you can let the unit tests guide you . If MVC/MVP can facilitate testing, consider them for that aspect of the application . Otherwise, don’t try to force the pattern onto your project . © 2024 Unity Technologies110 of 147 | unity.com Model-View- ViewModel While MVP applies separation of concerns to our project, much of what the presenter does is simply shuttle data between the model and the view . This amounts to a lot of boilerplate code for data processing . Consider the previous scenario where you have a player statistic, such as health . We can represent this value in a number of ways in the UI . For instance, the health value could display colors (green for full health, red for near death) or a warning message when health is low . In MVP, the presenter would need to query the interface and then set up some logic to update each UI element as needed . In most cases, the presentation layer is simply serving up the existing data, formatting and preprocessing it for the view . Automating this can simplify our workflow . The MVVM pattern . © 2024 Unity Technologies111 of 147 | unity.com | Model View Presenter (MVP) | Model-View-ViewModel | Strategy pattern | MVVM in Unity 6 Thus, Unity 6 includes a runtime data binding system, which upgrades the MVP pattern to the Model-View-ViewModel (MVVM) pattern. Similar to MVP, MVVM also consists of three main parts: —Model: The Model represents the data and business logic of the application . This can be any object, often taking the form of a ScriptableObject or MonoBehaviour . —View: The View is the user interface that displays the data and interacts with the user . In UI Toolkit, this usually consists of a UXML file along with a USS style sheet . —View model: Much like the presenter from MVP, the View Model acts as a mediator between the Model and the View . This is commonly implemented as a MonoBehaviour . Seems familiar? It should be . MVVM is from the same family of MVC design patterns . The key difference is that MVVM adds data binding (see below). Data binding makes updating the view more automatic when the model’s properties change . This simplifies and reduces much of the repetitive code to sync the underlying data with the user interface . Data binding Data binding ensures synchronization between the properties of non-UI objects (like a string property on a MonoBehaviour) and UI elements (such as the value property of a TextField). A binding is essentially a link between a non-UI property and the UI element that modifies it . Setting up bindings automatically synchronizes changes between the underlying data and the corresponding visual element . This eliminates the need to write event handlers manually for each UI update . UI Toolkit in Unity 6 now supports runtime data binding . This feature allows for binding properties of C# objects to UI control properties during runtime UI operations . You can also use it in the Editor UI as long as it’s not for serialized data . © 2024 Unity Technologies112 of 147 | unity.com | Model View Presenter (MVP) | Model-View-ViewModel | Strategy pattern | Example: Updated sample project The demo scene takes the same health bar example from the MVP sample scene and rebuilds it using the MVVM with UI Toolkit’s runtime data binding . Just like in the MVP example, the scene includes interactive elements to update a target’s health bar . Clicking the collider damages the target, while clicking the button in the lower right resets its health . The MVVM sample scene . Adapting the same health bar example from the MVP sample scene illustrates the differences between the design patterns: The HealthModel again is a ScriptableObject that contains a field for the CurrentHealth and some basic methods to increment, decrement, and reset its value . It also adds some extra data converters used for data binding but is otherwise identical . The HealthView remains nearly unchanged, with the same UXML and HealthBar style sheet . The HealthViewModel again acts as a mediator between the model and the view . However, much of the logic used to update the UI has been offloaded to UI Toolkit’s runtime data binding . The scripted component again sets up the button interactivity and demonstrates how to replicate the data binding in C# . © 2024 Unity Technologies113 of 147 | unity.com | Model View Presenter (MVP) | Model-View-ViewModel | Strategy pattern | Note how the data binding between the UI and the HealthModel ScriptableObject updates: —The Label Name binds to the UI Label on the left . Modifying the field automatically updates on-screen . —The value of the Current Health field appears on the Label to the right . As the value changes, the text updates automatically . —A status Label’s text property indicates “Good,” “Neutral,” or “Danger” based on the CurrentHealth value . The color of this label interpolates between green and red accordingly . —The color of the progress bar updates to match . This demonstrates how to set up data binding through the HealthViewModel script . By leveraging data binding, the MVVM pattern simplifies synchronizing the model with the view . The UI binds to the HealthModel ScriptableObject’s values . Data binding: UI Builder Let’s take a look at setting up a basic example of data binding using UI Builder . If the UI needs to convert data directly from a ScriptableObject, this binding often can be done without the need for a separate script . © 2024 Unity Technologies114 of 147 | unity.com | Model View Presenter (MVP) | Model-View-ViewModel | Strategy pattern | To prepare the HealthModel, we can add a static method with the InitializeOnLoadMethod attribute . The RegisterConverters adds a ConverterGroup (named “Int to HealthBar” in this example) that can transform integer values representing health into a color (from green to red) or string representations (“Danger,” “Neutral,” or “Good”). These can provide visual or textual feedback. Here is how you can implement this: \[InitializeOnLoadMethod\] public static void RegisterConverters() { var converter = new ConverterGroup(“Int to HealthBar”); converter.AddConverter((ref int value) => new StyleColor(Color.Lerp(Color.red, Color.green, value / (float)k\_MaxHealth))); converter.AddConverter((ref int value) => { float healthRatio = (float)value / (float)k\_MaxHealth; return healthRatio switch { >= 0 and < 1.0f / 3.0f => “Danger”, >= 1.0f / 3.0f and < 2.0f / 3.0f => “Neutral”, \_ => “Good” }; }); ConverterGroups.RegisterConverterGroup(converter); } Then, you can open the UXML in UI Builder and apply data binding interactively: —Locate the UI elements that you want to bind to the property . In the sample project, we bind the CurrentHealth to the status label and value label . —Right-click to choose Add binding... from the context menu (or Edit binding... if a binding already exists). © 2024 Unity Technologies115 of 147 | unity.com | Model View Presenter (MVP) | Model-View-ViewModel | Strategy pattern | Add a data binding to a property in the Inspector —Then, in the Add Binding window, select a Data Source, Data Source Path, and Binding Mode . For example, in the status label, the Data Source is the HealthData asset . The Data Source Path is the CurrentHealth property . The BindingMode uses the To Target setting, meaning that the data binds only one-way from the source to the UI (i .e . the UI changes to reflect the data, not vice versa) The Edit Binding window . —Open the Advanced Settings if you want to choose a specific converter from the ScriptableObject . Here, the local converter uses the “Int to HealthBar” ConverterGroup, created in the HealthModel ScriptableObject . © 2024 Unity Technologies116 of 147 | unity.com | Model View Presenter (MVP) | Model-View-ViewModel | Strategy pattern | A data binding icon appears in the UI Builder’s Inspector once the setup is complete . The data binding appears in the Inspector . Once the data binding is in place, the user interface just works without additional code . Compare this simplified workflow with the HealthPresenter from the MVP sample scene . Click the target to damage the CurrentHealth.The progress bar and labels update immediately to reflect the new value . Open the UXML in a text editor to reveal what’s happening behind the scenes . Each element that is set up with a data binding has a Binding block, containing all of the information set in UI Builder . Data bindings appear as code blocks in the UXML . For example, the Label named health-bar\_\_status-label above the health bar converts the CurrentHealth to the appropriate string and color; these values then bind to the “text” and “style .color” properties . © 2024 Unity Technologies117 of 147 | unity.com | Model View Presenter (MVP) | Model-View-ViewModel | Strategy pattern | Data binding: Scripting In some cases, you may need to set up data binding using C# instead of the UI Builder . This is useful when certain UI elements contain internal parts or sub-elements . For example, the ProgressBar’s background and fill bar are not directly selectable in the UI Builder’s Inspector . This snippet demonstrates how to set up data binding in the HealthViewModel script: private void SetDataBindings() { var healthBar = m\_Root.Q(“health-bar”); var healthBarProgress = healthBar?.Q(className: “unity-progress-bar\_\_progress”); if (healthBarProgress != null) { healthBarProgress.dataSource = m\_HealthModelAsset; var binding = new DataBinding { dataSourcePath = new PropertyPath(nameof(HealthModel .CurrentHealth)), bindingMode = BindingMode.ToTarget, }; binding.sourceToUiConverters.AddConverter((ref int value) => new StyleColor(Color.Lerp(Color.red, Color.green, (float)value / m\_HealthModelAsset.MaxHealth))); healthBarProgress.SetBinding(“style.backgroundColor”, binding); } } The SetDataBindings method queries the VisualElement hierarchy to find the ProgressBar named “health-bar .” Then, it sets up the data binding much like in the UI Builder . —Set the data source . In this case, the data source is the HealthData ScriptableObject asset in the project . —Create a data binding object, which contains the dataSourcePath and the binding mode . —Define data converters if necessary . The above example shows how the integer value can convert into a StyleColor on the ProgressBar’s fill bar . Then, call SetBinding on the UI element, passing in the property (e .g . “style . backgroundColor” for the ProgressBar’s fill color) and the binding object. Repeat this process for each element property that needs data binding . © 2024 Unity Technologies118 of 147 | unity.com | Model View Presenter (MVP) | Model-View-ViewModel | Strategy pattern | This becomes particularly important when direct binding to a ScriptableObject asset isn’t possible, like when you need to create a ScriptableObject instance at runtime . In cases where a GameObject with a HealthViewModel must reference its individual health object, set up the data binding via scripting instead of the UI Builder . Compare using data binding with the previous MVP example without it . Each uses the same UXML and USS . No data binding (MVP)Data binding (MVVM) The HealthPresenter listens for events on the HealthModel in order to update . The HealthPresenter converts values for display in the UI Elements (UpdateUI). The HealthModel stores data and basic business logic (Increment, Decrement). The HealthModel registers a ConverterGroup to transform model data into a format used by the UI . The HealthViewModel creates bindings from the HealthModel to the UI (SetDataBindings). The HealthModel stores data and basic business logic (Increment, Decrement). © 2024 Unity Technologies | Introduction | Importing animations into Unity | Generic animation type 119 of 147 | unity.com © 2024 Unity Technologies120 of 147 | unity.com | Model View Presenter (MVP) | Model-View-ViewModel | Strategy pattern | In MVP, the Presenter subscribes to events from the Model to detect state changes . When notified of a change, the Presenter processes the data into a format suitable for the View and updates the View accordingly . In MVVM, start by registering any necessary Converters in the Model . Then, establish data bindings in the ViewModel . This setup allows changes in the Model to update the View automatically through the existing bindings . You can find a more detailed introduction to runtime data binding in the documentation . Pros and cons MVVM shares many of the benefits of MVP, such as improved testability and separation of concerns . Data binding can reduce the amount of boilerplate code needed to keep the UI in sync with the underlying data, reducing the number of events raised from the model . This leads to more concise code that is easier to read and maintain . It also improves UI consistency, with data binding reducing the risk of displaying stale or incorrect data . However, consider the additional overhead of setting up each data binding . Setting the data source, data source path, binding mode, converters, etc. requires slightly more effort up front. This pattern may only be suitable for larger user interfaces where the benefits outweigh the additional complexity cost . © 2024 Unity Technologies121 of 147 | unity.com Strategy pattern Gameplay seldom sits still . At runtime, your game objects often need to adapt to changing conditions and update themselves accordingly . For example, imagine a stealth game where a player’s movement style needs to switch between sneaking past guards to running away after being detected . Or consider a combat system where characters can exhibit different attack modes, such as melee, ranged, or magic . Implementing these dynamic behaviors in a clean and maintainable way can be challenging as your game grows . Much as with the state pattern, using a switch statement can lead to large bloated classes . The strategy pattern offers a solution to this problem by wrapping algorithms or behaviors within an object and making them interchangeable . Each strategy object encapsulates a distinct behavior that can be executed dynamically . Thus, a client object can switch its behavior at runtime by referencing different strategy objects, without needing to modify its own class structure . © 2024 Unity Technologies122 of 147 | unity.com | Model-View-ViewModel | Strategy pattern | Flyweight pattern | The Strategy pattern makes behaviors interchangeable at runtime . Example: An ability system Imagine you’re developing a game that allows players to acquire new abilities as they progress . For instance, these abilities could serve as rewards or “perks” for outstanding performance in a competitive FPS or action RPG. When a player becomes eligible for a new ability, a corresponding UI button might be displayed on the screen to indicate its availability . Before refactoring Initially, you might create a single script tasked with handling all special abilities . This approach works but as you need to add new abilities or modify existing ones, it becomes difficult to maintain . © 2024 Unity Technologies123 of 147 | unity.com | Model-View-ViewModel | Strategy pattern | Flyweight pattern | The initial setup for defining these abilities might look something like this: public class AbilityRunner : MonoBehaviour { public enum Ability { RadarPulse, AirSupport, FirstAid } public Ability currentAbility; void Update() { if (Input.GetKeyDown(KeyCode.Space)) { ActivateAbility(currentAbility); } } void ActivateAbility(Ability ability) { switch (ability) { case Ability.RadarPulse: // Radar Pulse logic Debug.Log(“Activating Radar Pulse”); break; case Ability.AirSupport: // Air Support logic Debug.Log(“Calling in Air Support”); break; case Ability.FirstAid: // First Aid/Healing logic Debug.Log(“Using First Aid”); break; } } } © 2024 Unity Technologies124 of 147 | unity.com | Model-View-ViewModel | Strategy pattern | Flyweight pattern | This script becomes increasingly complex and challenging to manage as the game evolves . Each new ability requires modifications to the existing code, violating the open-closed principle. Remember that our goal is to keep our software open for extension but closed for modification . Implementing the strategy pattern Let’s revisit the ability system using the strategy pattern . Begin by creating an abstract Ability class or interface . This will define a method called Use that all specific abilities must implement . This example extends ScriptableObject (but any object can work here). public abstract class Ability : ScriptableObject { public string abilityName; public abstract void Use(GameObject gameObject); } Then, create concrete implementations of the Ability class for each specific ability . These classes will implement the actual logic within the Use method to perform their unique actions. \[CreateAssetMenu(fileName = “RadarPulseAbility”, menuName = “Abili- ties/RadarPulse”)\] public class RadarPulse : Ability { public override void Use(GameObject gameObject) { Debug.Log(“Activating Radar Pulse”); // Implement Radar Pulse logic here } } \[CreateAssetMenu(fileName = “AirSupportAbility”, menuName = “Abili- ties/AirSupport”)\] public class AirSupport : Ability { public override void Use(GameObject gameObject) { Debug.Log(“Calling in Air Support”); // Implement Air Support logic here } } \[CreateAssetMenu(fileName = “FirstAidAbility”, menuName = “Abilities/ © 2024 Unity Technologies125 of 147 | unity.com | Model-View-ViewModel | Strategy pattern | Flyweight pattern | FirstAid”)\] public class FirstAid : Ability { public override void Use(GameObject gameObject) { Debug.Log(“Using First Aid”); // Implement First Aid/Healing logic here } } These ScriptableObjects can be serialized and stored as project assets . This allows them to be easily assigned and modified within the Unity Inspector . A client object can then reference these strategy objects . Here, we refactor the AbilityRunner class so that at runtime, it can set its specific currentAbility dynamically . In this example, pressing the Space key calls the Use method, which executes the ability logic . public class AbilityRunner : MonoBehaviour { // Assign this via the Unity Editor public Ability currentAbility; void Update() { if (Input.GetKeyDown(KeyCode.Space)) { currentAbility.Use(gameObject); } } } Each ability, now encapsulated as its own object, can be edited, added, or removed without impacting the core game code . This enhances the game’s flexibility, allowing for dynamic ability changes at runtime . Creating new abilities also becomes more manageable and scalable as a result . © 2024 Unity Technologies126 of 147 | unity.com | Model-View-ViewModel | Strategy pattern | Flyweight pattern | Example: Sample project The project shows a basic implementation of the strategy pattern . The player can gather power-ups to attain a desired “streak .” The button updates according to the streak count, displaying different abilities as the player streak increments . Clicking the button then activates the current special ability as a strategy . What the button actually does is wrapped into a ScriptableObject . That means that it can be interchanged at runtime, either in the Inspector or with separate game logic . In this specific sample, a streak counter ties the associated perk or special ability to the UI, which dynamically adjusts to player performance . Because each interchangeable strategy is encapsulated in its own class, adding more abilities does not impact the others; simply create more ScriptableObject abilities as your game requires. Here, the button triggers some decorative elements (such as a particle effect or sound), but it’s not limited to any one thing . Each encapsulated strategy can perform a vast range of actions tailored to your game’s specific needs . Alter gameplay mechanics, enhance character abilities, or even modify the game environment . The project implements special abilities, or perks, using the strategy pattern . © 2024 Unity Technologies127 of 147 | unity.com | Model-View-ViewModel | Strategy pattern | Flyweight pattern | Pros and cons The strategy pattern works well for situations where you need to change how your game behaves at runtime . Because you can add new features without altering existing code, this pattern makes your system more flexible in keeping with SOLID principles . Each behavior is neatly compartmentalized into its own class, and that makes testing easier as well . On the downside, having more classes to manage can increase complexity . Because a strategy object carries a small amount of overhead with it, consider alternative patterns or optimizations when performance is critical . Being encapsulated also means that you’ll need to carefully design how these strategies will share information and communicate with the rest of your gameplay systems (e.g. events). You’ll need to avoid tightly coupling the strategies with other components; otherwise, you’re negating the benefits of the pattern . More examples The strategy pattern is not just a tool for managing abilities . You can apply it to many different aspects of gameplay . Here are a few practical examples: Character movement strategies: Imagine you’re creating a platformer game where the player character’s movement abilities can be upgraded, depending on the environment or power-ups . At the start, the player might only be able to walk and jump, but later they gain the abilities to double-jump, dash, or even fly . AI behavior: Switch between different AI behaviors based on the game state or player actions . Adjust enemy states between offensive, defensive, or patrol strategies, depending on the player . Navigation strategies: If you created a pathfinding system, you could use the strategy pattern to define multiple algorithms (A\*, Dijkstra’s shortest path, etc.) that you could swap during gameplay, depending on context . Attack strategies: Allow players or AI to switch between weapon types dynamically, with strategies such as MeleeAttack, RangedAttack, or AreaEffectAttack. Or imagine a boss enemy that can switch modes or unique combat abilities, depending on its remaining health. Difficulty Adjustment: Automatically adjust game difficulty based on player performance . Implement an “adaptive difficulty” strategy that changes in real-time . Or allow the player to select a “fixed difficulty” strategy for a consistent challenge . © 2024 Unity Technologies128 of 147 | unity.com Flyweight pattern Large game worlds will often contain scenes populated with numerous GameObjects and components . If similar objects carry the same data fields, this can result in significant duplication of data, leading to increased memory usage . Consider a forest scene where each tree object stores its own configuration data . A tree in our game scene might store: —Complex data structures for defining the tree . If you were generating the tree procedurally, this could include arrays or lists of floats, colors, and Vector3 values . —Animation curves for defining how the tree sways in the wind . —Custom class instances that define other physical characteristics or gameplay metadata . Though each individual field may be relatively small, remember that duplicating the GameObject also copies its various components and their stored data fields . If a field is a value type (e.g., a struct, primitive type, or array), each duplicated GameObject will have its own copy of the data . Populate your game world forest with trees, and this redundancy quickly adds up. The flyweight is an optimization pattern that can reduce the amount of duplicate data in your game by centralizing shared data . Thus, it allows individual objects to reference this shared data instead of storing their own copies . © 2024 Unity Technologies129 of 147 | unity.com | Strategy pattern | Flyweight pattern | Dirty flag | Use the Flyweight pattern to share data across similar objects . If you’re accustomed to the prefab workflow in Unity, then you’re already familiar with the idea . We can share as much data as possible between similar objects, reducing the overall memory footprint . Unrefactored example Consider a strategy game teeming with gameplay units . Each may carry attributes such as health, attack, defense, and movement . To identify each unit, you also might want to tag them with a team label and icon . Thus, an unoptimized gameplay unit might have a class like this: public class UnrefactoredUnitInstance : MonoBehaviour { public string factionName; public Sprite factionIcon; public int baseHealth; public int baseAttack; public int baseDefense; public int baseMovement; // Unique state for this unit instance public int health; public int attack; public int defense; public int movement; public Vector3 position; © 2024 Unity Technologies130 of 147 | unity.com | Strategy pattern | Flyweight pattern | Dirty flag | private void Start() { RefreshUnitStats(); } private void RefreshUnitStats() { health = baseHealth; attack = baseAttack; defense = baseDefense; movement = baseMovement; // ... update other unit components based on faction data } public void SetFactionData(string factionName, Sprite factionIcon, int baseHealth, int baseAttack, int baseDefense, int baseMovement) { this.factionName = factionName; this.factionIcon = factionIcon; this.baseHealth = baseHealth; this.baseAttack = baseAttack; this.baseDefense = baseDefense; this.baseMovement = baseMovement; RefreshUnitStats(); } } In addition to its own stats, a unit carries an additional payload of data that should ideally remain constant across a given faction or team . When creating a new unit instance with the SetFactionData method, you pass all the common faction data – and store a copy of it . The more units you add, the more redundant data you’re duplicating and storing . This doesn’t just use up more memory – it also makes it harder to keep everything updated and consistent across your game . Manually syncing data across many objects is error prone and can lead to inconsistencies . With a handful of objects, it’s not a problem . But with a large number of units from the same faction, the increased memory usage may start to be noticeable – or at least difficult to manage . © 2024 Unity Technologies131 of 147 | unity.com | Strategy pattern | Flyweight pattern | Dirty flag | Implementing the flyweight pattern A simple solution is to store the shared data in a central repository, or flyweight object . A ScriptableObject works well for this purpose since it’s ideal for storing data that doesn’t need to change at runtime (e.g. settings, configuration data, etc.). Refactoring the shared data into a separate class can reduce redundancy, like so: // Flyweight object (ScriptableObject) \[CreateAssetMenu\] public class FactionData : ScriptableObject { public string factionName; public Sprite factionIcon; public int baseHealth; public int baseAttack; public int baseDefense; public int baseMovement; } // Context object public class UnitInstance : MonoBehaviour { public FactionData factionData; private void Start() { RefreshUnitStats(); } private void RefreshUnitStats() { health = factionData.baseHealth; attack = factionData.baseAttack; defense = factionData.baseDefense; movement = factionData.baseMovement; // ...Update other unit components based on faction data } // Unique state for this unit instance public int health; public int attack; public int defense; public int movement; public Vector3 position; // ... Add other unique states here } © 2024 Unity Technologies132 of 147 | unity.com | Strategy pattern | Flyweight pattern | Dirty flag | Using the pattern, the FactionData class is a ScriptableObject that represents the shared faction data . It contains fields for the faction name, icon, and base unit stats . The UnitInstance class is the Context object that holds a reference to the FactionData ScriptableObject . It refreshes its stats based on the shared faction data . By separating shared and unique data, you reduce memory usage and potential inconsistencies across your game objects . Example: Sample project The provided example demonstrates the flyweight pattern by optimizing memory usage for a fleet of spaceships . Share data across similar objects using the flyweight pattern . The core principle is distinguishing between intrinsic (shared) and extrinsic (unique) state data . Intrinsic data is immutable and shared across instances, reducing memory usage . Extrinsic data varies between instances and is stored individually . In the example, ShipData is a ScriptableObject that contains intrinsic, shared data for all ships, such as unit name, speed, attack power, and defense . All ships reference the same data set for these properties, minimizing the memory footprint . © 2024 Unity Technologies133 of 147 | unity.com | Strategy pattern | Flyweight pattern | Dirty flag | \[CreateAssetMenu(fileName = “ShipData”, menuName = “Flyweight/ShipDa- ta”, order = 1)\] public class ShipData : ScriptableObject { public string UnitName; public string Description; public float Speed; public int AttackPower; public int Defense; } Create the ScriptableObject instance from the context menu defined in the CreateAssetMenu attribute . A Ship class can represent individual ships in the fleet . Each ship instance holds a reference to the shared ShipData and, in turn, manages its own unique state, such as health. public class Ship : MonoBehaviour { \[SerializeField\] private ShipData m\_SharedData; \[SerializeField\] private float m\_Health; public void Initialize(ShipData data, float health) { m\_SharedData = data; m\_Health = health; } public void DisplayShipInfo() { Debug.Log($”Name: {sharedData.UnitName}, Health: {m\_Health}”); } } The ShipFactory is responsible for generating the fleet of ships . It initializes each ship using a prefab GameObject and the shared ShipData . © 2024 Unity Technologies134 of 147 | unity.com | Strategy pattern | Flyweight pattern | Dirty flag | public class ShipFactory : MonoBehaviour { \[SerializeField\] private Ship shipPrefab; \[SerializeField\] private ShipData sharedShipData; \[SerializeField\] private float spacing = 1.0f; void Start() { GenerateShips(10, 10); } public void GenerateShips(int rows, int columns) { for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { Vector3 position = new Vector3(i \* spacing, 0, j \* spacing); Ship newShip = Instantiate(shipPrefab, position, Quaternion.identity, transform); newShip.Initialize(sharedShipData, 100); // Assuming 100 is the starting healt newShip.name = $”Ship\_{i \* columns + j}”; } } } } By centralizing shared data in a ScriptableObject, you can reduce the memory footprint across numerous ship instances. Meanwhile, unique data such as health is still managed individually by each ship instance . Though this isn’t much savings per GameObject, the efficiencies become more noticeable the more ships you add to the scene . Large numbers of similar objects make the best use of this pattern . Add the Memory Profiler package from the Package Manager to get better insight into the memory savings . In the Memory Profiler window (Window > Analysis > Memory Profiler) search through the managed objects to determine the allocated size . Compare before implementing the pattern versus applying the flyweight object . © 2024 Unity Technologies135 of 147 | unity.com | Strategy pattern | Flyweight pattern | Dirty flag | Compare the memory savings in the Memory Profiler . While the sample scene only showcases a few shared fields, the flyweight pattern’s benefits can become substantial in large-scale projects like RPGs or strategy games with numerous onscreen units . Use the flyweight pattern to save resources whenever you have a large number of objects that share common properties in their base classes . Prefabs versus flyweights The prefab system can be considered an implementation of the flyweight pattern, but with differences in approach and scope . —Prefabs share entire GameObject structures, including all components and hierarchies, while the flyweight pattern allows selectively sharing specific data fields or properties . —The flyweight pattern provides more flexibility in separating and managing shared data because it’s not tied to a specific GameObject structure . While prefabs are well-suited for reusing complex GameObjects, flyweights provide additional optimization when numerous objects share just a subset of properties . The two approaches can complement each other, with prefabs handling overall structure reuse and flyweights optimizing shared data fields within those structures . © 2024 Unity Technologies136 of 147 | unity.com | Strategy pattern | Flyweight pattern | Dirty flag | Pros and cons The flyweight pattern excels in scenarios where numerous objects share a common state . This is particularly useful on resource-constrained platforms, such as mobile devices, where reducing memory consumption can improve performance. Applications that require instantiating a large number of objects can use the flyweights to their advantage to scale more effectively . Just be aware that the pattern incurs additional overhead and complexity. In addition to managing the individual objects in your scene, you’ll also need to manage their shared state . The benefit from the flyweight pattern only becomes tangible when there are a sufficient number of units to justify the additional overhead . Also, because you’re forcing units to share the same basic data, that limits their flexibility . You’ll need to override the shared data to make each unit unique, akin to the prefab workflow but applied to specific data sets . More examples Though much of what the flyweight pattern provides can also be achieved using prefabs, it can be a good choice for the following types of cases: Crowd simulations: Building a sports sim with some background crowds? Use the pattern to share models, animations, and textures to build large, dynamic crowds . Character/weapon skins and customization: Many games often allow players to customize their weapons or gear with skins and attachments . The base properties of these items can be shared with flyweights, with only the customizations stored individually . Level art: When designing a forest, take all of the universal properties of a tree and store them in the base Tree class . Then, you don’t need to repeat them in the subclasses (e .g ., PineTree, MapleTree, and so on). Note that in scenarios where your game features thousands of objects with shared data (such as a swarm of projectiles in an intense shooter or armies of units in an action strategy game), consider using Unity’s Data-Oriented Technology Stack (DOTS) instead. DOTS can offer superior performance optimization through its focus on multithreading and reducing data dependencies. Read the DOTS e-book for advanced Unity developers for an in-depth look at each of the packages and technologies in the stack and their related concepts . As with any design pattern, evaluate the specific needs of your project before implementing it . Then, decide as a team which pattern will give the best benefit . © 2024 Unity Technologies137 of 147 | unity.com Dirty flag Sometimes game development starts to get complicated – or at least computationally expensive . The dirty flag pattern can help when you have a lot of calculations or updates happening in your scenes . A dirty flag is simply a boolean that indicates whether an object’s state has changed since the last time it was processed or rendered . If an object is “dirty,” it gets updated; otherwise, it’s skipped, saving computational resources . A common use case is traversing a complex hierarchy or managing a large scene file . The dirty flag can help minimize calculations until certain objects are marked “dirty .” For example, child transforms could ignore updates until the parent or root transform requires one. This can help minimize unnecessary calculations with dynamic objects that frequently change state. Using the dirty flag pattern means strategically placing checks at points where object states are likely to change . This could be within event handlers, physics updates, or animation systems . The checks then ensure that only a subset of the game world is updated in response to player actions or game events . Every resource saved helps reduce overhead . © 2024 Unity Technologies138 of 147 | unity.com | Flyweight pattern | Dirty flag | Conclusion Use the dirty flag pattern to prevent unnecessary updates . Example: Sample project Consider a large, open-world game . It’s often resource-prohibitive to load the entire game environment at once . Instead, a common tactic is to load just a portion of the game world that the player currently sees . To manage this, the game world can be divided into smaller Unity scenes, loading each one as necessary . However, this scene loading process is relatively slow and can cause brief pauses that disrupt gameplay . Thus, we only want to update the game world when necessary . In this example, we introduce a mechanism that only executes when certain conditions are met . We mark the world with a dirty flag when it’s ready for an update . Otherwise, the update loop skips over the expensive logic . As the player navigates through the level, this game world only updates when the player moves near the boundary of the current sector . This saves compute resources to help ensure a seamless gameplay experience . Explore the sample implementation to see one way to apply this pattern: —The game world is divided into sectors or regions, each with associated content that needs to load when the player is nearby . —A manager script tracks the player’s movement and determines which sectors are relevant based on the player’s current location . —Each sector has a dirty flag that indicates whether its content needs to be loaded or unloaded, based on the player’s proximity and interaction . © 2024 Unity Technologies139 of 147 | unity.com | Flyweight pattern | Dirty flag | Conclusion Because scene loading is a relatively expensive operation, the dirty flag pattern makes sure that the expensive game world update only runs when necessary . Here, the GameSectors script manages what parts of the game world loads at runtime . public class GameSectors: MonoBehaviour { public Player player; public Sector\[\] sectors; private void Update() { foreach (Sector sector in sectors) { bool isPlayerClose = sector.IsPlayerClose(player .transform.position); // Check if the sector’s state needs to change If (isPlayerClose != sector.IsLoaded) { sector.MarkDirty(); } // Update the sector based on its dirty flag if(sector.IsDirty) { If (isPlayerClose) { sector.LoadContent(); } else { sector.UnloadContent(); } // Reset the dirty flag sector.Clean(); } } } } The sample scene illustrates how to visualize material changes and scene loading/unloading in response to the player’s proximity . By using the dirty flag pattern, content loading and unloading operations are only performed when the player moves close enough to or far enough from a sector . © 2024 Unity Technologies140 of 147 | unity.com | Flyweight pattern | Dirty flag | Conclusion This minimizes unnecessary processing and memory usage as the application shows a limited section of the game world at a time . Each Sector in this example maintains its own distance to the player as the threshold to load or unload assets . Here’s a snippet of sample: public class Sector : MonoBehaviour { \[Tooltip(“Minimum distance to load”)\] public float m\_LoadRadius; ... public bool IsLoaded { get; private set; } = false; public bool IsDirty { get; private set; } = false; void Awake() { ... Clean(); IsLoaded = false; } public void MarkDirty() { IsDirty = true; Debug.Log($”Sector {gameObject.name} is marked dirty”); ... } public void LoadContent() { IsLoaded = true; ... // Logic to load scene content from the project } public void UnloadContent() { IsLoaded = false; ... // Logic to unload scene content } public bool IsPlayerClose(Vector3 playerPosition) { © 2024 Unity Technologies141 of 147 | unity.com | Flyweight pattern | Dirty flag | Conclusion return Vector3.Distance(playerPosition, transform.position + m\_CenterOffset) <= m\_LoadRadius; } public void Clean() { IsDirty = false; } ... In this setup, a SceneLoader component selectively loads and unloads parts of the game as the player moves through the level . The camera in the scene provides a top-down view to illustrate how this system works . In a real application, imagine a camera following the player, showing only a limited field of view . In this scenario, the game could then selectively load and display only those areas immediately within the player’s visibility . © 2024 Unity Technologies142 of 147 | unity.com | Flyweight pattern | Dirty flag | Conclusion Parts of the level update after they are marked “dirty .” © 2024 Unity Technologies143 of 147 | unity.com | Flyweight pattern | Dirty flag | Conclusion Though we can further optimize this (and not use an Update at all), this example shows a simple case of using a dirty flag to reduce the expensive calls to the SceneManagement API . Pros and cons The dirty flag pattern is particularly valuable in large simulations or systems generating procedural content . Because costly operations only execute when needed, it minimizes unnecessary calculations and can boost memory efficiency – vital for platforms with limited memory like mobile devices . On the negative side, be aware that the dirty flag can introduce tight coupling between components . This adds a layer of dependency and risk . Also, since updates are postponed until the dirty flag is set, the application’s state might temporarily lag, appearing outdated until the necessary update occurs . Dirty flags versus dirty bits and caching The terms “dirty bit” and “caching” are often mentioned alongside the dirty flag pattern . In computing, each serves a distinct purpose . The dirty flag pattern is a high-level software design strategy aimed at reducing unnecessary updates in applications . In contrast, a dirty bit is a low-level indicator used in systems programming to signal modified memory pages, requiring updates before being replaced. The broader technique of caching improves data retrieval speed by storing temporary copies of data, often utilizing dirty flags or bits to ensure the cached data remains current . More examples Use the dirty flag whenever you want to minimize the impact of an expensive calculation or operation, such as in the following cases . Complex hierarchical transforms . If you have child transforms of an animated character, minimize animations until the parent transform updates (e .g . only update the lower limbs if the upper limbs or body is moving). If you had a strategy game where the units are in formation, have the units update their motions only after the entire group formation is marked dirty . Physics simulations: For physics simulations involving complex interactions or large numbers of objects, recalculate only when the state of the objects changes (like position, velocity, or external forces) in order to optimize performance. © 2024 Unity Technologies144 of 147 | unity.com | Flyweight pattern | Dirty flag | Conclusion Pathfinding: Recalculating paths for AI agents can be expensive. Using dirty flags to update paths only when obstacles move or the target location changes . Procedural Content Generation: Much like the scene-loading example, this pattern can tell the system when to regenerate procedural terrain based on specific triggers like player movement or game events . UI Layouts: In a complex UI system, elements might need to rearrange themselves when certain conditions change (like window resizing, content updates, etc.). The dirty flag pattern can be used to update the layout only when necessary, avoiding constant recalculations . For example, a VisualElement in UI Toolkit includes a MarkDirtyRepaint method . Likewise, the EditorUtility has ClearDirty and SetDirty methods . © 2024 Unity Technologies145 of 147 | unity.com Conclusion If you’re new to software patterns, we hope this guide has helped you understand some of the most common ones you can encounter in Unity development . Whether it’s a factory for spawning Prefabs or a state pattern for AI, keep these techniques handy as the need arises. Recognizing when and how to apply design patterns can help you tackle your next Unity challenge . Of course, don’t get lost in forcing a specific pattern to fit; not using a pattern is just as important as using one . A design pattern can speed up your workflow and offer an elegant solution to a recurrent problem when applied correctly . Then, you can concentrate on what’s important: making a fun and unique experience for your players. So, while you don’t need to reinvent the wheel, you can definitely put your own spin on it . © 2024 Unity Technologies146 of 147 | unity.com | Flyweight pattern | Dirty flag | Conclusion Other design patterns This guide is just a small sampling of several well-known design patterns in computing and game development . While we won’t go into their specifics, here’s a brief overview of some others that may be useful to you: —Adapter: This provides an interface (also called a wrapper) between two unrelated entities so they can work together . —Double buffer: This allows you to maintain two sets of array data while your calculations finish . You can then display one set of data while you process the other, which is useful for procedural simulations (e.g., cellular automata) or just rendering things to screen . —Interpreter/Bytecode: If you want to add modding support or allow non- programmers to extend your game, you can create a simplified language that users can edit in an external text file . The bytecode component can then translate that interpreted language into C# game code . —Subclass sandbox: If you have similar objects with varying behaviors, you can define those behaviors as protected in a parent class . Then the child classes can mix and match to create new combinations . —Type object: If you have many varieties of a GameObject, instead of making subclasses for each one, define all possible behaviors in a single abstract or parent class . Differentiate the special characteristics of individual objects in a separate data file (such as a ScriptableObject) that can be customized without changing the code . For example, this allows you to create an inventory of seemingly different items that all derive from the same class . A game designer can customize the data file to make each item unique (e.g., weapons for an RPG), all without the assistance of a programmer . —Data locality: If you optimize data so that it’s stored efficiently in memory, you can reap the rewards of performance. Replacing classes with structs can make your data more cache-friendly . Unity’s ECS and DOTS architecture implement this pattern . —Spatial partitioning: With large scenes and game worlds, use special structures to organize your GameObjects by position . The Grid, Trie (Quadtree, Octree), and Binary search tree are all techniques to help you divide and search more efficiently. —Decorator: This allows you to add responsibilities to an object without changing its existing structure . A decorator could imbue special abilities or modify a GameObject, e .g . , adding perks to a weapon without needing to change the base weapon class . © 2024 Unity Technologies147 of 147 | unity.com | Flyweight pattern | Dirty flag | Conclusion —Facade: This provides a simple, unified interface to a more complex system. If you have a GameObject with separate AI, animation, and sound components, you might add a wrapper class around those components (imagine a Player controller class managing PlayerInput, PlayerAudio, and so on). This facade hides details of the original components and simplifies usage . —Template method: This pattern defers the exact steps of an algorithm into a subclass . For example, you could define a rough skeleton of algorithm or data structure in an abstract class but allow the subclasses to override certain parts without changing the algorithm’s overall structure . —Composite: Use this structural design pattern to organize objects into tree structures and then treat the resulting structure like you would individual objects . You construct the tree from both simple and composite elements (a leaf and a container). Every element implements the same interface so you can run the same behavior recursively on the entire tree . Note: All Wikipedia references in this e-book were made through a Creative Commons license: https://creativecommons .org/licenses/by-sa/3 .0/ . No Wikipedia authors cited herein have endorsed our work . A series of advanced resources for Unity programmers The programming design patterns guide is one in a series of resources we created for experienced Unity programmers . The other e-books in the series are: 1 . Create a C# style guide: Write cleaner code that scales 2 . Create modular architecture in Unity with ScriptableObjects You can find all the e-books (and many how-to articles) in the Unity best practices hub or via the best practices page in Unity documentation . unity .com
---
# Unknown
unity.com | 1 © 2020 Unity Technologies Introduction To Game Design Curricular Framework A resource for educators and administrators to bring interactive application and game design into the classroom unity.com | 2 © 2020 Unity Technologies Introduction to the Unity Curricular Framework............................................................................5 00.A Why the Curricular Framework .......................................................................................................6 00.B How to Use This Document ............................................................................................................6 00.C Overview of the Curricular Framework ..........................................................................................7 00.D Assessment ....................................................................................................................................8 Introduction to Game Design .....................................................................................................10 01.A Unit Description .............................................................................................................................10 01.B Curriculum Overview .....................................................................................................................11 01.C Learning Objectives and Assessments .......................................................................................13 01.D Standards Alignment Guide ..........................................................................................................15 Critical Thinking in Game Design ...............................................................................................17 02.A Unit Description .............................................................................................................................17 02.B Unit Outline ....................................................................................................................................18 02.C Learning Objectives and Assessments .......................................................................................20 02.D Standards Alignment Guide ..........................................................................................................22 00 01 02 Table of Contents Game Design Theory .................................................................................................................24 03.A Unit Description ............................................................................................................................24 03.B Unit Outline ....................................................................................................................................25 03.C Learning Objectives and Assessments .......................................................................................28 03.D Standards Alignment Guide .........................................................................................................30 Story and Game Creation...........................................................................................................32 04.A Unit Description ............................................................................................................................32 04.B Unit Outline ....................................................................................................................................33 04.C Learning Objectives and Assessments .......................................................................................35 04.D Standards Alignment Guide .........................................................................................................36 04 03 unity.com | 3 © 2020 Unity Technologies 06 System Dynamics and Scripting Fundamentals .........................................................................38 05.A Unit Description .............................................................................................................................38 05.B Unit Outline ....................................................................................................................................39 05.C Learning Objectives and Assessments .......................................................................................41 05.D Standards Alignment Guide ..........................................................................................................42 Game Development Tools, Formats, and Asset Management .....................................................44 06.A Unit Description .............................................................................................................................44 06.B Unit Outline ....................................................................................................................................45 06.C Learning Objectives and Assessments .......................................................................................46 06.D Standards Alignment Guide .........................................................................................................47 Physics and Animation ..............................................................................................................49 07.A Unit Description .............................................................................................................................49 07.B Unit Outline ....................................................................................................................................50 07.C Learning Objectives and Assessments .......................................................................................51 07.D Standards Alignment Guide..........................................................................................................53 Environments and Level Design .................................................................................................55 08.A Unit Description .............................................................................................................................55 08.B Unit Outline ....................................................................................................................................56 08.C Learning Objectives and Assessments .......................................................................................58 08.D Standards Alignment Guide .........................................................................................................59 Principles of Cameras and Lighting in Game Environments ..............................................................61 09.A Unit Description .............................................................................................................................61 09.B Unit Outline ....................................................................................................................................62 09.C Learning Objectives and Assessments .......................................................................................64 09.D Standards Alignment Guide .........................................................................................................65 Principles of Sound and Audio for Games ..................................................................................67 10.A Unit Description .............................................................................................................................67 10.B Unit Outline ....................................................................................................................................68 10.C Learning Objectives and Assessments .......................................................................................70 10.D Standards Alignment Guide..........................................................................................................71 Basic Interfaces and the Build Process ......................................................................................73 11.A: Unit Overview ...............................................................................................................................73 11.B: Unit Outline ...................................................................................................................................74 11.C: Learning Objectives and Assessments ......................................................................................75 11.D: Standards Alignment Guide ........................................................................................................76 07 08 10 11 09 05 unity.com | 4 © 2020 Unity Technologies 13 Intermediate Animation and UI ..................................................................................................78 12.A: Unit Overview ...............................................................................................................................78 12.B: Unit Outline ...................................................................................................................................79 12.C: Learning Objectives and Assessments ......................................................................................80 12.D: Standards Alignment Guide ........................................................................................................81 Principles of Quality and Functionality Assurance in Game Development ..................................83 13.A: Unit Overview ...............................................................................................................................83 13.B: Unit Outline ...................................................................................................................................84 13.C: Learning Objectives and Assessments ......................................................................................85 13.D: Standards Alignment Guide ........................................................................................................86 Principles of Versioning and Game Release ...............................................................................88 14.A: Unit Overview ...............................................................................................................................88 14.B: Unit Outline ...................................................................................................................................89 14.C: Learning Objectives and Assessments ......................................................................................90 14.D: Standards Alignment Guide ........................................................................................................91 14 12 unity.com | 5 © 2020 Unity Technologies Introduction to the Unity Curricular Framework This document provides a framework and resources for designing or implementing courses for game design, game development, and Unity skill- building. Educators, instructors and administrators can use this framework for a variety of courses and in diverse classroom settings. Game development MRWXVYGXSVWERHMRWXVYGXMSREPHIWMKRIVW\[MPPƤRHKYMHERGIJSVXLIIRXMVIKEQI HIWMKRTVSGIWWJVSQTVSXSX\]TIXSXLITVSHYGXMSRSJEƤREPGETWXSRITVSNIGX 00 00.A Why the Curricular Framework ................................6 00.B How to Use This Document .....................................6 00.C Overview of the Curricular Framework ...................7 00.D Assessment ..............................................................8 unity.com | 6 © 2020 Unity Technologies 00 Introduction to the Unity Curricular Framework 00.B How to Use This Document The Curricular Framework is meant to be a jumping-off point for the development of a full semester or year-long course in game development. Each unit offers an outline of material, including suggestions for lessons and topics to be covered within those lessons, along with some suggested activities or assignments that will help to deliver the intended content in those units. The Activities and Resources Document is an adjunct to the Curricular Framework, and offers educators detailed assignments, resources and tutorials that can be used to bring the Curricular Framework to life in the classroom. Despite all of the resources provided, we strongly encourage educators to tune the content to the interests of their students, either by revising assignments and activities from the Activities and Resources Document or by developing their own. Each unit includes standards alignment for a variety of different educational standards, including: • Professional Standards for Interactive Application and Video Game Creation • Common Core State Standards (CCSS) • STEM Career Clusters (SCC) • 21st-Century Skills (T21C) • ISTE Standards These will help both educators and administrators align the various units to the needs of their educational institution. 00.A Why the Curricular Framework The global media and entertainment industry is complex, expansive and rapidly growing. Within it, two exciting, highly GVIEXMZIERHMRGVIEWMRKP\]PYGVEXMZIƤIPHWLEZIIQIVKIH that are capturing the hearts and minds of millions: digital interactive development and video game creation. 8LI9RMX\]'YVVMGYPEV\*VEQI\[SVOWMQTPMƤIWXLITVSGIWW of creating and delivering courses that allows educators to more easily teach the tools and methodologies of interactive application creation in a classroom setting, using Unity as a primary development tool. Through the use of this framework, students can gain the technical skills of developing applications in Unity, as well as a broader understanding of the design principles that go into the development of video games and interactive applications, including: • User Experience/User Interface • Player Motivation and Incentivization • Game Balance and Game Design Theory • Visual Design • Asset Development • Environment Design • Collaboration, Communication, and Teamwork These skills are transferable to a variety of contexts outside SJXLIƤIPHSJKEQIHIWMKRERHTVITEVIPIEVRIVW\[MXLEWIX of technical and soft skills that, if used correctly, can be invaluable to their future studies and career prospects. Some subjects that the Curricular Framework can be used to support include: Game Design and Development Computer Science Graphic and User Interface Design 3D Graphics and Imaging Interactive Application Design unity.com | 7 © 2020 Unity Technologies 00 Introduction to the Unity Curricular Framework 00.C Overview of the Curricular Framework This framework consists of 14 units, each containing a number of lessons that cover a variety of topics which together serve as an introduction to video game and interactive application design, Unity skill development, and game design theory. The units are as follows: Each unit contains a complete lesson outline with lesson titles, topics within those lessons, and some suggested activities or resources for that content. 01 Introduction to Game Design This unit introduces the basic concepts of game design and begins the process of familiarizing learners with the Unity engine. 02 Critical Thinking in Game Design This unit introduces game analysis as an important tool for understanding how games function and guides PIEVRIVWXLVSYKLWIXXMRKYTXLIMVƤVWX simple Unity projects. 03 Game Design Theory This unit introduces some of the functional tools that designers use and asks learners to begin adding to and modifying the projects they’re building. 04 Story and Game Creation This unit introduces learners to the unique possibilities that games hold for telling stories and asks them to begin thinking about how to build 3D environments in Unity. 05 System Dynamics and Scripting Fundamentals This unit introduces the fundamentals of writing C# scripts in Unity as well as the Game Design Document, an industry-standard tool that game designers and engineers can use. 06 Game Development Tools, Formats, and Asset Management This unit introduces concepts around ƤPIJSVQEXWERHYWEKISJMRXIPPIGXYEP property and discusses how to manage assets in the Unity Editor. 07 Physics and Animation This unit deepens learners’ understanding of Unity’s physics system and introduces them to some simple animation tools. 08 Environments and Level Design This unit introduces concepts related to level design, including gameplay ƥS\[ERHH\]REQMGWERHHIITIRW learners’ understanding of the ways that rich environments can be developed in Unity. 09 Principles of Cameras and Lighting in Game Environments This unit introduces concepts around Unity’s camera system, including placement and management of cameras, and focuses on how to light scenes effectively. 10 Principles of Sound and Audio for Games This unit introduces basic sound design in Unity as well as issues of intellectual property and copyright. 11 Basic Interfaces and the Build Process This unit introduces concepts around building UI elements such as buttons and menus and takes learners through the build process XSGVIEXITPE\]EFPIKEQIƤPIW 12 Intermediate Animation and UI This unit deepens learners’ understanding of UI and introduces more complex animation, including rigging of humanoid avatars. 13 Principles of Quality and Functionality Assurance in Game Development This unit introduces the concept of a QA process and asks learners to build and execute test plans for their capstone games. 14 Principles of Versioning and Game Release This unit guides learners through XLIƤREPWXITWSJGVIEXMRKXLIMV release candidates. unity.com | 8 © 2020 Unity Technologies 00 Introduction to the Unity Curricular Framework 00.D Assessment Exceeds ExpectationsMeets ExpectationsBelow Expectations Technical 4VSƼGMIRG\] Project is technically complete, without bugs or errors Extra project elements are implemented, or student has crafted project elements particularly well Student has achieved learning objectives Project compiles as expected Project elements are present Project achieves learning objective Project does not compile or has fatal errors Project cannot be played to completion Project does not demonstrate goal or learning objective at all Technical Familiarity Student demonstrates EƥYMHYRHIVWXERHMRK of their process and results Student can identify and offer a plan for resolving bugs in their code or their output Student demonstrates a basic understanding of their development process Student can identify but not resolve the source of bugs in their code or output Student cannot answer questions about their process Student cannot answer questions about their results Student can not identify XLIWSYVGISJFYKWSVƥE\[W in the code or the project Design Sense Project demonstrates a clear design sensibility Project displays information in thoughtful or especially concise way Project is easy to use Project takes users into account Project displays information accurately and clearly Project can be used without student input Project does not demonstrate an awareness of the user Project is not user friendly or has elements that cannot be accessed or understood without student guidance Project communicates information incoherently or not at all Technical Rubric 00.D.1: Learning Objectives & Bloom’s Taxonomy Each unit in the Curricular Framework comes complete with Learning Objectives and corresponding Demonstrations of Learning. Each SJXLIWISFNIGXMZIWMWEPMKRIH\[MXLEWTIGMƤGPIZIPMR Bloom’s Taxonomy, designed to cover the full range of assessment, from lower-level cognitive skills to higher-order thinking. 00.D.2: Assessment Rubrics The various assignments and activities in this document and in the Activities and Resources document are designed so that learners can experience hands-on learning and gain first-hand technical experience as they go through the course. To evaluate this work, the Curricular Framework offers two broad rubrics that can be applied throughout the entire curriculum to assess student progress: the Technical Rubric and the Grit Rubric. 00.D.2.A: Technical Rubric A technical rubric is provided to help educators assess students on technical projects. unity.com | 9 © 2020 Unity Technologies 00 Introduction to the Unity Curricular Framework No Evidence Some Evidence Solid Evidence Excess Evidence Academic Focus Student is on-task and engaged Student participates in classwork and class discussion by asking good questions or contributing observations and connections Student has and works to achieve a clear goal Effort Student plans to achieve high-quality work Student pushes their skills and tries to create more complex things Student applies feedback and incorporates it into future work Perseverance Student applies new strategies when faced \[MXLHMJƤGYPX\]HSIWRŭXKMZIYT Student researches new avenues or new tactics to tackle problems Process Student can describe the process of their work and incorporates previous failures as lessons for next time Grit/Effort Rubric 00.D.2.A: Grit/Effort Rubric A “grit”-focused rubric is included to measure effort and perseverance rather than technical mastery. This is often useful for teachers with students who have a wide range of experience at the outset of the class and as a mechanism to encourage students to challenge themselves rather than “playing it safe.” unity.com | 10 © 2020 Unity Technologies Introduction To Game Design Introduction to Game Design 01.A Unit Description Activities in this unit of study are designed to provide a high-level overview of game design and the game creation process. Learners will be introduced to various game genres during this unit. They will also become familiar with elements of gameplay and project management concepts as related to interactive application and video game creation. Learners will also become familiar with the basic operations of the Unity Editor. 01.A Unit Description ......................................................10 01.B Unit Outline .............................................................11 01.C Learning Objectives and Assessments ................13 01.D Standards Alignment Guide ...................................15 01 unity.com | 11 © 2020 Unity Technologies Introduction to Game Design 01 Lesson TitleLesson Topics Suggested Activities/Resources 1. Game/application design overview What is a game/application and how is it created? Where do we play games? Platforms; console, PC, mobile Who makes games? What makes a game enjoyable? What makes a game unenjoyable? • Unfair • Can’t do anything • Confusing • Game Balance • Player Agency • UX/UI Knowing the players Bartle Types Game genres Genres are linked to gameplay, not story or theme Game Platforms Xbox, Playstation, Switch, PC, Mobile, etc. Have students describe games they’ve played, and identify their parts such as assets, narrative, objectives, etc. 2. Game element exploration Narrative formation Stories in games Game design How the designer sees the game Objectives The player’s goal or goals Player options What players can do to affect the game Sequences Linking moments in games together for deeper, more interesting play Mechanics Rules that control how players act in the game Game aesthetics The look-and-feel of a game Dramatic elements Draws elements from traditional novels, cinema, theater, etc. Multimedia inclusions Some games are text, some are still images, some are moving pictures, 2D, 3D, music, sound Use the Game Analysis Activity in the Activities and Resources document to get students started thinking about games in a scholarly/critical way. 01.B Curriculum Overview unity.com | 12 © 2020 Unity Technologies Introduction to Game Design 01 Lesson TitleLesson Topics Suggested Activities/Resources 3. Gameplay Game theory introduction Games as systems, interconnected Player-centered design Balance Game economies Some consume resources in-game, some consume player time Challenge development Keeping challenge levels appropriate for players “Flow” Level design What happens where, when? How can levels surprise players? Use the +EQI1SHMƼGEXMSR Activity in the Activities and Resources document to start students thinking of games as something they can change and manipulate. 4. Project management for game development What is project management? Tools and skills that help projects thrive Why is project management important? Communication, clarity, collaboration The Four Phases of Project Management (model) Have students take a scene from a game they’re familiar with and list every asset present in the scene – objects, lighting, animations, sound, etc. Ask students to estimate how long it might take to make each object. 5. Unity Editor for game creation Setting up a new project Create a project Import assets Navigating within the Unity Editor Move, rotate, pan, select Game, hierarchy, inspector, asset panels Game mode, edit mode Use the Exploring the Unity Editor Activity in the Activities and Resources document to get students set up and familiar with the basics of the Unity Editor. Make sure students are familiar with the basic layout of the editor and know how to move around and highlight objects in the editor. unity.com | 13 © 2020 Unity Technologies Introduction to Game Design 01 Learning ObjectiveDemonstration of LearningBloom’s Domain 01.1 Identify basic game design principles, reciting common (visual, audial, interactive, narrative, etc.) choices, styles, and/or aesthetics. From memory, learners can list or label basic game design principles. 1. Remember 01.2 Demonstrate the ability to review and summarize contemporary video games, examining intent, form, and functionality. Learners can research online game reviews, citing the vocabulary related to game play and design elements. 2. Understand 01.3 Implement the fundamental concepts of project management within the context of the interactive application and video game development process. Learners can consistently and correctly apply project management fundamentals as an essential function of game development. 3. Apply 01.4 Use the Unity Editor to open and organize a simple project or scene. Learners can demonstrate how to open a predeveloped scene, view its GSQTSRIRXWERHGSRƤKYVIXLIYWIV interface within the game editor. 1. Remember 01.5 Differentiate primary components within the game editor, examining their purpose and function. Learners will be able to differentiate the following game development components: Assets Hierarchy Inspectors/properties Parenting/nesting Views: Scene Game animation Light mapping Occlusion culling Prefabs 2. Understand 01.6 Distinguish contemporary game genres and platforms. Supplied with a list of contemporary games, learners will consistently and correctly characterize genre inclusion, TVSZMHMRKEHIUYEXINYWXMƤGEXMSRJSVKIRVI selection. Learners can also differentiate popular gaming platforms, describing the advantages and disadvantages in terms of hardware (i.e., peripheral) features and gameplay modalities. 4. Analyze 01.C Learning Objectives and Assessments unity.com | 14 © 2020 Unity Technologies Introduction to Game Design 01 Learning ObjectiveDemonstration of LearningBloom’s Domain 01.7 Devise systems to organize and illustrate the interactivity and player immersion that exist within contemporary video games. Learners can design a game rating system to rank interactivity and player immersion. 4. Analyze 01.8 Reconstruct the rules of contemporary games, in order to improve the gameplay experience. Based on the review created by the learner, the learner will formulate a +EQI1SHMƤGEXMSR8EWO7LIIX and a +EQI1SHMƤGEXMSR4PER, identifying key differentiators of the game, possible issues, and/or areas for improvement. 5. Evaluate 01.9 Critique contemporary video games, providing adequate arguments and NYWXMƤGEXMSR Upon selecting a game of their liking, learners can write a critique using appropriate standards and terminology. 5. Evaluate 01.10 Interpret the role of game narrative and gameplay, evaluating its impact on the interactive storytelling environment. Within small group interactions, learners can argue or defend the value of game narrative and game play, evaluating its impact on the game FIMRKHMWGYWWIHERHMRƥYIRGMRKSXLIVW within the group. 5. Evaluate unity.com | 15 © 2020 Unity Technologies Introduction to Game Design 01 01.D Standards Alignment Guide 01.D.1: Professional Standards for Interactive Application and Video Game Creation 01.1.3: Explain the role of iteration in the design process. 01.1.4: Explain the difference between game mechanics and gameplay. 01.6.2: Demonstrate understanding and ability to use game mechanics to improve gameplay. 01.1.6: Assess and describe the basic gameplay from an existing game. 01.1.7: Analyze and evaluate the effectiveness of several game mechanics used in a contemporary game. 01.1.8: Investigate the concept of “Interactive Narrative” and explain how it could pertain to game design. 01.1.9: Explain the relevance of ambiance and environment in game design. 01.1.10: Determine the relevance of character development, backstory, and attributes (power, speed, intelligence, empathy, etc.) in game design. 01.1.11: Differentiate basic game player types and objectives with examples (thrill seekers, socializers, explorers, achievers). 01.1.12: Evaluate and describe various 2D and 3D, single and multiuser genre. 01.1.16: Describe available target platforms, their capabilities and constraints. 01.1.20: Examine an existing game and critique its design with respect to functionality and usability. 01.1.21: Examine an existing game and critique its design with respect to artistic impression and emotional response. 01.1.22: Examine an existing game and attempt to determine the developer’s target demographics and its appeal for basic player types and objectives. 01.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.WHST.6-8.2: Write informative/explanatory texts, including the narration of historical events, WGMIRXMƤGTVSGIHYVIWI\\TIVMQIRXWSVXIGLRMGEPTVSGIWWIW CCSS.ELA-Literacy.CCRA.SL.1: Prepare for and participate effectively in a range of conversations and collaborations with diverse partners, building on others’ ideas and expressing their own clearly and persuasively. 01.D.3: Stem Career Clusters (SCC) SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. 01.D.4: 21st Century Skills Creativity and Innovation: Think Creatively. Implement Innovations Critical Thinking and Problem-Solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly unity.com | 16 © 2020 Unity Technologies Introduction to Game Design 01 01.D.5: Next-Generation Science Standards (NGSS) NGSS3: Planning and carrying out investigations NGSS4: Analyzing and interpreting data 01.D.6: ISTE Standards 1A: Students articulate and set personal learning goals, develop strategies that leverage technology to achieve XLIQERHVIƥIGXSRXLIPIEVRMRKTVSGIWWMXWIPJXSMQTVSZIPIEVRMRKSYXGSQIW 1D: Students understand the fundamental concepts of technology operations, demonstrate the ability to choose, use and troubleshoot current technologies and are able to transfer their knowledge to explore emerging technologies. 2D: Students manage their personal data to maintain digital privacy and security and are aware of data- collection technology used to track their navigation online. unity.com | 17 © 2020 Unity Technologies Critical Thinking in Game Design 02 Critical Thinking in Game Design 02.A Unit Description Activities in this unit of study are designed to develop critical thinking and problem-solving skills. Learners will be introduced to various strategies and techniques for idea generation, problem-solving, and critical analysis. 02.A Unit Description ......................................................17 02.B Unit Outline .............................................................18 02.C Learning Objectives and Assessments ................20 02.D Standards Alignment Guide ...................................22 02 unity.com | 18 © 2020 Unity Technologies Critical Thinking in Game Design 02 02.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Introduction to creative and critical thinking practices What does it mean to think critically? Think creatively? Critical thinking terms • Ambiguity • Assumptions • Values • Emotions • Argument • Fallacy • Thinking barriers • Language Tools for critical thinking (e.g., SWOT analysis) • Strengths • Weaknesses • Opportunities • Threats Critical thinking and the evaluation process Quick Critical Thinking Exercise: Alien Tour Guide Have students describe a familiar environment (classroom, school, etc.,) as if they were talking to an alien with no knowledge of human culture. Which parts are easy to describe? Which parts are hard? What implicit assumptions aboǎt the space do we hold? Go back to the +EQI1SHMƼGEXMSR Assignment from the previous unit. Have students perform a SWOT EREP\]WMWSRXLIMVQSHMƤGEXMSRW Hold a class discussion analyzing the phrase in the Critical Thinking Assignment in the Activities and Resources document. 2. Idea generation Introduction to brainstorming and mind mapping Idea sorting • Immediate usefulness • Areas for exploration • New approaches to problem-solving Students should get into groups and brainstorm ideas for a new game to work on. They should come up with ideas for: • Story and theme • Protagonist • Antagonist 3. Phases of decision- making/problem-solving 4VSFPIQMHIRXMƼGEXMSR ;LEXEWWTIGMƤGEPP\]EWTSWWMFPI is the problem? Information gathering What do we need to know about the problem? When does it happen? How? To whom? Why? Brainstorm solutions Develop a list of possibilities Compare the pros and cons of each option Examine each possibility and choose one to test Test selected solution & evaluate the effectiveness of the solution Did it solve the problem? Did it create new problems? Repeat ,EZIWXYHIRXWƤRMWLXLIDesign Analysis Assignment provided in the Activities and Resources HSGYQIRXXSMHIRXMJ\]WTIGMƤG changes to a game and guess about what effects those changes would have on the game. unity.com | 19 © 2020 Unity Technologies Critical Thinking in Game Design 02 4. Setting Up a Project in the Unity Editor Navigating in the Unity Editor Importing Assets The Game View and the Scene View Have students complete the Implement a Microgame Assignment in the Activities and Resources document. This will give them all the resources they need to put together a small playable game and begin tweaking it. unity.com | 20 © 2020 Unity Technologies Critical Thinking in Game Design 02 Learning ObjectiveDemonstration of LearningBloom’s Domain 02.1 (IƤRIGVIEXMZIERHGVMXMGEPXLMROMRK0IEVRIVWGERHIƤRIXLIQIERMRKSJ critical thinking and creative thinking. 1. Remember 02.2 Learners can explain contemporary problem solving methods, providing examples. Learners can explain the Six-step Problem-solving Process and can associate the steps with real-world examples. 1. Remember 02.3 Demonstrate the ability to determine essential questions, issues, and/or problems. Given a paragraph, learners can determine the key questions or issues within the content. 2. Understand 02.4 Use contemporary problem-solving techniques. Learners can use brainstorming XIGLRMUYIWXSKIRIVEXIEXPIEWXƤZI possible solutions for a given situation or problem. 3. Apply 02.5 Differentiate between a game review and a critical analysis of a game. Learners can distinguish a game review versus a critical analysis of a game. 2. Understand 02.6 Break down a problem into its component parts, set priorities, and explore methods of resolution. Given a series of scenarios, learners can recognize and prioritize likely failure TSMRXWWXYH\]MRKGSQQSRQSHMƤGEXMSRW used to avoid such failure points. 5. Evaluate 02.C Learning Objectives and Assessments unity.com | 21 © 2020 Unity Technologies Critical Thinking in Game Design 02 Learning ObjectiveDemonstration of LearningBloom’s Domain 02.7 Gather, generate, and evaluate relevant information through effective research. When supplied with an unfamiliar topic, learners can demonstrate an ability to research the topic, correlating multiple sources of relevant information. 3. Analyze 02.8 Develop informed conclusions/ solutions. Learners can compile all information to propose the most valid solutions. 5. Evaluate 02.9 Use logic and reasoning to identify the strengths and weaknesses of alternative solutions, conclusions, or approaches to problems. Supplied with a particular problem scenario, learners can generate a range of solutions and courses of action with FIRIƤXWGSWXWERHVMWOWEWWSGMEXIH\[MXL each. 6. Create 02.10 Consider the relative costs and FIRIƤXWSJTSXIRXMEPEGXMSRWXSGLSSWI the most appropriate one. After being presented with an application design problem that includes multiple possible solutions, the learner will analyze the strengths and weaknesses of each solution, deciding on the best option. 3. Analyze 02.11 Use oral and written communication skills to clearly communicate and defend their positions or conclusions \[MXLVIKEVHXSEWXSV\]WTIGMƤGMWWYISV evaluation. Learners can play a game reviewed in an online gaming magazine, write their own review, and compare it with the online reviewers, defending their opinions and conclusions. 5. Evaluate 02.12 Predict when problems arise or are likely to arise within a given scenario. Given a series of scenarios, learners can predict failure points and recommend QSHMƤGEXMSRWXSEZSMHXLIJEMPYVITSMRXW 5. Evaluate unity.com | 22 © 2020 Unity Technologies Critical Thinking in Game Design 02 02.D Standards Alignment Guide 02.D.1: Professional Standards for Interactive Application and Video Game Creation 1.1.7: Analyze and evaluate the effectiveness of several game mechanics used in an existing game. 1.1.20: Examine an existing game and critique its design with respect to functionality and usability. 1.1.21: Examine an existing game and critique its design with respect to artistic impression and emotional response. 1.2.3: Describe problem-solving processes and their application. 1.2.5: Describe methods for establishing priorities. 1.2.6: Explain the concept of “trade-offs” in the design process. 1.2.7: Explain how the “optimum solution” is not always the “best” solution. 1.3.8: Use brainstorming techniques to creatively generate a multitude of possible solutions to a stated problem. 02.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.11-12.1 'MXIWTIGMƤGXI\\XYEPIZMHIRGIXSWYTTSVXEREP\]WMWSJWGMIRGIERHXIGLRMGEPXI\\XW attending to important distinctions the author makes and to any gaps or inconsistencies in the account. CCSS.ELA-Literacy.RST.11-12.2 Determine the central ideas or conclusions of a text; summarize complex concepts, processes, or information presented in a text by paraphrasing them in simpler but still accurate terms. CCSS.ELA-Literacy.RST.11-12.7 Integrate and evaluate multiple sources of information presented in diverse formats and media (e.g., quantitative data, video, multimedia) in order to address a question or solve a problem. CCSS.ELA-Literacy.W.11-12.1 Write arguments to support claims in an analysis of substantive topics or texts, YWMRKZEPMHVIEWSRMRKERHVIPIZERXERHWYJƤGMIRXIZMHIRGI CCSS.ELA-Literacy.W.11-12.2 Write informative/explanatory texts to examine and convey complex ideas, concepts, and information clearly and accurately through the effective selection, organization, and analysis of content. 02.D.3: Stem Career Clusters (SCC) SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. SCC04 Information Technology Applications: 9WIMRJSVQEXMSRXIGLRSPSK\]XSSPWWTIGMƤGXSXLIGEVIIVGPYWXIVXS access, manage, integrate, and create information. 02.D.4: 21st Century Skills Creativity and Innovation: Think Creatively Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly unity.com | 23 © 2020 Unity Technologies Critical Thinking in Game Design 02 02.D.5: Next-Generation Science Standards (NGSS) NGSS1: %WOMRKUYIWXMSRWJSVWGMIRGI ERHHIƤRMRKTVSFPIQWJSVIRKMRIIVMRK NGSS3: Planning and carrying out investigations NGSS8: Obtaining, evaluating, and communicating information 02.D.6: ISTE Standards 3.A: Students plan and employ effective research strategies to locate information and other resources for their intellectual or creative pursuits. 3.B: Students evaluate the accuracy, perspective, credibility and relevance of information, media, data or other resources. 4.B: Students select and use digital tools to plan and manage a design process that considers design constraints and calculated risks. unity.com | 24 © 2020 Unity Technologies Critical Thinking in Game Design 02 Game Design Theory 03.A Unit Description Activities in this unit of study are designed to foster an understanding of fundamental game design principles, including genres, goals, mechanics, player motivation, structure, and gameplay. Learners will analyze different types of 2D and 3D games, create proposals for building common game types, and begin learning the process of building games using the Unity Editor. 03.A Unit Description ......................................................24 03.B Unit Outline .............................................................25 03.C Learning Objectives and Assessments ................28 03.D Standards Alignment Guide ...................................30 03 unity.com | 25 © 2020 Unity Technologies Game Design Theory 03 03.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Introduction to game genres Broad categories and distinguishing characteristics Games are grouped in genres based on how they’re played, as opposed to their themes or narrative. Comparison of 2D and 3D game environments Common environment mechanics, player views, and player controls Player controls describe how the players interact with the game. Hold a class discussion about the difference between genres in movies and novels vs video games. Genres in games are connected to how they’re played: • \*47ƤVWXTIVWSR shooter) • RPG (role-playing game) • Action • Puzzle • Bullet hell, etc. Have students complete the Genre Exploration Assignment in the Activities and Resources Document to solidify their understanding of genre in games. unity.com | 26 © 2020 Unity Technologies Game Design Theory 03 Lesson TitleLesson Topics Suggested Activities/Resources 2. Overview of key components of video game design Game concept • Description • Platform • Genre Backstory • World and character construction • Emotion, Mood and Theme Game mechanics Rules • Operational • Constitutive • Implicit • +EQIƥS\[ • Gameplay Game balance Game balance refers to the ways that games can be fair or unfair to their players. Games can test player MRXIPPIGXQIQSV\]SVVIƥI\\IWERH “fair” can mean different things in each case. Goals and objectives Goals and objectives demark player progress. Reward and motivation Rewards motivate player behavior towards goals. Logic and challenges Some games demand skill, others demand that players use logic and deductive reasoning to advance. Game physics and mathematics Accurate physics models are some of the most resource intensive tasks that games do. Art/sound The visual style and sound of a game are crucial to connect to an audience and communicate the game’s ideas to players. Resource management 'SQTYXMRKVIWSYVGIWEVIƤRMXI Memory and CPU cycles (processing power) can’t be wasted by game designers indiscriminately. Have students complete the Student-Led Game Analysis Assignment for Unit 3 in the Activities and Resources document to help them think critically about games they’re familiar with. Have students complete the Game Design Document Outline Assignment in the Activities and Resources document to begin sketching out their design document for their capstone project. unity.com | 27 © 2020 Unity Technologies Game Design Theory 03 3. Introduction to rapid iteration and prototyping The iterate-test cycle Designers build prototypes, test them, VIƤRIXLIQERHXLIRXIWXXLIQEKEMR How to know what to test Tests should have a clear question they’re trying to answer. How to know what changes to make 7MQMPEVP\]\[LIRHIWMKRIVWVIƤRIXLIMV prototypes, they should change only a few things at a time to make sure their changes are the right ones. Have students complete the Rules on Three Levels Assignment in the Activities and Resources document. When they’re done, discuss how you might test this new game, and what rules you might iterate on. 4. Puzzle Design (Optional) What is a puzzle in a game? Puzzles ask players to use their deductive skills, logic, or memory to move forward. Why are puzzles fun? Puzzles can break up action WIUYIRGIWƥIWLSYXWXSV\]ERH provide a different type of challenge. How to make a good puzzle • Good puzzles should be tough to solve, but their solutions should be obvious in retrospect. • Think carefully about what the player needs to know to solve the puzzle. Make sure they have XLEXMRJSVQEXMSR 5. Modifying content in the Unity Editor Use premade assets to change how a microgame works in Unity. Develop new assets, import them into Unity, and use them in a microgame. Have students complete the Implementing a New Microgame Activity in the Activities and Resources document to reinforce the learning they’ve done around downloading and modifying assets. unity.com | 28 © 2020 Unity Technologies Game Design Theory 03 Learning ObjectiveDemonstration of LearningBloom’s Domain 03.1 Identify common game genres.Supplied with a list of video game descriptions, the learner will be able to identify the correct genre(s). 1. Remember 03.2 Categorize contemporary game genres. Supplied with a list of gameplay characteristics, the learner will be able to categorize each 2. Understand 03.3 Summarize important considerations in game design. Upon request, the learner will be able to verbally summarize the important considerations in 3. Apply 03.4 Describe rule creation and elements of player challenge Following the Rules on Three Levels Assignment, the learner, in writing, will be able to identify, summarize, and interpret the implicit, operational, and constitutive rules of several contemporary video games. 4. Analyze 03.5 Explain the theories behind player motivation. The learner will be able to explain, in writing, the 11 basic psychological needs that people can meet by playing video games. 4. Analyze 03.6 Generate models and materials for project(s) created within the Unity Editor. Using the Unity Editor, the learner will be able to create models and materials (per technical guidelines set by the instructor) \[MXLMRXLIGSRƤRIWSJXLI9RMX\])HMXSV training assignments. 6. Create 03.C Learning Objectives and Assessments unity.com | 29 © 2020 Unity Technologies Game Design Theory 03 Learning ObjectiveDemonstration of LearningBloom’s Domain 03.7 Apply fundamental concepts of project management. Supplied with a Project Charter Form (PCF), learners will be able to integrate the principles of project management toward the completion of a basic project charter for their capstone project. 3. Apply 03.8 Create a game proposal for a one- button game. The learner will be able to write a game proposal for a one-button game. 6. Create 03.9 Differentiate 2D from 3D game environments. Within live, small group settings, learners will be able to communicate the difference between top-down 2D game environments and ground-up 3D game environments, citing contemporary examples as necessary to illustrate key points of differentiation. 4. Analyze 03.10 Examine the critical elements of puzzle design. The learner will be able to compose a written analysis of puzzle design; categorizing and contrasting popular, contemporary puzzle examples and debating the quality and effectiveness (i.e., good vs bad) of puzzle design products in the market. 5. Evaluate 03.11 Evaluate the importance of iteration and rapid prototyping in game design. Supplied with a complete review of several contemporary games, learners will be able to evaluate (in writing) the role and importance of rapid prototyping and iteration with the game production TVSGIWWGMXMRKWTIGMƤGI\\EQTPIWJSV each game. Within live, small-group environments, the learner will also be able to select a game and judge the importance of iteration and rapid prototyping within the production process, defending their statements and debating opposing views. 5. Evaluate unity.com | 30 © 2020 Unity Technologies Game Design Theory 03 03.D Standards Alignment Guide 03.D.1: Professional Standards for Interactive Application and Video Game Creation Identify the primary steps in the design process (Conceptualize, Prototype, Test, Analyze). Explain the role of iteration in the design process. Explain the difference between game mechanics and gameplay 1.1.12: Evaluate and describe various 2D and 3D, single and multiuser genre. 1.2.8: Describe the difference between goals and objectives. 1.6.2: Demonstrate understanding and ability to use game mechanics to improve gameplay. 03.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.11-12.9 Synthesize information from a range of sources (e.g., texts, experiments, WMQYPEXMSRW MRXSEGSLIVIRXYRHIVWXERHMRKSJETVSGIWWTLIRSQIRSRSVGSRGITXVIWSPZMRKGSRƥMGXMRKMRJSVQEXMSR when possible. CCSS.ELA-Literacy.CCRA.R.10 Read and comprehend complex literary and informational texts independently and TVSƤGMIRXP\] CCSS.ELA-Literacy.W.11-12.2 Write informative/explanatory texts to examine and convey complex ideas, concepts, and information clearly and accurately through the effective selection, organization, and analysis of content. CCSS.ELA-Literacy.W.11-12.7 Conduct short as well as more sustained research projects to answer a question (including a self-generated question) or solve a problem, narrow or broaden the inquiry when appropriate, and synthesize multiple sources on the subject, demonstrating an understanding of the subject under investigation. 03.D.3: Stem Career Clusters (SCC) SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information 03.D.4: 21st Century Skills Learning and Innovation Creativity and Innovation: Think Creatively, Implement Innovations Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly Information, Media and Technology Skills Information Literacy: Access and Evaluate Information Life and Career Skills Initiative and Self-direction: Manage Goals and Time, Work Independently, Be Self-directed Learners TextTextTextText Text Text 1.1.1: Identify the primary steps in the design process (Conceptualize, Prototype, Test, Analyze). 1.1.3: Explain the role of iteration in the design process. 1.1.4: Explain the difference between game mechanics and gameplay. unity.com | 31 © 2020 Unity Technologies Game Design Theory 03 03.D.5: Next Generation Science Standards (NGSS) NGSS8: Obtaining, evaluating, and communicating information 03.D.6: ISTE Standards 1D: Students understand the fundamental concepts of technology operations, demonstrate the ability to choose, use and troubleshoot current technologies and are able to transfer their knowledge to explore emerging technologies. 4C: 7XYHIRXWHIZIPSTXIWXERHVIƤRITVSXSX\]TIWEWTEVXSJEG\]GPMGEPHIWMKRTVSGIWW 6C: Students communicate complex ideas clearly and effectively by creating or using a variety of digital objects such as visualizations, models or simulations. unity.com | 32 © 2020 Unity Technologies Critical Thinking in Game Design 02 Story and Game Creation 04.A Unit Description This unit of study introduces the learners to the major elements of narrative for interactive environments. The focus is on the concepts of storytelling in relation to game design. Learners will explore the fundamentals of narrative creation and the crucial importance of interactive storytelling. Learners will also use storyboards to create a visual sequence of story development and gameplay. 04.A Unit Description ......................................................32 04.B Unit Outline .............................................................33 04.C Learning Objectives and Assessments ................35 04.D Standards Alignment Guide ...................................36 04 unity.com | 33 © 2020 Unity Technologies Story and Game Creation 04 04.A Unit Description (Cont’d) Games offer some unique opportunities for storytelling. This unit will discuss simple ways to use branching narratives and environmental storytelling, two narrative techniques unique to games. Branching narratives (like Choose Your Own Adventure stories) use the procedural nature of computers to let games respond to simple choices made by the player. Environmental storytelling relies on the physical environment that the player moves through to tell part of the story. Both have simple implementations that students can use. 04.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Parts of a story Events/structure • An “inciting event” sets the story in motion. • What events help propel the story along? • How do the player’s choices change the story’s direction, if at all? • A climax resolves the events of the story Characters and character development • Main characters change and evolve over the course of a game. • Is there a relationship between the character’s mechanical abilities in the game and their position in the story? Character archetypes • What are character archetypes and why are they useful? • Archetypes like “Hero,” “Helper,” and “Foil” help us make sense of stories by giving us familiar dynamics. • We can use archetypes to subvert expectations, too. Visual design of characters • How characters look communicates a lot about the character and the world that they’re in. • How do you make a visually compelling character? • Environments • This is the location or locations where the story takes place. • Some games have lots of environments, some of them have very few. • Environments are crucial for helping players make sense of the game world. Theme • The theme of a game or story is a central concern that comes up again and again. • Themes can be broad like “What is a hero?” or more WTIGMƤGPMOIŰ&IXVE\]EPJVSQ\[MXLMREJEQMP\]ű Genre • Game genres have as much to do with how the game is played as they do with the content of the story. • Genre can also contain elements like “tone” or “mood.” Story diagram: Have students pick a story they’re familiar with and diagram the inciting incident, rising action, climax, and falling action. unity.com | 34 © 2020 Unity Technologies Story and Game Creation 04 Lesson TitleLesson Topics Suggested Activities/Resources 2. Storytelling in games Player agency • Agency is the ability to make choices. • As a designer, it’s your job to determine how the choices players make affect the story and the game. Branching structures • When players make some choices, they might see different outcomes, this is called a “branching” storyline. • Sometimes branches can come back together, but be careful that players don’t feel like their choices are meaningless. Environmental storytelling • Environmental storytelling is when information about the story is in the environment that players encounter, instead of having a character say it out loud. • Murder mysteries are a good example of environmental storytelling: readers must understand the story of what happened from the scene of the crime. Have students get into groups and complete the Group Story Generation Activity in the Activities and Resources document to generate ideas for stories that might be turned into video games. (MWGYWWWTIGMƤGHVEQEXMGTSMRXWMR those stories. How can designers make those dramatic moments feel exciting? How can we give players the feeling of being there instead of just watching? 3. Tools for stories Storyboards • A storyboard is a tool used to show different shots or scenes in a story. • Storyboards are an important tool for communicating an idea visually. • Storyboards can be short, or very complex. Game Design Document • The Game Design Document is a record of every concept, asset, and mechanic that is going to go into a game. • It is the most important tool for a team to collaborate on, because it gives everyone information about the state of the game. Terrain tools and environmental objects • The Unity Editor has a powerful terrain editing tool. • This lets users create realistic environments such as meadows, canyons, or urban scenes. Work Breakdown Structure A Work Breakdown Structure document shows each task in the creation of a game, along with a clear estimate of how long that task will take. Have students make a storyboard for the story that they diagrammed above. Have students complete the Game Design Document Storyboard Assignment in the Activities and Resources document to deepen their understanding of the stories in their proposed prototype games. Have students complete the Work Breakdown Structure Exercise in the Activities and Resources document and focus on trying to get good estimates for how much time each asset will take to create. Think about learning time, and how to reuse work. Have students complete the Terrain Activity in the Activities and Resources document to begin practicing with Unity’s powerful Terrain Tool. unity.com | 35 © 2020 Unity Technologies Story and Game Creation 04 Learning ObjectiveDemonstration of LearningBloom’s Domain 04.1 Deconstruct and review the general principles of storytelling. Given a brief storyline, the learner \[MPPGVIEXIGLEVEGXIVTVSƤPIWSJXLI protagonist and antagonist. 4. Analysis 04.2 )\\TPEMRXLIFIRIƤXWSJWXSV\]XIPPMRKERH the power of narrative. Given a set of character descriptions, the learner will be able to categorize the archetype. 2. Comprehension 04.3 Describe the process of creating characters and designing character actions within the storyline. +MZIREWTIGMƤGEVGLIX\]TIXLIPIEVRIV\[MPP be able to summarize the characteristics and typical function 1. Knowledge 04.4 Explain the use of storyboarding in game design. Given a storyboard, the learner will be able to identify the important narrative and gameplay beats in the storyboard. 3. Application 04.5 -HIRXMJ\]XLIFIRIƤXWSJGVIEXMRKE storyboard. Given a storyboard, the learner will be able to identify the important narrative and gameplay beats in the storyboard. 2. Comprehension 04.6 Explain how storyboard techniques can be used to further a storyline. Given a story, the learner will be able to construct a storyboard showing the important transitions and beats. 5. Synthesis 04.7 Create and control terrain within the Unity Editor. The learner is able to build recognizable terrain in the Unity Editor. 3. Application 04.8 Differentiate between the Concept Document, the Story Treatment, and the Game Design Document (GDD). The learner is able to identify the uses of the GDD, the Concept Document, and the Story Treatment. 1. Knowledge 04.9 Distinguish components of a Work Breakdown Structure (WBS) Given a project, a learner will be able to break down tasks and assign estimated times to those tasks. 6. Evaluation 04.C Learning Objectives and Assessments unity.com | 36 © 2020 Unity Technologies Story and Game Creation 04 04.D Standards Alignment Guide 04.D.1: Professional Standards for Interactive Application and Video Game Creation 1.1.8: Investigate the concept of “Interactive Narrative” and explain how it could pertain to game design. 1.1.10: Determine the relevance of character development, backstory and attributes (power, speed, intelligence, empathy, etc.) in game design. 1.3.1: Use appropriate, accurate terminology when communicating about artistic concepts and technology. 1.3.2: Write effectively, producing clear, correct, and coherent prose adapted to the purpose and audience. 1.3.13: Assemble sketches and annotations into storyboards and presentations for both print and web. 1.3.14: Create a narrative and storyboard for a new interactive app/video game. 2.3.10: Explain what differentiates characters from other objects. 04.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.W.11-12.2 Write informative/explanatory texts to examine and convey complex ideas, concepts, and information clearly and accurately through the effective selection, organization, and analysis of content. CCSS.ELA-Literacy.W.11-12.3 Write narratives to develop real or imagined experiences or events using effective technique, well-chosen details, and well-structured event sequences. CCSS.ELA-Literacy.W.11-12.4 Produce clear and coherent writing in which the development, organization, and style are appropriate to the task, purpose, and audience. CCSS.ELA-Literacy.W.11-12.5 Develop and strengthen writing as needed by planning, revising, editing, rewriting, or XV\]MRKERI\[ETTVSEGLJSGYWMRKSREHHVIWWMRK\[LEXMWQSWXWMKRMƤGERXJSVEWTIGMƤGTYVTSWIERHEYHMIRGI CCSS.ELA-Literacy.W.11-12.6 Use technology, including the Internet, to produce, publish, and update individual or shared writing products in response to ongoing feedback, including new arguments or information. CCSS.ELA-Literacy.W.11-12.10 ;VMXIVSYXMRIP\]SZIVI\\XIRHIHXMQIJVEQIWXMQIJSVVIWIEVGLVIƥIGXMSRERH revision) and shorter time frames (a single sitting or a day or two) for a range of tasks, purposes, and audiences. 04.D.3: Stem Career Clusters (SCC) SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. SCC04 Information Technology Applications: 9WIMRJSVQEXMSRXIGLRSPSK\]XSSPWWTIGMƤGXSXLIGEVIIVGPYWXIVXS access, manage, integrate, and create information. SCC07 Leadership and Teamwork: Use leadership and teamwork skills in collaborating with others to accomplish organizational goals and objectives. unity.com | 37 © 2020 Unity Technologies Story and Game Creation 04 04.D.4: 21st Century Skills Learning and Innovation Creativity and Innovation: Think Creatively, Work Creatively with Others Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly, Collaborate with Others Information, Media and Technology Skills Information Literacy: Access and Evaluate Information, Use and Manage Information ICT (Information, Communications and Technology) Literacy: Apply Technology Effectively Life and Career Skills Initiative and Self-direction: Manage Goals and Time, Work Independently, Be Self-directed Learners Productivity and Accountability: Manage Projects, Produce Results 04.D.5: Next-Generation Science Standards (NGSS) NGSS8: Obtaining, evaluating, and communicating information 04.D.6: ISTE Standards 4C: 7XYHIRXWHIZIPSTXIWXERHVIƤRITVSXSX\]TIWEWTEVXSJEG\]GPMGEPHIWMKRTVSGIWW 6A: Students choose the appropriate platforms and tools for meeting the desired objectives of their creation or communication. 6B: Students create original works or responsibly repurpose or remix digital resources into new creations. unity.com | 38 © 2020 Unity Technologies Critical Thinking in Game Design 02 System Dynamics and Scripting Fundamentals 05.A Unit Description The focus of this unit of study is to introduce learners to the concepts of system thinking, using a set of simple examples developed in Unity. Learners will begin to understand the interdependent elements of game design – for example, the connection between the velocity of a game object, and XLIHMJƤGYPX\]SJXLIKEQI0IEVRIVW\[MPPEPWSVIGSKRM^IXLIRIIHJSVKEQI documentation and begin developing their own scripts. 05.A Unit Description ......................................................38 05.B Unit Outline .............................................................39 05.C Learning Objectives and Assessments ................41 05.D Standards Alignment Guide ...................................42 05 unity.com | 39 © 2020 Unity Technologies System Dynamics and Scripting Fundamentals 05 05.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Components of a Game Design Document (GDD) System thinking and system awareness What are the inputs (e.g., player controls) and outputs (e.g., movement) of the system? How does changing inputs change outputs? Design for game development What makes a game fun? What makes a game challenging? What makes a game boring? Establishing the game purpose What do you want this game to feel like? How might you make that happen? Identifying the audience and understanding the player Who do you think would like to play your KEQI#&IWTIGMƤG Why would your game appeal to that person? Goals and objectives for games How does your game end? How does a player win? How does a player lose? Creating the game script and narrative What is the story of your game? ;LEXMWXLIGSRƥMGXMRXLIWXSV\]# How is it resolved? Have students complete the Project Proposal for Capstone Activity in the Activities and Resources document. This helps them focus their design skills on the game they’re planning on making for their capstone project. Consider following this assignment with the Systems Thinking and Game Development Assignment in the Activities and Resources document. 2. Systems thinking and design Using the script and storyboard Narrative fundamentals Storyboarding Player Progress Sequences and triggers Player actions vs system actions Player triggers System triggers Flowcharting the player process InputsJOutputs Creating a complete Game Design Document (GDD) Project: Build a GDD for a simple game. Every element of the game that the player encounters should be represented in the GDD. Use a simple project as an example. Have students complete the Systems Thinking and Game Development Planning Assignment in the Activities and Resources document. Ask them to think about their capstone project as they work on this assignment. Consider following this assignment with the Creating a Game Development Plan Assignment in the Activities and Resources document. unity.com | 40 © 2020 Unity Technologies System Dynamics and Scripting Fundamentals 05 Lesson TitleLesson Topics Suggested Activities/Resources 3. Anatomy of creating scripts Class A class is a set of methods and data that are grouped together in order to be used together. Declarations A declaration is when values are assigned to variables. Variables Variables are containers that hold different types of data. Event sequencing Events in a script proceed from top to bottom, unless the script contains a loop (FOR, WHILE) or a branching statement (IF) Have students complete the Building Learner Scripting Skills Assignment in the Activities and Resources Document. Students will set up new projects, download new assets, and begin writing simple scripts. unity.com | 41 © 2020 Unity Technologies System Dynamics and Scripting Fundamentals 05 Learning ObjectiveDemonstration of LearningBloom’s Domain 05.1 Describe the system model as related to game development. The learner will be able to summarize, in writing, the components of the design and problem-solving process. 1. Remember 05.2 Create a system model to describe the connections between inputs and outputs in a game. The learner will be able to diagram a “system model” that clearly depicts the game development process and interdependence of game components. 3. Apply 05.3 Create a basic script and attach it to one or more game objects. Within the Unity Editor, learners are able to create simple script(s) to perform WTIGMƤGEGXMSRWMREKEQI 1. Remember 05.4 Populate properties with values or other game objects. Within the Unity Editor, learners are able to populate properties with values or other game objects. 3. Apply 05.5 Sequence events by writing simple functions within a script. Learners will create scripts that affect game functions and connect them to game objects in order to see those functions in action. 3. Apply 05.6 Analyze the sequencing of game actions. When provided with several examples, learners are able to effectively analyze the sequencing of game actions. 4. Analyze 05.7 Critique Game Design Documents (GDD). When provided samples, learners will be able to critique the completeness of a Game Design Document (GDD) for a simple interactive application or video game. 5. Evaluate 05.C Learning Objectives and Assessments unity.com | 42 © 2020 Unity Technologies System Dynamics and Scripting Fundamentals 05 05.D Standards Alignment Guide 05.D.1: Professional Standards for Interactive Application and Video Game Creation 1.2.2: Develop problem statements and design briefs. 1.2.3: Describe problem-solving processes and their application. 1.2.4: (IZIPSTWTIGMƤGEXMSRWGVMXIVMEERHGSRWXVEMRXW XSSTXMQM^IWSPYXMSRW 1.2.12: Sequence objectives and tasks logically. 1.2.13: Explain and demonstrate project management techniques. 1.3.1: Identify and apply appropriate, accurate terminology when communicating about artistic concepts and technology. 1.3.5: Develop, analyze and communicate design ideas using annotated sketches, technical drawings, graphical, mathematical and/or physical models. 1.3.8: Apply brainstorming techniques to creatively generate a multitude of possible solutions to a stated problem. 1.3.14: Create a narrative and storyboard for a new interactive app/video game. 1.8.4: Create, iterate and maintain a full set of game design documentation. 2.7.1: Demonstrate an understanding of mathematical concepts, logic and syntax shared by various programming languages. 2.7.2: Demonstrate an understanding of “if” and “switch” statements. 2.7.3: Demonstrate an understanding of loops to manage recurring events. 2.7.4: Demonstrate an understanding of coroutines. 2.7.5: Demonstrate an understanding of Functions, Constants and Variables. 2.7.6: (IGPEVIERHYTHEXI\*MIPHWERH4VSTIVXMIW\[MXLZEVMIHEGGIWWQSHMƤIVW 2.7.9: Demonstrate an understanding of proper use of Classes and Functions 05.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.9-10.1 'MXIWTIGMƤGXI\\XYEPIZMHIRGIXSWYTTSVXEREP\]WMWSJWGMIRGIERHXIGLRMGEPXI\\XW attending to the precise details of explanations or descriptions. CCSS.ELA-Literacy.RST.9-10.3 Follow precisely a complex multi-step procedure when carrying out experiments, XEOMRKQIEWYVIQIRXWSVTIVJSVQMRKXIGLRMGEPXEWOWEXXIRHMRKXSWTIGMEPGEWIWSVI\\GITXMSRWHIƤRIHMRXLIXI\\X CCSS.ELA-Literacy.RST.11-12.3 Follow precisely a complex multi-step procedure when carrying out experiments, XEOMRKQIEWYVIQIRXWSVTIVJSVQMRKXIGLRMGEPXEWOWEREP\]^IXLIWTIGMƤGVIWYPXWFEWIHSRI\\TPEREXMSRWMRXLIXI\\X CCSS.ELA-Literacy.RST.11-12.6 Analyze the author’s purpose in providing an explanation, describing a procedure, or discussing an experiment in a text, identifying important issues that remain unresolved. CCSS.ELA-Literacy.RST.11-12.9 Synthesize information from a range of sources (e.g., texts, experiments, WMQYPEXMSRW MRXSEGSLIVIRXYRHIVWXERHMRKSJETVSGIWWTLIRSQIRSRSVGSRGITXVIWSPZMRKGSRƥMGXMRKMRJSVQEXMSR when possible. unity.com | 43 © 2020 Unity Technologies System Dynamics and Scripting Fundamentals 05 05.D.3: Stem Career Clusters (SCC) SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. 05.D.4: 21st Century Skills Learning and Innovation Creativity and Innovation: Think Creatively, Implement Innovations Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly Information, Media and Technology Skills Information Literacy: Access and Evaluate Information Life and Career Skills Initiative and self-direction: Manage Goals and Time, Work Independently, Be Self-directed Learners 05.D.5: Next-Generation Science Standards (NGSS) NGSS1: %WOMRKUYIWXMSRWJSVWGMIRGI ERHHIƤRMRKTVSFPIQWJSVIRKMRIIVMRK NGSS8: Obtaining, evaluating, and communicating information 05.D.6: ISTE Standards 3C: Students curate information from digital resources using a variety of tools and methods to create collections of artifacts that demonstrate meaningful connections or conclusions. 4C: 7XYHIRXWHIZIPSTXIWXERHVIƤRITVSXSX\]TIWEWTEVXSJEG\]GPMGEPHIWMKRTVSGIWW 5D: Students understand how automation works and use algorithmic thinking to develop a sequence of steps to create and test automated solutions. unity.com | 44 © 2020 Unity Technologies Critical Thinking in Game Design 02 Game Development Tools, Formats, and Asset Management 06.A Unit Description Activities in this unit of study are constructed to facilitate the design, development, and analysis of existing tools used for game development. This unit will answer some questions about what the Unity Engine actually is and how it’s best used in the creation of interactive applications and video games. Additionally, the unit covers strategies for good asset management ERHHMWGYWWIWHMJJIVIRXƤPIJSVQEXWWYTTSVXIHF\]9RMX\]ERHLS\[XSMQTSVXERH apply them to projects. 06.A Unit Description ......................................................44 06.B Unit Outline .............................................................45 06.C Learning Objectives and Assessments ................46 06.D Standards Alignment Guide ...................................47 06 unity.com | 45 © 2020 Unity Technologies Game Development Tools, Formats, and Asset Management 06 06.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Game engines What is a game engine? Game engines are sets of tools that make the design process easier. 3D engines Many game engines are 3D engines, which allow users to build 3D environments. Have students brainstorm a list of all of the platforms they can think of, and then research them. Which ones have similar architecture? Which ones are very different? (For example, Xbox is basically PC architecture, but the Mac and the iPhone are very different. 2. Resource development tools +VETLMGƼPIJSVQEXWERHIHMXSVW .jpg, .gif, .png, .img :MHISƼPIJSVQEXWERHIHMXSVW .mp4, .avi, .mov 7SYRHƼPIJSVQEXWERHIHMXSVW .wav, .ogg %WWIXƼPIJSVQEXW Assorted %WOWXYHIRXW\[LEXOMRHWSJƤPI formats work best for what kinds of media. Discuss “lossy” vs lossless audio. 3. Asset management in Unity The Hierarchy window How is it organized? Parent-child relationships The Project window Importing assets +SSHƤPIQEREKIQIRXWXVEXIKMIW Give students a chance to do some free building in Unity. What’s easy to build? What’s hard? Talk students through organizing their assets. How do assets get grouped by type? Why might they use nested folders? 4. Physics engines Collision detection Dynamic simulation: rigid body and soft-body Have students complete the Simple Coding Introduction in the Activities and Resources document. This will help students understand the basic relationships in code. 5. Libraries What is a software library: Purpose and examples Dynamic versus static Show students how to access the Unity Asset Store. Demonstrate the wealth of free libraries on the store containing assets, scripts, etc. unity.com | 46 © 2020 Unity Technologies Game Development Tools, Formats, and Asset Management 06 Learning ObjectiveDemonstration of LearningBloom’s Domain 06.1 Explain the function and purpose of physics engines. Learners will be able to hypothesize several ways in which a physics engine might be used within a game 4. Analyze 06.2 Identify contemporary game development tools. Learners will be able to discuss the principles of ray casting and explain why it is used. 1. Remember 06.3 ;VMXIWGVMTXWXLEXTIVJSVQWTIGMƤG functions. Learners will be able to write scripts that move an object in response to player input. 3. Apply 06.4 Understand basic Asset management.The learner will understand how and why to group assets into folders, and the nature of parent-child relationships in objects. 3. Apply 06.5 Explain the purpose of dynamic libraries. The learner will be able to compare purposes of static and dynamic libraries and justify recommendations for the use of each in particular situations. 1. Remember 06.6 Explain the function and purpose of sound editing tools. Learners will be familiar with at least one free sound editor. 1. Remember 06.7 Build simple scripts that take player input and translate it into game actions. Learners will be able to write scripts that use Start and GetKeyDown keywords, and \[LMGLVYRƤ\\IH9THEXIW\[MXLMREKMZIR project development. 3. Apply 06.8 Understand the relationships between different types of assets. Learners will be familiar with the suite of tools they’ll need to use to build their capstone projects. 5. Evaluate 06.C Learning Objectives and Assessments unity.com | 47 © 2020 Unity Technologies Game Development Tools, Formats, and Asset Management 06 06.D Standards Alignment Guide 06.D.1: Professional Standards for Interactive Application and Video Game Creation 1.7.1: Assess and adapt technology tools and processes for producing deliverables that meet requirements and quality standards. 1.7.9: Demonstrate a working knowledge of game development tools. 1.7.12: )\\TPEMRXLIYWEKISJKVETLMGƤPIWJSVQEXWERHƤPIMRXIVSTIVEFMPMX\] 1.7.13: )\\TPEMRXLIYWEKISJZMHISƤPIJSVQEXWERHƤPIMRXIVSTIVEFMPMX\] 1.7.14: )\\TPEMRXLIYWEKISJEYHMSƤPIJSVQEXWERHƤPIMRXIVSTIVEFMPMX\] 2.3.1: -QTSVXEWWIXWJVSQETTVSTVMEXIƤPIJSVQEXWJSVYWIMRHIZIPSTQIRX 2.7.13: Demonstrate an understanding of various programming interfaces. 06.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.11-12.7 Integrate and evaluate multiple sources of information presented in diverse formats and media (e.g., quantitative data, video, multimedia) in order to address a question or solve a problem. CCSS.ELA-Literacy.RST.11-12.9 Synthesize information from a range of sources (e.g., texts, experiments, WMQYPEXMSRW MRXSEGSLIVIRXYRHIVWXERHMRKSJETVSGIWWTLIRSQIRSRSVGSRGITXVIWSPZMRKGSRƥMGXMRKMRJSVQEXMSR when possible. CCSS.ELA-Literacy.RST.11-12.10 By the end of grade 12, read and comprehend science/technical texts in the KVEHIW''6XI\\XGSQTPI\\MX\]FERHMRHITIRHIRXP\]ERHTVSƤGMIRXP\] CCSS.ELA-Literacy.L.11-12.6 %GUYMVIERHYWIEGGYVEXIP\]KIRIVEPEGEHIQMGERHHSQEMRWTIGMƤG\[SVHWERHTLVEWIW WYJƤGMIRXJSVVIEHMRK\[VMXMRKWTIEOMRKERHPMWXIRMRKEXXLIGSPPIKIERHGEVIIVVIEHMRIWWPIZIPHIQSRWXVEXIMRHITIRHIRGIMR gathering vocabulary knowledge when considering a word or phrase important to comprehension or expression. 06.D.3: Stem Career Clusters (SCC) SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. SCC04 Information Technology Applications: 9WIMRJSVQEXMSRXIGLRSPSK\]XSSPWWTIGMƤGXSXLIGEVIIV cluster to access, manage, integrate, and create information. unity.com | 48 © 2020 Unity Technologies Game Development Tools, Formats, and Asset Management 06 06.D.4: 21st Century Skills Learning and Innovation Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly Information, Media and Technology Skills Information Literacy: Access and Evaluate Information ICT (Information, Communications and Technology) Literacy: Apply Technology Effectively Life and Career Skills Flexibility and Adaptability: Be Flexible 06.D.5: ISTE Standards 3A: Students plan and employ effective research strategies to locate information and other resources for their intellectual or creative pursuits. 5A: 7XYHIRXWJSVQYPEXITVSFPIQHIƤRMXMSRWWYMXIHJSVXIGLRSPSK\]EWWMWXIHQIXLSHWWYGLEWHEXEEREP\]WMW EFWXVEGXQSHIPWERHEPKSVMXLQMGXLMROMRKMRI\\TPSVMRKERHƤRHMRKWSPYXMSRW unity.com | 49 © 2020 Unity Technologies Critical Thinking in Game Design 02 Physics and Animation 07.A Unit Description Activities in this unit of study are designed to engage the learner, providing rich skill-building opportunities in areas of game interface creation for Human Computer Interfaces and Graphical User Interfaces. 07.A Unit Description ......................................................49 07.B Unit Outline .............................................................50 07.C Learning Objectives and Assessments ................51 07.D Standards Alignment Guide ...................................53 07 unity.com | 50 © 2020 Unity Technologies Physics and Animation 07 07.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Developing the game environment Components of the game environment The game environment comprises both the level that the player can see, and the scripts and elements that are invisible to the player. If-then statements One of the most basic and powerful tools in code is the ability to use if-then statements. These statements check a condition and activate if that condition is true. Scale and position Unity offers a simple and powerful way to change the scale of an object. Have students write a simple branching narrative using if-then language to describe how the story would change based on the actions of the player. 2. Physics in Unity Collisions and Rigidbody components • Rigidbody is a component that tells Unity to apply physics to an object. Without one, objects are like holograms. • Rigidbody components also note “collisions,” when two objects intersect. • Learners can use Rigidbody components to check if two things have collided and if-then statements to say what happens if this is the case. Have students complete the Character Controllers Activity in the Activities and Resources Document to set up some simple physics interactions between objects in their environments and their players. 3. Creating animations in Unity Simple animations • Unity can also use the Animation system to move objects. • Animations are created through the animation editor. Have learners complete the Animation within an Interface Activity in the Activities and Resources document. unity.com | 51 © 2020 Unity Technologies Physics and Animation 07 Learning ObjectiveDemonstration of LearningBloom’s Domain 07.1 Differentiate a graphical user interface (GUI) and a human machine interface (HMI). The learner will be able to differentiate a graphical user interface from a human machine interface. 4. Analyze 07.2 Identify contemporary game development tools. Learners will be able to summarize the role and purpose of controls that are (or should be) included in a GUI/HMI. 2. Understand 07.3 Use game interfaces across platforms and game genres. Learners will be able to explain why GUI needs might be different across different game genres, and develop a plan for the GUI for their own games. 2. Understand 07.4 Structure the game environment to enhance the player experience. The learner will accurately choose appropriate game assets and effectively assemble them into the game environment. 3. Apply 07.5 Explain the importance of hierarchical structures for managing game objects and transformations within the Unity Editor. Learners will be able to apply proper asset management techniques, employ effective hierarchical strategies, and perform adequate asset transformations \[MXLMRWTIGMƤGKEQIHIZIPSTQIRX projects. 3. Apply 07.6 Create, manipulate, and transform animation controllers. The learner will be able to integrate animator controllers, animator components, and blend trees that meet the requirements of a given project. 1. Remember 07.7 Create blended animations using blend trees. Learners will be able to apply and manage humanoid avatars within the requirements of a given project. 6. Create 07.C Learning Objectives and Assessments unity.com | 52 © 2020 Unity Technologies Physics and Animation 07 Learning ObjectiveDemonstration of LearningBloom’s Domain 07.8 Create animator components.The learner will be able to use animation curves, adjust animation properties and events (as necessary) to meet the requirements of a given project. 6. Create 07.9 Use scripts to manage animators.Learners will be able to write and execute ERMQEXMSRWGVMTXWXLEXQIIXWTIGMƤG project guidelines. 3. Apply 07.10 Integrate navigation and character controllers within the game environment. The learner will be able to evaluate effective from ineffective uses of interface controls. 5. Evaluate 07.11 Manage object properties and object transformations in the Unity Editor. Learners will be able to write scripts that activate game objects and adjust scope ERHEGGIWWQSHMƤIVW\[MXLMREKMZIR project. 6. Create unity.com | 53 © 2020 Unity Technologies Physics and Animation 07 07.D Standards Alignment Guide 07.D.1: Professional Standards for Interactive Application and Video Game Creation 2.8.1: Explain and demonstrate principles of visual communication. 2.8.7: Explain how target platform capabilities and constraints affect the choice of user interfaces. 2.8.8: Apply structured methods to user interface development. 2.8.9: Implement a new user interface system, test and evaluate its usability. 2.8.10: Modify and adapt user interfaces for different target platforms and genre. 07.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.9-10.1 'MXIWTIGMƤGXI\\XYEPIZMHIRGIXSWYTTSVXEREP\]WMWSJWGMIRGIERHXIGLRMGEPXI\\XW attending to the precise details of explanations or descriptions. CCSS.ELA-Literacy.RST.9-10.3 Follow precisely a complex multi-step procedure when carrying out experiments, XEOMRKQIEWYVIQIRXWSVTIVJSVQMRKXIGLRMGEPXEWOWEXXIRHMRKXSWTIGMEPGEWIWSVI\\GITXMSRWHIƤRIHMRXLIXI\\X CCSS.ELA-Literacy.RST.9-10.7 Translate quantitative or technical information expressed in words in a text into visual form (e.g., a table or chart) and translate information expressed visually or mathematically (e.g., in an equation) into words. CCSS.ELA-Literacy.RST.9-10.10 By the end of grade 10, read and comprehend science/technical texts in the grades XI\\XGSQTPI\\MX\]FERHMRHITIRHIRXP\]ERHTVSƤGMIRXP\] CCSS.ELA-Literacy.RST.11-12.3 Follow precisely a complex multi-step procedure when carrying out experiments, XEOMRKQIEWYVIQIRXWSVTIVJSVQMRKXIGLRMGEPXEWOWEREP\]^IXLIWTIGMƤGVIWYPXWFEWIHSRI\\TPEREXMSRWMRXLIXI\\X CCSS.ELA-Literacy.RST.11-12.9 Synthesize information from a range of sources (e.g., texts, experiments, WMQYPEXMSRW MRXSEGSLIVIRXYRHIVWXERHMRKSJETVSGIWWTLIRSQIRSRSVGSRGITXVIWSPZMRKGSRƥMGXMRKMRJSVQEXMSR when possible. 07.D.3: Stem Career Clusters SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. SCC04 Information Technology Applications: 9WIMRJSVQEXMSRXIGLRSPSK\]XSSPWWTIGMƤGXSXLIGEVIIVGPYWXIVXS access, manage, integrate, and create information. unity.com | 54 © 2020 Unity Technologies Physics and Animation 07 07.D.4: 21st Century Skills Learning and Innovation Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly Information, Media and Technology Skills Information Literacy: Access and Evaluate Information ICT (Information, Communications and Technology) Literacy: Apply Technology Effectively Life and Career Skills Flexibility and Adaptability 07.D.5: ISTE Standards 4D: Students exhibit a tolerance for ambiguity, perseverance and the capacity to work with open-ended problems. 5A: 7XYHIRXWJSVQYPEXITVSFPIQHIƤRMXMSRWWYMXIHJSVXIGLRSPSK\]EWWMWXIHQIXLSHWWYGLEWHEXEEREP\]WMWEFWXVEGX QSHIPWERHEPKSVMXLQMGXLMROMRKMRI\\TPSVMRKERHƤRHMRKWSPYXMSRW 7C: Students contribute constructively to project teams, assuming various roles and responsibilities to work effectively toward a common goal. unity.com | 55 © 2020 Unity Technologies Critical Thinking in Game Design 02 Environments and Level Design 08.A Unit Description In this unit of study, learners will explore concepts fundamental to the ideal level design. Learners will understand the principles of navigation and the MQTSVXERGISJEFEPERGIHPE\]SYXXSTVSZMHMRKKSSHKEQIƥS\[0IEVRIVW\[MPP also explore principles of functionality. 08.A Unit Description ......................................................55 08.B Unit Outline .............................................................56 08.C Learning Objectives and Assessments ................58 08.D Standards Alignment Guide ...................................59 08 unity.com | 56 © 2020 Unity Technologies Environments and Level Design 08 08.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Level design theory +EQIƽS\[X\]TIW Games that are too simple or too easy (or too confusing) are boring. Games that are too complicated or XSSHMJƤGYPXGEYWIER\\MIX\] Games that are well balanced IRGSYVEKIEWXEXIGEPPIHŰƥS\[űMR players, where they’re engaged and focused on play. Creating a balanced layout +EQIFEPERGIMWXLITVEGXMGISJƤRHMRK XLIVMKLXFEPERGISJHMJƤGYPX\]ERH reward to keep players engaged. 0IZIPHIWMKRLEWELYKIMQTEGXSRƥS\[ as it helps designers determine how to keep the player engaged without either boring or overwhelming them. Support of the game narrative Stories in games can help to WYTTSVXXLIƥS\[SJXLIKEQIF\] contextualizing player actions. “Stealth” sections can be exciting, even if the play isn’t action-packed. Conveying the design Level design combines environmental design and game play to create a cohesive, exciting experience for players. Have students do a design analysis on a video game level. • Where are the most exciting parts of the level? • How does the player know how to move through that environment? unity.com | 57 © 2020 Unity Technologies Environments and Level Design 08 Lesson TitleLesson Topics Suggested Activities/Resources 2. Level design: Soup to nuts The big idea • What’s the overall concept of the level? • Where does it take place? • What happens over the course of the level? From research to reference It’s important to research real-world counterparts for the levels the players are making. 'VIEXMRKXLIƽSSVTPERW Draw out and diagram the physical space of the level. Gameplay elements • It’s important to mark out where WTIGMƤGKEQITPE\]MRXIVEGXMSRW\[MPP happen in the level. • Elements include ambushes, explosions, anything that will trigger when a player interacts with it. Objects • 3FNIGXWƤPPWTEGIXIPPWXSVMIWERH provide cover. • Other effects (lighting, sound, etc.) Have students do the “Block Out” A Level Activity in the Activities and Resources document. This will help students think about level design before building digital assets, and start to understand how to choreograph a level. 3. Understanding the ƽS\[SJWTEGI Explore how players tend to move through space in several different situations 2D platformers (ƼVWXTIVWSRWLSSXIVW 3D narrative spaces Look at some classic 2D levels (Super Mario Bros. 1-1 is a good example) and talk about how the levels are choreographed. 4. Level editors: Tools and tricks of the trade Scene Editor (Unity 3D game engine)Have students do the Capstone Project Activity in the Activities and Resources document to begin building the environments they’re going to need to have in their capstone projects. unity.com | 58 © 2020 Unity Technologies Environments and Level Design 08 Learning ObjectiveDemonstration of LearningBloom’s Domain 08.1 Plan and draw maps on paper, collect references, and create top down sketches for gameplay. Using a pencil and paper, the learner will be able to design a complete level map. 4. Analyze 08.2 Explain the principles of level design.Learners will be able to create a thorough and detailed written level walkthrough, including map sketches, for at least two levels of their capstone project. 5. Evaluate 08.3 Compare and contrast various game ƥS\[W Learners will be able to understand the GSRGITXSJŰƥS\[űERHKMZII\\EQTPIWSJ how to design to encourage it. 2. Understand 08.4 Use the fundamentals of level design to critique game levels. 0IEVRIVW\[MPPFIEFPIXSHIƤRIERH implement game pathways, choke points, WTE\[RTSMRXWERHQIXLSHWSJHIƤRMRK where game objects will meet at choke points. 1. Remember 08.5 Explain the concept of a balanced layout. Learners will be able to design a game level incorporating (at least 6 of the 8 HMQIRWMSRWSJ ƥS\[ERHMRHMGEXILS\[XLI layout and challenges of the level achieve each element. 5. Evaluate 08.6 Describe how game levels are used to support game story. Learners will be able to create level HIWMKRWXLEXVIƥIGXERHI\\TPEMRXLIKEQI narrative. 6. Create 08.7 Communicate level design ideas, concepts, and models in a variety of ways. Learners will be able to critique level design, offering alternate maps or layouts to improve gameplay. 5. Evaluate 08.C Learning Objectives and Assessments unity.com | 59 © 2020 Unity Technologies Environments and Level Design 08 08.D Standards Alignment Guide 08.D.1: Professional Standards for Interactive Application and Video Game Creation 1.6.1: Explain principles of user navigation and level progression. 1.6.2: Demonstrate understanding and ability to use game mechanics to improve gameplay. 1.6.3: Demonstrate knowledge and understanding of balancing layouts. 1.6.4: Demonstrate understanding of pathways, choke points, control points, spawn points and SXLIVHIWMKRQIXLSHWJSVGVIEXMRKFEPERGIXMQMRKTEGMRKERHƥS\[ 1.6.5: Develop level designs with planning maps and use research and references to sketch characters and environments 1.6.6: Analyze and describe level features & progression from a level in an existing title 1.6.7: Explain how game levels relate to or support an interactive narrative. 1.6.8: Design and develop intuitive levels in 2D & 3D 2.4.1: Implement environmental designs into 2D and 3D levels. 2.4.2: Select appropriate models and materials for creating environments. 2.4.3: Understand and use terrain generation and manipulation tools. 2.4.4: Create, edit and enhance environments to optimize quality. 2.4.5: 'VIEXIERHQSHMJ\]TVSGIHYVEPIJJIGXWPMOIWO\]FS\\IWJSKERHPIRWƥEVI 08.D.2: Common Core State Standards (CCSS) CCSS.Math.Content.HSG.GMD.B.4 Identify the shapes of two-dimensional cross-sections of three-dimensional objects, and identify three-dimensional objects generated by rotations of two-dimensional objects. CCSS.Math.Content.HSG.MG.A.1 Use geometric shapes, their measures, and their properties to describe objects. CCSS.ELA-Literacy.SL.11-12.1 Initiate and participate effectively in a range of collaborative discussions (one-on- one, in groups, and teacher-led) with diverse partners on grades 11-12 topics, texts, and issues, building on others’ ideas and expressing their own clearly and persuasively. CCSS.ELA-Literacy.SL.11-12.4 4VIWIRXMRJSVQEXMSRƤRHMRKWERHWYTTSVXMRKIZMHIRGIGSRZI\]MRKEGPIEVERH distinct perspective, such that listeners can follow the line of reasoning, alternative or opposing perspectives are addressed, and the organization, development, substance, and style are appropriate to purpose, audience, and a range of formal and informal tasks. CCSS.ELA-Literacy.SL.11-12.5 Make strategic use of digital media (e.g., textual, graphical, audio, visual, and MRXIVEGXMZIIPIQIRXW MRTVIWIRXEXMSRWXSIRLERGIYRHIVWXERHMRKSJƤRHMRKWVIEWSRMRKERHIZMHIRGIERHXSEHHMRXIVIWX 08.D.3: Stem Career Clusters (SCC) SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. SCC03 Problem-Solving And Critical Thinking: Solve problems using critical thinking skills (analyze, synthesize, and evaluate) independently and in teams. Solve problems using creativity and innovation. SCC07 Leadership And Teamwork: Use leadership and teamwork skills in collaborating with others to accomplish organizational goals and objectives. unity.com | 60 © 2020 Unity Technologies Environments and Level Design 08 08.D.4: 21st Century Skills Learning and Innovation Creativity and Innovation: Think Creatively, Work Creatively with Others, Implement Innovations Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions, Solve Problems Communication and Collaboration: Communicate Clearly, Collaborate with Others Life and Career Skills Flexibility and Adaptability: Adapt to Change, Be Flexible Initiative and Self-direction: Manage Goals and Time, Work Independently, Be Self-directed Learners Social and Cross-Cultural Skills: Interact Effectively with Others, Work Effectively in Diverse Teams Productivity and Accountability: Manage Projects, Produce Results Leadership and Responsibility: Guide and Lead Others, Be Responsible to Others 08.D.5: Next-Generation Science Standards (NGSS) HS-ETS1-2: Design a solution to a complex real-world problem by breaking it down into smaller, more manageable problems that can be solved through engineering. 08.D.6: ISTE STANDARDS 1D: Students understand the fundamental concepts of technology operations, demonstrate the ability to choose, use and troubleshoot current technologies and are able to transfer their knowledge to explore emerging technologies. 4B: Students select and use digital tools to plan and manage a design process that considers design constraints and calculated risks. 6C: Students communicate complex ideas clearly and effectively by creating or using a variety of digital objects such as visualizations, models or simulations. unity.com | 61 © 2020 Unity Technologies Critical Thinking in Game Design Principles of Cameras and Lighting in Game Environments 09.A Unit Description Activities in this unit of study are designed to introduce effective use of cameras and lighting within game design. The focus will be on effective placement of lights and cameras to engage the learner in the game environment and create the atmosphere for the overall game experience. 09.A Unit Description ......................................................61 09.B Unit Outline .............................................................62 09.C Learning Objectives and Assessments ................64 09.D Standards Alignment Guide ...................................65 09 unity.com | 62 © 2020 Unity Technologies Principles of Cameras and Lighting in Game Environments 09 09.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Fundamentals of lighting Understand how real-world, practical lighting works • Basic color theory • Types: • Point • Area • Directional • Ambient • Spot Lighting models • Ambient • Diffuse • Emissive • Specular Properties of light • Color • Shape/size • Direction • Intensity Three-point lighting • Key light (or Main) • Fill light • Rim light (or Backlight) Have students give examples of how lighting might change an environment. How does lighting change how a room feels? How can we use lighting to make a space inviting? Scary? How do we draw attention to something using lighting? 2. Fundamentals of camera use in video game design Essentials of scene composition and the Rule of Thirds Types • Fixed camera systems • Tracking cameras • Interactive camera systems Understanding the 3D camera view • Position • Aim direction • Field of view Introduction to projection types • Perspective • Orthographic • Oblique Have students complete the Cameras and Effects Assignment in the Activities and Resources document, to understand the basics of camera placement and basic camera effects. unity.com | 63 © 2020 Unity Technologies Principles of Cameras and Lighting in Game Environments 09 Lesson TitleLesson Topics Suggested Activities/Resources 3. Viewpoint and perspective 2D • Top-down • Side-scroller 3D • Fixed 3D • First person • Third person 2.5 • 3/4 perspective • Pseudo-3D Projection types • Orthographic • Perspective If students haven’t already, have XLIQƤRMWLXLISetting up 2D Games in a 3D Environment Assignment in the Activities and Resources document, and talk about how the camera in that project is used to represent a 2D board using 3D assets. 4. Bringing it all together: How cameras and lighting are used to engage and immerse the gamer. Mood boards unity.com | 64 © 2020 Unity Technologies Principles of Cameras and Lighting in Game Environments 09 Learning ObjectiveDemonstration of LearningBloom’s Domain 09.1 Apply the Rule of ThirdsLearners will be able to create visual images in Unity that follow the Rule of Thirds and demonstrate good balance 3. Apply 09.2 Demonstrate the importance of scene balancing The learner will be able to compare and contrast various ways to simulate light in a computer graphics environment. This includes light mapping to light placement, explaining the advantages and disadvantages of each method, and hypothesizing on when each type of light is best employed. 4. Analyze 09.3 Explain how viewpoint impacts gameplay. Learners will be able to explain the difference between 2D and 3D perspective and the difference between orthographic and perspective cameras. 2. Understand 09.4 Create atmosphere and enhance emotion through the principles of lighting. The learner will be able to light a basic room, evoking three different emotions (i.e., sadness, fear, and comfort). 3. Apply 09.5 Position lighting and cameras in order to focus attention within a game. Learners will create a focal point lighting scheme, focusing the viewer’s attention XSEWTIGMƤGIPIQIRXSJERMQEKI 6. Create 09.C Learning Objectives and Assessments unity.com | 65 © 2020 Unity Technologies Principles of Cameras and Lighting in Game Environments 09 09.D Standards Alignment Guide 09.D.1: Professional Standards for Interactive Application and Video Game Creation 1.1.9: Explain the relevance of ambiance and environment in game design. 2.5.1: Explain the role of cameras and lighting with respect to ambiance. 2.5.2.1: Create, transform and modify area lights. 2.5.2.3: Create, transform and modify directional lights. 2.5.2.4: Create, transform and modify point and spot lights. 2.5.4: )\\TPEMRXLIYWISJGEQIVEWXSGVIEXIEPXIVREXMZIZMI\[WSJKEQITPE\]ƤVWXWIGSRHERHXLMVHTIVWSRTIVWTIGXMZIW 2.5.5: Effectively use framing and camera views to create visual cues for users. 2.5.6 : 9WIGEQIVEWERHPMKLXMRKXSGVIEXIWTIGMƤGIQSXMSREPI\\TIVMIRGIWWYGLEWXIRWMSRJIEVI\\GMXIQIRX 09.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.9-10.1'MXIWTIGMƤGXI\\XYEPIZMHIRGIXSWYTTSVXEREP\]WMWSJWGMIRGIERHXIGLRMGEPXI\\XW attending to the precise details of explanations or descriptions. CCSS.ELA-Literacy.RST.9-10.3 Follow precisely a complex multi-step procedure when carrying out experiments, XEOMRKQIEWYVIQIRXWSVTIVJSVQMRKXIGLRMGEPXEWOWEXXIRHMRKXSWTIGMEPGEWIWSVI\\GITXMSRWHIƤRIHMRXLIXI\\X CCSS.ELA-Literacy.RST.9-10.4 (IXIVQMRIXLIQIERMRKSJW\]QFSPWOI\]XIVQWERHSXLIVHSQEMRWTIGMƤG\[SVHWERH TLVEWIWEWXLI\]EVIYWIHMREWTIGMƤGWGMIRXMƤGSVXIGLRMGEPGSRXI\\XVIPIZERXXSKVEHIWXI\\XWERHXSTMGW CCSS.Math.Content.HSG.CO.A.1 /RS\[TVIGMWIHIƤRMXMSRWSJERKPIGMVGPITIVTIRHMGYPEVPMRITEVEPPIPPMRIERHPMRI WIKQIRXFEWIHSRXLIYRHIƤRIHRSXMSRWSJTSMRXPMRIHMWXERGIEPSRKEPMRIERHHMWXERGIEVSYRHEGMVGYPEVEVG CCSS.Math.Content.HSG.CO.A.2 Represent transformations in the plane using, e.g., transparencies and geometry software; describe transformations as functions that take points in the plane as inputs and give other points as outputs. Compare transformations that preserve distance and angle to those that do not (e.g., translation versus horizontal stretch). 09.D.3: Stem Career Clusters (SCC) SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. SCC03 Problem-Solving And Critical Thinking: Solve problems using critical thinking skills (analyze, synthesize, and evaluate) independently and in teams. Solve problems using creativity and innovation. SCC07 Leadership And Teamwork: Use leadership and teamwork skills in collaborating with others to accomplish organizational goals and objectives. unity.com | 66 © 2020 Unity Technologies Principles of Cameras and Lighting in Game Environments 09 09.D.4: 21st Century Skills Learning and Innovation Creativity and Innovation: Think Creatively, Implement Innovations Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly Information, Media and Technology Skills Information Literacy: Access and Evaluate Information Life and Career Skills Initiative and Self-direction: Manage Goals and Time, Work Independently, Be Self-directed Learners 09.D.5: ISTE Standards 3C: Students curate information from digital resources using a variety of tools and methods to create collections of artifacts that demonstrate meaningful connections or conclusions. 4A: Students know and use a deliberate design process for generating ideas, testing theories, creating innovative artifacts or solving authentic problems. 6C: Students communicate complex ideas clearly and effectively by creating or using a variety of digital objects such as visualizations, models or simulations. unity.com | 67 © 2020 Unity Technologies Critical Thinking in Game Design 02 Principles of Sound and Audio for Games 10.A Unit Description Activities in this unit of study are designed to explore the various applications of sound and music, including the selection of appropriate choices, and the optimization of asset formats. Students will add sound to their games, using both background and triggered sound effects. Students will learn how to connect sound effects to in-game events, and how to deploy audio elements that help to create the illusion of a 3D space. 10.A Unit Description ......................................................67 10.B Unit Outline .............................................................68 10.C Learning Objectives and Assessments ................70 10.D Standards Alignment Guide ...................................71 10 unity.com | 68 © 2020 Unity Technologies Principles of Sound and Audio for Games 10 10.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Enhancing game experience with sound and audio Sounds for game realism • Motors, lasers, other sounds • What kinds of sounds exist in your scene? • What do they tell the player about the world of your game? Adding dialogue to the game Narrator • A narrator is someone who describes the action but generally is not part of the story. Character • Characters can use dialogue to talk to each other, or directly to the player. Selecting appropriate music for game experience • What kind of music will help your game come alive? • How can music help your player feel safe, excited, happy, sad, or scared? • Finding sound and music sources • Proper use of copyrighted music and WSYRHƤPIW Have students choose a favorite scene from a movie. Discuss how sound (or silence) plays an important role in the scene. Have students complete the Sound and Audio Sources for Game Development assignment in the Activities and Resources document, which will give them some more practice setting up a new project, and some ideas about how to use sound to add depth and interest to a simple scene. 2. Audio sources 'LSSWMRKGSVVIGXWSYRHƼPIX\]TIW • ;%:ƤPIW • 14ƤPIW • MIDI Files • API sources: OGG Vorbis, FMOD, SD Have students implement a simple sound cue in a scene. Talk about why they might want XSYWISRIƤPIJSVQEXSZIV another. 3. 2D and 3D sound Overview of mono and stereo format and 2D/3D sound • 3D sound settings and applications • 2D sound settings and applications Have students listen to a stereophonic piece (google “Esquivel See It In Sound” for some good early examples) and then the same piece in mono sound. Discuss the differences. When might one be more useful than the other? unity.com | 69 © 2020 Unity Technologies Principles of Sound and Audio for Games 10 Lesson TitleLesson Topics Suggested Activities/Resources 4. Sound FX: Compression, Doppler, priority settings, playback What is audio compression and when to use it Introduction to the Doppler effect • The Doppler effect is a pitch-shift applied to sound-emitting objects as they move past a listener. • It is an important part of making the illusion of real sound in a game. • Applying the Doppler effect to game Assets Setting sound priorities Volume rolloff and rolloff settings Have a brief discussion about HMJJIVIRXWSYRHƤPIJSVQEXWPSWW\] vs lossless audio, and when compressed audio might be useful in a game. 5. Audio scripting Using scripts to sequence audio events,EZIWXYHIRXWƤRMWLXLI Implementing Simple Sounds tutorial in the Activities and Resources document, which will give them more practice setting up projects as well as using scripts to control audio. unity.com | 70 © 2020 Unity Technologies Principles of Sound and Audio for Games 10 Learning ObjectiveDemonstration of LearningBloom’s Domain 10.1 0MWXXLIHMJJIVIRXX\]TIWSJEYHMSƤPIW used in most game engines. The learner will compare and contrast GSQQSREYHMSERHWSYRHƤPIJSVQEXW their applications in the game, and the methods for acquiring the assets. 1. Remember 10.2 (IWGVMFILS\[WSYRHƤPIWERHQYWMG are used to enhance game experience and provide realism. Learners will summarize the science of how each sound effect works and can recommend use case scenarios for common sound effects within the game environment. 2. Understand 10.3 Apply audio and audio effects to create realistic game environments. Through individual research activities, learners will identify genres of music and will record judgments as to which genre is most appropriate for a given type of video game. 5. Evaluate 10.4 Manage priority settings of multiple sound sources. Learners will implement “audio listeners” in a Unity Scene in order to create believable audio. 5. Evaluate 10.5 Explain the Doppler effect and describe how to apply it within the game environment. Through the creation of a game snippet, the learner will integrate the Doppler effect in the game environment. 3. Apply 10.6 'VIEXIWGVMTXWXSQEREKIEYHMSƤPIW within the game environment. The learner will write scripts to position sounds within the game environment. 3. Apply 10.7 Manipulate sound to create realistic effects like rolloff in a game. The learner will demonstrate a basic ability to use Unity’s audio mixers to affect how a sound is perceived by a player. 3. Apply 10.8 Manage external sound and music assets that contain intellectual property protection agreements. The learner, in writing, will summarize and paraphrase the various rules and laws pertaining to the proper use of external intellectual property within a game 4. Analyze 10.C Learning Objectives and Assessments unity.com | 71 © 2020 Unity Technologies Principles of Sound and Audio for Games 10 10.D Standards Alignment Guide 10.D.1: Professional Standards for Interactive Application and Video Game Creation 1.7.1: Assess and employ various technology and processes for producing deliverables that meet requirements and quality standards. 1.7.14: )\\TPEMRXLIYWEKISJEYHMSƤPIJSVQEXWERHƤPIMRXIVSTIVEFMPMX\] 1.7.10.2: (IƤRIŰGSHIGűERHHIWGVMFIMXWYWI 1.7.6: Demonstrate a working knowledge of audio capture and editing tools. 2.4.1: Implement environmental designs into 2D and 3D levels. 2.4.4: Create, edit and enhance environments to optimize quality. 10.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.9-10.1 'MXIWTIGMƤGXI\\XYEPIZMHIRGIXSWYTTSVXEREP\]WMWSJWGMIRGIERHXIGLRMGEPXI\\XW attending to the precise details of explanations or descriptions. CCSS.ELA-Literacy.RST.9-10.9 'SQTEVIERHGSRXVEWXƤRHMRKWTVIWIRXIHMREXI\\XXSXLSWIJVSQSXLIVWSYVGIW MRGPYHMRKXLIMVS\[RI\\TIVMQIRXW RSXMRK\[LIRXLIƤRHMRKWWYTTSVXSVGSRXVEHMGXTVIZMSYWI\\TPEREXMSRWSVEGGSYRXW CCSS.ELA-Literacy.RST.9-10.5 Analyze the structure of the relationships among concepts in a text, including relationships among key terms (e.g., force, friction, reaction force, energy). 10.D.3: Stem Career Clusters (SCC) SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. SCC04 Information Technology Applications: 9WIMRJSVQEXMSRXIGLRSPSK\]XSSPWWTIGMƤGXSXLIGEVIIVGPYWXIVXS access, manage, integrate, and create information. 10.D.4: 21st Century Skills Learning and Innovation Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly Information, Media and Technology Skills Information Literacy: Access and Evaluate Information ICT (Information, Communications and Technology) Literacy: Apply Technology Effectively Life and Career Skills Flexibility and Adaptability: Be Flexible unity.com | 72 © 2020 Unity Technologies Principles of Sound and Audio for Games 10 10.D.5: ISTE Standards 1C: Students use technology to seek feedback that informs and improves their practice and to demonstrate their learning in a variety of ways. 1D: Students understand the fundamental concepts of technology operations, demonstrate the ability to choose, use and troubleshoot current technologies and are able to transfer their knowledge to explore emerging technologies. 2B: Students engage in positive, safe, legal and ethical behavior when using technology, including social interactions online or when using networked devices. 2C: Students demonstrate an understanding of and respect for the rights and obligations of using and sharing intellectual property. 4B: Students select and use digital tools to plan and manage a design process that considers design constraints and calculated risks. unity.com | 73 © 2020 Unity Technologies Critical Thinking in Game Design Basic Interfaces and the Build Process 11.A Unit Description Activities in this unit of study place emphasis on managing the build process within game creation. Learners will develop skills through a project approach in a team environment as they create a simple 2D/3D game from an existing game template. 11.A Unit Description ......................................................73 11.B Unit Outline .............................................................74 11.C Learning Objectives and Assessments ................75 11.D Standards Alignment Guide ...................................76 11 unity.com | 74 © 2020 Unity Technologies Basic Interfaces and the Build Process 11 11.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Managing the build process Work in progress (WIP) • It’s important to differentiate between a working project and a release candidate. • Get students into the habit of naming their projects in a way that indicates which part of the lifecycle of the work they’re in. “Alpha candidate 1.0, Beta 0.4, Release candidate 0.1,” etc. Quality assurance QA is a crucial step in game development, where projects are checked for bugs. Development milestones Most studios use the following project milestones: prototype, Alpha, Beta, Gold • Prototype is the rough draft. • Alpha is a working project XLEXMWQMWWMRKWMKRMƤGERX features. • Beta is feature complete but has bugs. • Gold (or “Release” is ready for publishing. Review the Naming Conventions Assignment in the Activities and Resources document with students, and work with them to determine where in the build process they are. Have them name their subsequent releases accordingly. 2. Graphical user interfaces What is a GUI? • A user interface lets users interact with the system inside a game or a computer. • Windows is an example of a GUI. • Most games have a GUI, sometimes called a “HUD” (heads-up display) Making UI • Buttons and menus • 'SQQYRMGEXMRKƥS\[ • User experience What kind of UI does your game need? • What choices are players making? • How do you make the effect of a choice clear? • How do you encourage players to interact with the correct element? Have students complete the User Interface Activity in the Activities and Resources document to get a feel for what a UI is and how it can be implemented well (or poorly.) Have students complete the GUI Practice Activity in the Activities and Resources document to get familiar with Unity’s basic UI components. Ask students to think about their capstone games and about what kinds of UI components they might need for those games. unity.com | 75 © 2020 Unity Technologies Basic Interfaces and the Build Process 11 Learning ObjectiveDemonstration of LearningBloom’s Domain 11.1 Select the appropriate assets for projects of adequate format, size and use in a game. The learner will create a Resource List that indicates how to acquire digital assets and all resources related to digital assets. 3. Apply 11.2 Sequence game activities from start XSƤRMWLMRVIKEVHXSFSXLKEQITPE\] sequence and build process. The learner will analyze a variety of game development plans before designing a plan of their own. 4. Analyze 11.3 Write scripts that enable and disable components, script Game Objects, move players and camera, pick up SFNIGXWERHTIVJSVQSXLIVWTIGMƤG tasks. Within the assigned game project, the learner will create and write scripts that enable/disable components and manipulate and transform game assets. 3. Apply 11.4 Import and manage game assets, including player game objects, cameras, lights, and backgrounds. Set up and load a game and a development project. The learner will write code that moves players in the game space and correctly applies and integrates cameras, lighting, and background into the assigned game project. 6. Create 11.5 9WIFIWXTVEGXMGIWJSVƤPIREQMRKThe learner will adhere to the conventions JSVREQMRKƤPIWXSGSQQYRMGEXITSWMXMSR in the development process. 2. Understand 11.6 A Use scripts to control player actions.The learner will create and manage game controllers within the assigned game project. 2. Understand 11.7 Integrate audio, counting points, scores, and game controllers into a simple game. The learner will integrate audio and spawning waves into the assigned game project. 2. Understand 11.8 Project manage the build process from WXEVXXSƤRMWLJSVEKEQI The learner will design and write code required to integrate counting points and score displays into the assigned game project. 3. Apply 11.C Learning Objectives and Assessments unity.com | 76 © 2020 Unity Technologies Basic Interfaces and the Build Process 11 11.D Standards Alignment Guide 11.D.1: Professional Standards for Interactive Application and Video Game Creation 1.5.2: Use physics to create realistic motions with objects and characters. 1.5.3: Explain the use of collision geometry for physics-based interactions and as programming triggers. 1.5.4: Apply and manage the use of Colliders. 1.5.9: Demonstrate the ability to handle object collisions and physics simulations in a realistic manner. 1.6.2: Demonstrate understanding and ability to use game mechanics to improve gameplay. 1.6.3: Demonstrate knowledge and understanding of balancing layouts. 1.6.4: Demonstrate understanding of pathways, choke points, control points, and spawn points and other HIWMKRQIXLSHWJSVGVIEXMRKFEPERGIXMQMRKTEGMRKERHƥS\[ 1.7.15: Describe the basic logic, concepts and key structures behind computer programming languages. 1.7.17: Determine appropriate programming and scripting languages to create desired game mechanics, control the environment, UI and gameplay. 1.7.18: Create a hypothetical technology pipeline for an interactive application or video game project. 1.8.3: (IƤRIKEQIHIWMKRHSGYQIRXEXMSR+(( MXWTYVTSWIERHGSQTSRIRXW 1.8.4: Create, iterate and maintain a full set of game design documentation. 1.8.5: Prepare a plan of work based on an approved GDD including deliverables, tasks, resources, schedule, Gantt and PERT charts. 2.1.6: Demonstrate the use of object preferences and inspector tools. 2.1.7: Accurately transform objects with respect to coordinate systems (translate, rotate and scale). 2.1.8: Describe and change the active status of objects. 2.1.9: Describe and change the enabled status of components. 2 .2.2: Understand and use hierarchical structures for organization. 2.2.3: Create effective naming conventions for objects and assets. 2.2.4: Apply descriptive tags, labels, and use layers for asset management. 2.5.3: (IQSRWXVEXIXLIGVIEXMSRXVERWJSVQEXMSRQSHMƤGEXMSRERHYWISJGEQIVEW 2.6.1: Use various techniques for effectively animating objects and component properties. 2.7.1: Demonstrate an understanding of mathematical concepts, logic and syntax shared by various programming languages. 2.8.3: Using examples, describe key principles behind graphical user interfaces (GUIs). 2.8.4: (IƤRIYWEFMPMX\]EWEUYEPMX\]SFNIGXMZIJSVYWIVMRXIVJEGIW9-W 2 .8.4: Differentiate between diegetic and non-diegetic user interface elements. 2.8.5: )\\TPEMRLS\[WTIGMƤG9-GLEVEGXIVMWXMGWGEREJJIGXYWEFMPMX\] 2.8.6: (IXIVQMRIXLI9-JYRGXMSREPMX\]VIUYMVIHF\]EWTIGMƤGTVSNIGXXSMQTVSZISYXGSQIWERHQIIXXLIRIIHWSJYWIVW 3.2.4: Deploy, use and demonstrate a revision control system for a new or existing project. unity.com | 77 © 2020 Unity Technologies Basic Interfaces and the Build Process 11 11.D.2: Common Core Learning Standards (CCSS) CCSS.ELA-Literacy.RST.9-10.1'MXIWTIGMƤGXI\\XYEPIZMHIRGIXSWYTTSVXEREP\]WMWSJWGMIRGIERHXIGLRMGEPXI\\XW attending to the precise details of explanations or descriptions. CCSS.ELA-Literacy.RST.9-10.3 Follow precisely a complex multi-step procedure when carrying out experiments, XEOMRKQIEWYVIQIRXWSVTIVJSVQMRKXIGLRMGEPXEWOWEXXIRHMRKXSWTIGMEPGEWIWSVI\\GITXMSRWHIƤRIHMRXLIXI\\X CCSS.ELA-Literacy.RST.9-10.4 (IXIVQMRIXLIQIERMRKSJW\]QFSPWOI\]XIVQWERHSXLIVHSQEMRWTIGMƤG\[SVHWERH TLVEWIWEWXLI\]EVIYWIHMREWTIGMƤGWGMIRXMƤGSVXIGLRMGEPGSRXI\\XVIPIZERXXSKVEHIWXI\\XWERHXSTMGW CCSS.ELA-Literacy.RST.9-10.5 Analyze the structure of the relationships among concepts in a text, including relationships among key terms (e.g., force, friction, reaction force, energy). CCSS.ELA-Literacy.RST.9-10.10 By the end of grade 10, read and comprehend science/technical texts in the grades XI\\XGSQTPI\\MX\]FERHMRHITIRHIRXP\]ERHTVSƤGMIRXP\] 11.D.3: Stem Career Clusters (SCC) SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. 11.D.4: 21st-Century Skills Learning and Innovation Creativity and Innovation: Think Creatively, Implement Innovations Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly Information, Media and Technology Skills Information Literacy: Access and Evaluate Information Life and Career Skills Initiative and self-direction: Manage Goals and Time, Work Independently, Be Self-directed Learners 11.D.5: Next-Generation Science Standards (NGSS) NGSS5: Using mathematics and computational thinking 11.D.6: ISTE Standards 5C: Students break problems into component parts, extract key information, and develop descriptive models to understand complex systems or facilitate problem-solving. 6B: Students create original works or responsibly repurpose or remix digital resources into new creations. 6C: Students communicate complex ideas clearly and effectively by creating or using a variety of digital objects such as visualizations, models or simulations. unity.com | 78 © 2020 Unity Technologies Critical Thinking in Game Design Intermediate Animation and UI 12.A Unit Description Activities in this unit of study are designed to focus on the creation of intermediate animations and graphical user interfaces (GUIs) that are adaptable to a variety of platforms and play levels. 12.A Unit Description ......................................................78 12.B Unit Outline .............................................................79 12.C Learning Objectives and Assessments ................80 12.D Standards Alignment Guide ...................................81 12 unity.com | 79 © 2020 Unity Technologies Intermediate Animation and UI 12 12.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Creating intermediate-level game interfaces Using externally created skins in Unity Custom GUI styles in Unity Have students complete the Scriptable Objects for UI tutorial in the Activities and Resources document, which will show them how to create UI objects that respond to script commands. 2. Creating intermediate-level animations in Unity Intermediate animations Preparing models for animation Humanoid avatars States and blend trees Avatars Have students complete the Intermediate Concepts in Animation tutorial in the Activities and Resources document. This will introduce them to important tools for animation, including Cinemachine (controls the camera for more complex cutscenes, etc.,) and Anima2D, a tool that makes animating humanoid avatars relatively easy. 3. Project creation Project buildStudent capstone projects should be in the late Alpha or early Beta stages. Have students complete a GDD Progress Check in the Activities and Resources document to determine if they’re on schedule. unity.com | 80 © 2020 Unity Technologies Intermediate Animation and UI 12 Learning ObjectiveDemonstration of LearningBloom’s Domain 12.1 (IWMKRIRKEKMRKERHIJƤGMIRXYWIV interfaces for a variety of devices and platforms. The learner will be able to create UI that clearly communicates game concepts to users and discuss how that interface would need to be adapted for a different platform. 6. Create 12.2 Create unique interface skins that are applicable to multiple devices. Learners will be able to create unique skins or graphic user interfaces (GUIs) to an interactive application or video game. 6. Create 12.3 Create animator components.Learner will be able to implement animator components such as keyframes and timing. 6. Create 12.4 Create animations that use blend trees.The learner will be able to create and manage blend trees and states of animated models. 6. Create 12.5 Assemble animator assets that are part of a project. The learner will be able to download an implement animation assets from the Unity Asset Store. 3. Apply 12.6 Manage animators with scripts.The learner will be able to play and stop animations on command through scripts. 3. Apply 12.7 Manipulate humanoid avatars and animation properties. Within their capstone project, the learner will demonstrate their ability to rig and animate a humanoid avatar in a game environment. 6. Create 12.C Learning Objectives and Assessments unity.com | 81 © 2020 Unity Technologies Intermediate Animation and UI 12 12.D Standards Alignment Guide 12.D.1: Professional Standards for Interactive Application and Video Game Creation 1.5.2: Use physics to create realistic motions with objects and characters. 1.5.3: Explain the use of collision geometry for physics-based interactions and as programming triggers. 1.5.4: Apply and manage the use of Colliders. 1.5.9: Demonstrate the ability to handle object collisions and physics simulations in a realistic manner. 1.6.2: Demonstrate understanding and ability to use game mechanics to improve gameplay. 1.6.3: Demonstrate knowledge and understanding of balanced layouts. 1.7.15: Describe the basic logic, concepts and key structures behind computer programming languages. 1.7.17: Determine appropriate programming and scripting languages to create desired game mechanics, control the environment, UI and gameplay. 2.1.6: Demonstrate the use of object preferences and inspector tools. 2.1.7: To reposition objects using the transform (translate, rotate, scale) tools, with respect to World and Local coordinate systems. 2.1.8: Describe and change the active status of objects. 2.1.9: Describe and change the enabled status of components. 2.2.2: Assess and employ strategies for hierarchical structures, used for organization. 2.2.3: Create an effective naming conventions for objects and assets. 2.2.4: Apply descriptive tags, labels, and use layers for asset management. 2.5.3: (IQSRWXVEXIXLIGVIEXMSRXVERWJSVQEXMSRQSHMƤGEXMSRERHYWISJGEQIVEW 2.6.1: Use various techniques for effectively animating objects and component properties 2.7.1: Demonstrate an understanding of mathematical concepts, logic and syntax shared by various programming languages. 3.2.4: Assess and execute strategies for a revision control system within a new or existing project. 3.3.7: Demonstrate the use of a debugger to inspect code at run time. 12.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.9-10.1 'MXIWTIGMƤGXI\\XYEPIZMHIRGIXSWYTTSVXEREP\]WMWSJWGMIRGIERHXIGLRMGEPXI\\XW attending to the precise details of explanations or descriptions. CCSS.ELA-Literacy.RST.9-10.3 Follow precisely a complex multi-step procedure when carrying out experiments, XEOMRKQIEWYVIQIRXWSVTIVJSVQMRKXIGLRMGEPXEWOWEXXIRHMRKXSWTIGMEPGEWIWSVI\\GITXMSRWHIƤRIHMRXLIXI\\X CCSS.ELA-Literacy.RST.9-10.4 (IXIVQMRIXLIQIERMRKSJW\]QFSPWOI\]XIVQWERHSXLIVHSQEMRWTIGMƤG\[SVHWERH TLVEWIWEWXLI\]EVIYWIHMREWTIGMƤGWGMIRXMƤGSVXIGLRMGEPGSRXI\\XVIPIZERXXSKVEHIWXI\\XWERHXSTMGW 12.D.3: Stem Career Clusters (SCC) SCC01 Academic Foundations: Achieve additional academic knowledge and skills required to pursue the full range of career and postsecondary education opportunities within a career cluster. SCC02 communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. unity.com | 82 © 2020 Unity Technologies Intermediate Animation and UI 12 12.D.4: 21st Century Skills Learning and Innovation Creativity and Innovation: Think Creatively, Implement Innovations Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions Communication and Collaboration: Communicate Clearly Information, Media and Technology Skills Information Literacy: Access and Evaluate Information Life and Career Skills Initiative and Self-direction: Manage Goals and Time, Work Independently, Be Self-directed Learners 12.D.5: Next-Generation Science Standards (NGSS) NGSS5: Using mathematics and computational thinking 12.D.6: ISTE Standards 6A: Students choose the appropriate platforms and tools for meeting the desired objectives of their creation or communication. 5C: Students break problems into component parts, extract key information, and develop descriptive models to understand complex systems or facilitate problem-solving. 6C: Students communicate complex ideas clearly and effectively by creating or using a variety of digital objects such as visualizations, models or simulations. unity.com | 83 © 2020 Unity Technologies Critical Thinking in Game Design Principles of Quality and Functionality Assurance in Game Development 13.A Unit Description Activities in this unit of study are designed to introduce learners to quality ERHJYRGXMSREPMX\]EWWYVERGI8LMWYRMX\[MPPJSGYWWTIGMƤGEPP\]SRXLIXIWXMRK troubleshooting, and debugging of an interactive application or video game. 13.A Unit Description ......................................................83 13.B Unit Outline .............................................................84 13.C Learning Objectives and Assessments ................85 13.D Standards Alignment Guide ...................................86 13 unity.com | 84 © 2020 Unity Technologies Principles of Quality and Functionality Assurance in Game Development 13 13.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Overview of testing What is QA testing? QA testing is the process of certifying that a game is ready for public consumption. QA testers play games trying to break them, to make sure that players don’t break them accidentally. Some examples of QA testing include: • Wall testing, where the tester tries to run into every wall • Input testing, where the tester tries to give the game confusing or unexpected inputs Types of bugs Bugs are generally categorized by • a. How they appear • b. How serious they are “Showstopper” bugs prevent the game JVSQVYRRMRKERHQYWXFIƤ\\IH “Reproducibility” is a description of the steps that it takes to encounter the bug. Have students complete the In-Class Debugging Activity in the Activities and Resources document to get some hands on experience debugging their code. 2. Relationship between testing, quality assurance, and quality control QA is the team that tests. 5YEPMX\]GSRXVSPMWXLITVSGIWWSJƤRHMRK bugs and, crucially, sending them back to XLIHIWMKRIVWERHXLIIRKMRIIVWXSƤ\\ Levels of software testing • Functional • Acceptance testing: alpha, beta • Non-functional • Performance: load and stress testing • Usability • Security • Portability Have students write test plans for their games and then hand those plans off to other students to test. 3. Testing documentation: Test plan, test cases/ scenarios Writing a test plan for a game means that XLIHIWMKRIVMHIRXMƤIWTSXIRXMEPTVSFPIQ buggy areas and offers suggestions on LS\[XSƤRHXLSWIFYKW Have students write test plans for their games and then hand those plans off to other students to test. unity.com | 85 © 2020 Unity Technologies Principles of Quality and Functionality Assurance in Game Development 13 Learning ObjectiveDemonstration of LearningBloom’s Domain 13.1 Explain the importance of QA and testing. The learner will be able to describe the function and process of QA testing. 2. Understand 13.2 Explain the importance of documentation during testing stages. The learner will create test documents and keep track of bugs, both open and closed, as their game approaches Gold Status. 3. Apply 13.3 Describe basic troubleshooting strategies. The learner will be able to troubleshoot a bug, reproduce it, identify it in code, and Ƥ\\MX 5. Evaluate 13.4 Perform successful debugging and troubleshooting activities within a game environment. Given a program with a bug, the learner will identify the defects/inconsistencies and enter them appropriately into the bug- tracking database. 4. Apply 13.5 Locate bugs within a game environment using debugging software tools. Given a section of code with at least 15 bugs, the learner will resolve the problems, updating their progress in the bug-tracking database. 5. Evaluate 13.C Learning Objectives and Assessments unity.com | 86 © 2020 Unity Technologies Principles of Quality and Functionality Assurance in Game Development 13 13.D Standards Alignment Guide 13.D.1: Professional Standards for Interactive Application and Video Game Creation 3.3.1: Graphically describe a multi-step testing methodology. 3.3.2: Use general troubleshooting strategies to identify and resolve application problems. 3.3.4: Develop a troubleshooting log. 3.3.5: (MWGYWWXLIFIRIƤXWSJYWMRKFYKXVEGOMRKWSJX\[EVI 3.3.6: 6IWIEVGLERHGSQTEVIXLITVSWERHGSRWSJWIZIVEPWTIGMƤGFYKXVEGOMRKWSJX\[EVIWSPYXMSRW 3.3.7: Demonstrate the use of a debugger to inspect code at run time. 3.3.9: Create a cause and effect diagram to account for possible causes of a particular problem. 13.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.11-12.3 Follow precisely a complex multi-step procedure when carrying out experiments, XEOMRKQIEWYVIQIRXWSVTIVJSVQMRKXIGLRMGEPXEWOWEREP\]^IXLIWTIGMƤGVIWYPXWFEWIHSRI\\TPEREXMSRWMRXLIXI\\X CCSS.ELA-Literacy.W.11-12.2 Write informative/explanatory texts to examine and convey complex ideas, concepts, and information clearly and accurately through the effective selection, organization, and analysis of content. CCSS.ELA-Literacy.W.11-12.4 Produce clear and coherent writing in which the development, organization, and style are appropriate to task, purpose, and audience. 13.D.3: Stem Career Clusters (SCC) SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. SCC03 Problem-Solving And Critical Thinking: Solve problems using critical thinking skills (analyze, synthesize, and evaluate) independently and in teams. Solve problems using creativity and innovation. SCC10 Technical Skills: Use the technical knowledge and skills required to pursue the targeted careers for all pathways in the career cluster, including knowledge of design, operation, and maintenance of technological systems critical to the career cluster. 13.D.4: 21st Century Skills Learning and Innovation Critical Thinking and Problem-solving: Reason Effectively, Making Judgments and Decisions, Solve Problems Communication and Collaboration: Communicate Clearly, Collaborate with others Information, Media and Technology Skills Information Literacy: Access and Evaluate Information, Use and Manage Information ICT (Information, Communications and Technology) Literacy: Apply Technology Effectively Life and Career Skills Initiative and self-direction: Manage Goals and Time, Work Independently Social and Cross-cultural Skills: Interact Effectively with Others Productivity and Accountability: Manage Projects, Produce Results 13.D.5: Next Generation Science Standards (NGSS) NGSS: %WOMRKUYIWXMSRWJSVWGMIRGI ERHHIƤRMRKTVSFPIQWJSVIRKMRIIVMRK unity.com | 87 © 2020 Unity Technologies Principles of Quality and Functionality Assurance in Game Development 13 13.D.6: ISTE Standards 4C:7XYHIRXWHIZIPSTXIWXERHVIƤRITVSXSX\]TIWEWTEVXSJEG\]GPMGEPHIWMKRTVSGIWW 4D: Students exhibit a tolerance for ambiguity, perseverance and the capacity to work with open-ended problems. unity.com | 88 © 2020 Unity Technologies Critical Thinking in Game Design Principles of Versioning and Game Release 14.A Unit Description Activities in this unit of study are designed to focus on the deployment of EGYWXSQKEQISVMRXIVEGXMZIETTPMGEXMSREWEƤREPVIWYPXMIƤREPTVSHYGX release) of the course. 14.A Unit Description ......................................................88 14.B Unit Outline .............................................................89 14.C Learning Objectives and Assessments ................90 14.D Standards Alignment Guide ...................................91 14 unity.com | 89 © 2020 Unity Technologies Principles of Versioning and Game Release 14 14.B Unit Outline Lesson TitleLesson Topics Suggested Activities/Resources 1. Version names and numbering systems • Development stages • Numbering schemes • Sequencing • Release candidates Double check with students that each project is numbered according to a clear rubric to indicate which phase of development it’s in. 2. Purpose of game versions • 7MKRMƼGERGIMRKEQIHIZIPSTQIRX • 7MKRMƼGERGIMRXIGLRMGEPWYTTSVX • 7MKRMƼGERGIMRQEVOIXMRK Have students complete the :IVWMSRMRK7MKRMƼGERGI Narrative research paper in the Activities and Resources document, to give them a clear understanding of why versioning is so important. 3. Managing release candidates 4VITEVMRKJSVSƾGMEPVIPIEWI Distribution • Options • Process • 7LEVI\[EVI\*SV4VSƤX Have students submit their Final Release Candidate as described in the Activities and Resources document. This represents the end of their game development NSYVRI\] unity.com | 90 © 2020 Unity Technologies Principles of Versioning and Game Release 14 Learning ObjectiveDemonstration of LearningBloom’s Domain 14.1 Explain the concepts and rationale behind versioning schemes and procedures. The learner will be able to compare and contrast the various types of versioning. 2. Understand 14.2 Describe how versions are used by different groups in the development process. The learner will summarize major concepts related to game versioning in writing. 1. Remember 14.3 Create a versioning system for a game development project. The learner will summarize, in writing, the WMKRMƤGERGIERHMQTSVXERGISJZIVWMSRMRK to members of a design team, a technical support team, and a product marketing team. 2. Understand 14.4 Use numbering systems to version complex development projects The learner will number their release candidates using a clear methodology that helps them keep track of which version of their project they’re working on. 3. Apply 14.5 Describe the factors that constitute a release candidate. The learner will understand the steps they RIIHXSGSQTPIXIXSHIPMZIVEƤREPVIPIEWI candidate. 2. Understand 14.6 Demonstrate understanding of the utility of versioning. The learner will be able to explain how versions are used by different processes in the lifecycle of a game. 2. Understand 14.7 Describe the various distribution options for release candidates. 8LIPIEVRIV\[MPPFIEFPIXSHIƤRIXLI following terms: • Pre-Alpha • Alpha • Beta • Release candidate • Versioning numbers • Commercial distribution • Shareware 1. Remember 14.8 Complete the lifecycle of a game project. 8LIPIEVRIV\[MPPHIPMZIVEƤREPVIPIEWI candidate, demonstrating a clear understanding of the game design and development process. 6. Create 14.C Learning Objectives and Assessments unity.com | 91 © 2020 Unity Technologies Principles of Versioning and Game Release 14 14.D Standards Alignment Guide 14.D.1: Professional Standards for Interactive Application and Video Game Creation 3 .2.1: Explain the stages of game deployment (pre-Alpha, Alpha, Beta stages, release candidate, “going gold,” etc.). 3.2.2: Explain how software versioning is used and why. 3.2.3: 'SQTEVIVIZMWMSRGSRXVSPWSJX\[EVISTXMSRWERHHMWGYWWTVSWERHGSRWJVSQWIZIVEPWTIGMƤGI\\EQTPIW 3.2.4: Deploy, use and demonstrate a revision control system for a new or existing project. 14.D.2: Common Core State Standards (CCSS) CCSS.ELA-Literacy.RST.9-10.3 Follow precisely a complex multi-step procedure when carrying out experiments, XEOMRKQIEWYVIQIRXWSVTIVJSVQMRKXIGLRMGEPXEWOWEXXIRHMRKXSWTIGMEPGEWIWSVI\\GITXMSRWHIƤRIHMRXLIXI\\X CCSS.ELA-Literacy.RST.9-10.2 Determine the central ideas or conclusions of a text; trace the text’s explanation or depiction of a complex process, phenomenon, or concept; provide an accurate summary of the text. 14.D.3: Stem Career Clusters (SCC) SCC02 Communications: Use oral and written communication skills in creating, expressing and interpreting information and ideas including technical terminology and information. SCC04 Information Technology Applications: 9WIMRJSVQEXMSRXIGLRSPSK\]XSSPWWTIGMƤGXSXLIGEVIIVGPYWXIVXS access, manage, integrate, and create information. 14.D.4: 21st Century Skills Information, Media and Technology Skills Information Literacy: Access and Evaluate Information ICT (Information, Communications and Technology) Literacy: Apply Technology Effectively Life and Career Skills Flexibility and Adaptability: Be Flexible 14.D.5: ISTE Standards 6D: Students publish or present content that customizes the message and medium for their intended audiences. 7B: Students use collaborative technologies to work with others, including peers, experts or community members, to examine issues and problems from multiple viewpoints.
---
# Unknown
Introduction to the © 2024 Unity Technologies Universal Render Pipeline for advanced Unity creators ⟶ E-BOOK Contents Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Author and contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 URP: The successor to the Built-In Render Pipeline . . . .10 The solution: Scriptable Render Pipelines . . . . . . . . .10 Why choose URP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Around 90% of Unity games on PC/console are using SRPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 How to open a new URP project . . . . . . . . . . . . . . . . . . . .13 How to add URP to an existing Built-In Render Pipeline project . . . . . . . . . . . . . . . . . . . . . . . . . . .16 Converting the scenes of an existing project . . . . . . . . . .20 Converting custom shaders . . . . . . . . . . . . . . . . . . . . . . . .21 Comparing Quality options between the Built-In Render Pipeline and URP . . . . . . . . . . . . . . . . . . . . . . . . . .22 Built-In Render Pipeline to URP: Low settings . . . . . .23 Built-In Render Pipeline to URP: High settings . . . . .25 Anti-aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 How to work with Quality settings . . . . . . . . . . . . . . . . . . .27 Quality settings when using URP . . . . . . . . . . . . . . . . . . . .28 Modifying a URP Asset . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 GPU Resident Drawer and GPU occlusion culling . . .31 Lighting in URP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 Choose your renderer . . . . . . . . . . . . . . . . . . . . . . . . .33 Light settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 URP shaders for lit scenes . . . . . . . . . . . . . . . . . . . . .37 Lit or Simple Lit? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Lighting overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Light Inspector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Lighting a new scene . . . . . . . . . . . . . . . . . . . . . . . . . .40 Ambient or Environment lighting . . . . . . . . . . . . . . . .41 Shadows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 Main Light shadow resolution . . . . . . . . . . . . . . . . . . .42 Main Light: Shadow Max Distance . . . . . . . . . . . . . . .44 Shadow Cascades . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 Additional Light Shadows . . . . . . . . . . . . . . . . . . . . . .46 Light modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48 Rendering Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 Light probes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58 Light probes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58 Adaptive Probe Volumes . . . . . . . . . . . . . . . . . . . . . . . . . .62 Lighting Scenario asset . . . . . . . . . . . . . . . . . . . .65 Fixing issues with Adaptive Probe Volumes . . . .68 Light leaks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 Rendering Layers . . . . . . . . . . . . . . . . . . . . . . . . .71 Streaming APVs . . . . . . . . . . . . . . . . . . . . . . . . . .74 Sky occlusion . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 Light probes vs APVs . . . . . . . . . . . . . . . . . . . . . . . . . .78 Reflection probes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 Reflection probe blending . . . . . . . . . . . . . . . . . . . . . .81 Box Projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 Lens flares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 Screen space lens flare . . . . . . . . . . . . . . . . . . . . . . . . . . .84 Light halos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 Screen Space Ambient Occlusion . . . . . . . . . . . . . . . . . . .88 Decals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 Shaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 Comparing URP and Built-In Render Pipeline shaders . .94 Custom shaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94 Unlit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Unlit Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97 Unlit Textured . . . . . . . . . . . . . . . . . . . . . . . . . . . .98 Lit Simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 Shadows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 Pipeline callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105 Render Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106 The render graph system . . . . . . . . . . . . . . . . . . . . . . . . .109 Main principles . . . . . . . . . . . . . . . . . . . . . . . . . .109 Resource management . . . . . . . . . . . . . . . . . . .109 Render graph execution overview . . . . . . . . . . . 110 Renderer Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Post-processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Using the URP post-processing framework . . . . . . . . . .124 Adding a Local Volume component . . . . . . . . . . . . . . . . .126 Motion Blur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 Using Motion Blur . . . . . . . . . . . . . . . . . . . . . . . .130 Troubleshooting performance issues . . . . . . . .130 Controlling post-processing with code . . . . . . . . . . . . . .131 Camera Stacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132 Controlling a stack with code . . . . . . . . . . . . . . . . . . . . .134 The SubmitRenderRequest API . . . . . . . . . . . . . . . . . . . . . . . . .135 Coding a screengrab . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 Additional tools compatible with URP . . . . . . . . . . . . . . . . . . .138 Shader Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 Fullscreen Shader Graph . . . . . . . . . . . . . . . . . .145 Six Way Shader Graph . . . . . . . . . . . . . . . . . . . .147 VFX Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148 2D Renderer and 2D lights . . . . . . . . . . . . . . . . . . . . . . . .150 2D game development resources from Unity . . . . . . . . .153 2D sample projects from Unity . . . . . . . . . . . . . . . . .153 More Unity 6 features for URP . . . . . . . . . . . . . . . . . . . . . . . . . .156 Spatial-Temporal Post-Processing (STP) . . . . . . . . . . . .156 High Dynamic Range display output for PC and consoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 Using a Pipeline State Object . . . . . . . . . . . . . . . . . . . . .159 PSO creation and caching . . . . . . . . . . . . . . . . . . . . .159 Tracing a new PSO collection . . . . . . . . . . . . . . . . . .161 Precooking a PSO collection . . . . . . . . . . . . . . . . . . .161 Platform support . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Optimizing lighting and rendering in URP . . . . . . . . . . . . . . . .165 Light probes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 Reflection probes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 Camera settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 Occlusion culling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 Pipeline settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170 Frame Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171 Unity Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172 The URP 3D Sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 The garden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 The oasis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 The cockpit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 The terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 Moving between the scenes . . . . . . . . . . . . . . . . . . . . . .178 Scalability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182 Running the sample project on a mobile device . . . . . . .185 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188 © 2024 Unity Technologies7 of 188 | unity.com Introduction This guide can help experienced Unity developers and technical artists develop as efficiently as possible with the Universal Render Pipeline (URP) in Unity 6. URP and the High Definition Render Pipeline (HDRP) are two rendering solutions provided by Unity that are built on top of the Scriptable Render Pipeline (SRP) framework. These SRPs enable you to customize the culling of objects, their drawing, and the post-processing of the frame without having to use low-level programming languages like C++. You can also create your own fully customized SRP. URP is Unity’s default renderer for 2D and 3D games for mobile, XR, and untethered hardware. It’s the successor to our Built-In Render Pipeline, designed to be efficient for you to learn, customize, and scale to all Unity-supported platforms. In Unity 6 it offers the same functionality as the Built-In Render Pipeline, and in a number of areas, exceeds its quality levels and performance. Some of the areas this e-book provides expert guidance and best practices for include how to: —Set up URP for a new project, or convert an existing Built-In Render Pipeline-based project to URP. —Work with URP Quality settings. —Use all lighting tools available in URP including new features like Adaptive Probe Volumes (APVs) for real-time global illumination and lighting scenarios that blend between day and night lighting. © 2024 Unity Technologies8 of 188 | unity.com | Introduction | Lighting in URP | Shaders | —Use URP shaders for lit scenes and understand the differences between URP and Built- In Render Pipeline shaders. —Use custom shaders, includes and HLSL includes. —Use the URP post-processing framework, including adding a Local Volume and controlling post-processing with code. —Use Rendering layers. —Apply many kinds of performance optimizations with tools in URP, including the newly- released GPU Resident Drawer, GPU occlusion culling, and more. —Customize the render pipeline using Renderer Features and the render graph system. Multiplatform deployment is a key factor in the success of many games. Players often play the same game on different devices, such as console and mobile, meaning Unity developers require rendering options that scale up and down for numerous devices, with as few steps and complexity as possible. With scalability, customizability, and a rich feature set, URP offers you creative freedom in any type of project, from stylized visuals to physically based rendering. A scene made with URP © 2024 Unity Technologies9 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Author and contributors Nik Lever, the author of this e-book, has been creating real-time 3D content since the mid- nineties and using Unity since 2006. For over 30 years he led the small development company, Catalyst Pictures, and has provided courses since 2018 with the aim of helping game developers expand their knowledge in a rapidly evolving industry. Unity contributors Steven Cannavan is a senior development consultant on the Accelerate Solutions Games team, specializing in the Scriptable Rendering Pipelines. He has over 16 years of experience in the game development industry. Maxime Grange is a senior technical artist with eight years of experience, starting in VR indie games and advancing to become a light technical artist in Unity. Passionate about rendering techniques, shaders, and developing artist tools, Maxime focuses on achieving stunning visuals while maintaining optimal runtime performance. Felipe Lira has over 14 years of experience as a software engineer in the games industry, and specializes in graphics programming and multiplatform game development. Ali Mohebali has 21 years of experience working in the games industry, and has contributed to hit titles such as Fruit Ninja and Jetpack Joyride, both by Halfbrick Studios. Adrien Moulin is a senior graphics developer in Unity’s render pipeline team. He has over eight years of experience in the simulation and real-time software industry. He is currently focused on delivering the best possible foundations and APIs to the Scriptable Render Pipeline users. Mathieu Muller is the lead product manager for Graphics at Unity. He leads the Graphics product management team and oversees the Graphics roadmap and product vision. Damian Nachman is a senior technical product manager in Unity’s graphics team, specializing in low-level graphics development and optimization. He has 10 years of experience with working on real-time graphics engines and benchmarking across multiple industries. Oliver Schnabel is a senior technical product manager in Unity’s graphics team, where he integrates customer insights and works with global studios to prioritize the development of a more performant, unified, and scalable rendering stack. He brings extensive experience in computer graphics and real-time development. © 2024 Unity Technologies10 of 188 | unity.com | Introduction | Lighting in URP | Shaders | URP: The successor to the Built-In Render Pipeline One of Unity’s biggest strengths is its platform reach. The ideal for all game studios is to create once and efficiently deploy their game to their desired range of platforms, from high- end PCs to low-end mobile. The Built-In Render Pipeline was developed to be a turnkey solution for all platforms supported by Unity. It supports a mix of graphics features and is convenient to use with Forward and Deferred pipelines. However, as Unity continues to add support for more platforms, the shortcomings of the Built- In Render Pipeline have become more pronounced: —The bulk of the code is written in C++ and can’t be modified by developers, making it a blackbox system. —The render flow and render passes are prestructured. —The rendering algorithm is hardcoded. —Unconstrained customization makes achieving good performance on all platforms difficult. —It exposes callbacks in the rendering code that trigger sync points in the pipeline. Those callbacks prevent multithreaded rendering optimizations, enabling changes for injection of state at any point in the frame dynamically by calling to C#. —Caching data to manage the persistence state for user injection is difficult. The solution: Scriptable Render Pipelines The SRPs were developed to support an efficient multiplatform workflow by providing: —Intelligent and reliable scaling for the maximum number of hardware platforms, from high- to low-end devices. —The ability to customize rendering processes using C#, not C++. Using C# means a new executable does not need to be compiled for every change. —Flexibility to support architecture evolution. —Flexibility to create sharp graphics that are performant across many platforms. © 2024 Unity Technologies11 of 188 | unity.com | Introduction | Lighting in URP | Shaders | The image below illustrates how SRPs work. With SRPs, you can use C# to control and customize render passes and rendering control, as well as HLSL shaders that can be created using artist-friendly tools such as Shader Graph. Shaders give you access to even the lower- level API and engine-layer abstractions. The graphics programmable model for the Scriptable Render Pipelines An advanced user can create a new SRP from scratch or modify the HDRP or URP. The graphics stack is open source and available for use on GitHub . Why choose URP —Accessible to a wide range of users: URP is configurable by artists and technical artists alike, providing more flexibility for prototyping and refining rendering techniques for full game production. —Extendable and customizable: URP allows users to modify existing capabilities and extend the pipeline with new ones, making it a solid choice for advanced users, including Asset Store and third-party package creators, experienced studios, and advanced teams. While the low-level rendering API is written in C++ for performance purposes, a URP developer can write a simple C# script to be called during the render pipeline, enabling high-level customization without sacrificing performance. —Multiple rendering options: URP provides a Universal Renderer that supports Forward, Forward+ and Deferred rendering paths, as well as a 2D Renderer . These renderers can be extended with additional features and Scriptable Render Passes. The Render Objects feature can be used to render objects from a given Layer Mask at © 2024 Unity Technologies12 of 188 | unity.com | Introduction | Lighting in URP | Shaders | different events in the rendering pipeline. It also allows you to override material and other render states when rendering those objects, making it possible to customize the rendering without code. URP can be extended with custom renderers to suit specific needs . The render graph system enables you to access and manipulate the various buffers used to render a frame; using the Renderer Features workflow means this can be injected at any stage in the render pipeline. —Excellent performance: URP provides robust performance and provides many tools for you to adapt the balance between fidelity and frame rate on a wide range of devices. In particular: —URP evaluates real-time lighting very efficiently. In Forward rendering it evaluates all lighting in a single pass. Forward+ improves upon standard Forward rendering by culling lights spatially rather than per object. This increases the overall number of lights that can be utilized in rendering a frame. In Deferred rendering it supports the Native RenderPass API, allowing G-buffer and lighting passes to be combined into a single render pass. —There are CPU and GPU improvements when drawing meshes. The SRP Batcher helps ensure fewer draw calls and improves on how depth is handled, while GPU Resident Drawer and occlusion culling can significantly reduce the draw calls for some scenes . —URP makes more efficient use of tile memory on mobile devices, leading to less power consumption, a longer battery life, and therefore, the possibility of longer play sessions. —URP comes with an integrated post-processing stack that allows for better performance compared to the Built-In Render Pipeline. Using the Volume framework, you can create post-processing effects that are dependent on the Camera position without writing any code. —Compatible with the other key tools: URP supports artist- and technical artist-friendly tools like Shader Graph, VFX Graph, and the Rendering Debugger . —2D rendering: URP supports advanced 2D lighting, shadows, and post-processing effects, enhancing the visual quality of 2D games without compromising on performance. © 2024 Unity Technologies13 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Around 90% of Unity games on PC/console are using SRPs The latest data available to Unity shows that URP is the most popular choice for games using Unity released on PC and console in 2023. The graph below shows that the Built-In Render Pipeline is now only used by a small fraction of development teams. Proportion of games released using the different pipelines available from Unity However, while most Unity projects are now being built on URP or HDRP, the Built-In Render Pipeline will remain an available option in Unity 6. How to open a new URP project Open a new project using URP via the Unity Hub. Click on New and verify that the Unity version selected at the top of the window is Unity 6 or newer. Choose a name and location for the project, select the Universal 2D or Universal 3D templates then click Create . When you create a new project with the URP template, you might have to download the template for the first time. © 2024 Unity Technologies14 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Note: The template ensures that your project is set to use a linear color space, which is required for calculating lighting correctly. The URP 3D sample scene, which is covered at the end of this book, is available as a downloadable template. You can create new scenes via File > New Scene, with essential GameObjects such as Camera and Directional light, and even create your own scene template with prepopulated objects. Read more in the URP Scene Templates documentation . The New Scene dialog displaying Scene Templates © 2024 Unity Technologies15 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Go to Edit > Project Settings and open the Graphics panel. To use URP in-Editor, you must select a URP Asset from the Scriptable Render Pipeline Settings. The URP Asset controls the global rendering and Quality settings of a project and creates the rendering pipeline instance. Meanwhile, the rendering pipeline instance contains intermediate resources and the render pipeline implementation. PC\_RPAsset is the default URP Asset selected on a desktop, but you can switch to Mobile\_ RPAsset . The Graphics panel in Project Settings A later section of this guide details how to adjust the settings of a URP Asset. © 2024 Unity Technologies16 of 188 | unity.com | Introduction | Lighting in URP | Shaders | If you upgrade an existing Built-In Render Pipeline project, you’ll need to add the URP package to your project as it was not included in Unity before Unity 6. The Package Manager displaying the Unity Registry packages Go to Window > Package Manager and click the Packages drop-down to add URP to your project. Make sure to select the Unity Registry, followed by Universal RP. Click Download in the lower-right corner of the window if the URP package is not yet installed on your development computer. Then click Install once it’s downloaded. Installing URP via the Package Manager How to add URP to an existing Built-In Render Pipeline project Important: Be sure to backup your project using source control before following the steps in this section. This process will convert assets, and Unity does not provide an undo option. If you use source control, you will be able to revert to previous versions of the assets if necessary . © 2024 Unity Technologies17 of 188 | unity.com | Introduction | Lighting in URP | Shaders | To create a URP Asset, right-click in the Project window and choose Create > Rendering > URP Asset (with Universal Renderer) . Name the asset . Creating a URP Asset Remember: If you create a new project using the Universal Render Pipeline or 3D (URP) templates, these URP Assets are already available in the project. Rather than creating a single URP Asset, URP uses two files, each with an Asset extension. Two assets in URP, one for URP settings and the other for Renderer Data One is called UniversalRP\_Renderer, a Renderer Data Asset that you can use to filter the layers the renderer works on, and intercept the rendering pipeline to customize how the scene is rendered. This way, you can facilitate the creation of high-quality effects. See the section on Pipeline callbacks for more information . © 2024 Unity Technologies18 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Additionally, the UniversalRP\_Renderer controls high-level rendering logic and passes for URP. It supports Forward and Deferred paths, and a 2D Renderer that enables features such as 2D Lights, 2D Shadows, and Light Blend Styles. You can even extend URP to create your own renderers . The Inspector for UniversalRP\_Renderer Data Asset The other URP Asset provides options for controlling the Quality, Lighting, Shadows and Post-processing settings.. You can use different URP Assets to control the Quality settings, a process outlined further down in this section. This Settings Asset is linked to the Renderer Data Asset via the Renderer List. When you create a new URP Asset, the Settings Asset will have a Renderer List containing a single item – the Renderer Data Asset created at the same time, set as the default. You can add alternative Renderer Data Assets to this list. © 2024 Unity Technologies19 of 188 | unity.com | Introduction | Lighting in URP | Shaders | The default renderer is used for all Cameras, including the Scene view. A Camera can override the default renderer by selecting another one from the Renderer List. This can be done through the use of a script, as needed . A URP Asset in the Inspector Despite following these steps to create a URP Asset, an open scene in the Scene or Game view will still use the Built-In Render Pipeline. You must complete one last step to make the switch to URP: Go to Edit > Project Settings and open the Graphics panel. Click the small dot next to None (Render Pipeline Asset). In the open panel, select UniversalRP . Selecting a Scriptable Render Pipeline Asset © 2024 Unity Technologies20 of 188 | unity.com | Introduction | Lighting in URP | Shaders | A warning message will pop up regarding the switch, but just press Continue . As there is no content in your project yet, changing the render pipeline will be almost instantaneous. You’re now ready to use URP. Converting the scenes of an existing project After you complete the above steps, you’ll find that your beautiful scenes are suddenly colored magenta. This is because the shaders used by the materials in a Built-In Render Pipeline project are not supported in URP. Fortunately, there is a method for restoring your scenes to their original quality. Materials in a scene appear in magenta because their Built-In Render Pipeline-based shaders must be converted for use in URP. Go to Window > Rendering > Render Pipeline Converter . Choose Convert Built-In to 2D (URP) for a 2D project, or Built-In to URP for a 3D project. Assuming that your project is 3D, you’ll need to select the appropriate converters: —Rendering Settings: Select this to create multiple Render Pipeline setting assets that will match Built-In Render Pipeline Quality settings as closely as possible. This lets you test different Quality Levels more efficiently. See the section on comparing Built-In Render Pipeline and URP Quality options for more details. —Material Upgrade: Use this to convert materials from the Built-In Render Pipeline to URP. —Animation Clip Converter: This converts animation clips. It runs once the Material Upgrade converter finishes. —Read-only Material Converter: This converts the prebuilt, read-only Materials included in a Unity project. It indexes the project and creates the temporary .index file. Note that it can take significant time . © 2024 Unity Technologies21 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Converting custom shaders Custom shaders are not converted using the Material Upgrade converter. The Shaders and Shader Graph sections outline the steps for converting custom Built-In Render Pipeline shaders to URP . Using Shader Graph is often the quickest way to update a custom shader to URP. There are several different URP shaders including: —Universal Render Pipeline/Lit: This physically based render (PBR) shader, similar to the Built-In Standard Shader, can be used to represent most real-life materials. It supports all the Standard Shader features with both metallic and specular workflows. —Universal Render Pipeline/Simple Lit: This uses a Blinn-Phong model, and is suitable for low-end mobile devices or games that don’t use PBR workflows. —Universal Render Pipeline/Baked Lit: Use this shader for stylised games or apps that only require baked lighting via lightmaps, light probes and Adaptive Probe Volumes (APVs). This shader is not Physically Based and has no real-time lighting, so all real-time relevant shader keywords and variants are stripped from the shader code, making it faster to calculate. —Universal Render Pipeline/Complex Lit: The Complex Lit shader contains all the functionality of the Lit shader and adds advanced material features. Some features in this shader might be more resource-intensive and require Unity Shader Model 4.5 hardware . —Universal Render Pipeline/Unlit: This is a GPU performant shader that doesn’t use lighting equations. —Universal Render Pipeline/Terrain/Lit: This is suitable to use with the Terrain Tools package. —Universal Render Pipeline/Particles/Lit: This particle shader uses a PBR lighting model. —Universal Render Pipeline/Particles/Unlit: This unlit particle shader is light on the GPU. Although Simple Lit replaces many legacy/mobile shaders, the performance is not the same. Legacy/mobile shaders only partially evaluate lighting, whereas Simple Lit considers all lights as defined by the URP Asset . Refer to this table in our URP documentation to see how each URP shader maps to its Built-In Render Pipeline equivalent. © 2024 Unity Technologies22 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Once you select one or more of the above converters, either click Initialize Converters or Initialize And Convert. Whichever option you choose, the project will be scanned and those assets that need converting will be added to each of the converter panels. If you choose Initialize Converters you can limit the conversions by deselecting the items using the checkbox provided for each one. At this stage, click Convert Assets to start the conversion process. If you choose Initialize And Convert, the conversion starts automatically after the converters are initialized. Once it’s complete you might be asked to reopen the scene that is active in the Editor. The Render Pipeline Converter Comparing Quality options between the Built-In Render Pipeline and URP There are several default Quality options available in the Built-In Render Pipeline, from Very low to Ultra. The Quality settings impact the fidelity of the scene, including Texture resolution, lighting, shadow rendering, and so on. © 2024 Unity Technologies23 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Go to Edit > Project Settings and select the Quality panel. Here, you can switch between these Quality options by picking the current quality. This will change the render settings used by the Scene and Game views. You can also edit each of the Quality options from this panel. If you select the Rendering Settings option while using the Render Pipeline Converter and switching from the Built-In Render Pipeline to URP, a set of URP Assets that attempt to match the Built-In Render Pipeline Quality options will be created. The first table below shows how the Built-In Render Pipeline maps to URP for Low settings, while the second table displays a comparison for High settings. In both the Built-In Render Pipeline and URP, settings are chosen via the Quality panel. The URP Asset settings are available via the Inspector when selecting a URP Asset . Refer to the URP documentation for more details. Built-In Render Pipeline to URP: Low settings Setting Built-in Render Pipeline URPURP Asset settings Rendering Pixel Light Count0 Not applicable (NA) \* NA Anti-aliasingDisabledNADisabled Render ScaleNANA1 Real-time Reflection ProbesNoNoNA Resolution Scaling Fixed DPI Factor 11NA VSync CountDon’t syncDon’t syncNA Depth TextureNANANo Opaque TextureNANANo Opaque DownsamplingNANANA Terrain HolesNANAYes HDRNANAYes Textures Texture QualityHalf resHalf resNA Anisotropic TexturesDisabledDisabledNA Texture StreamingNoNoNA Particles Soft ParticlesNoNANA Particle Raycast Budget1616NA Terrain Billboards Face Camera Position NoNoNA © 2024 Unity Technologies24 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Shadows Shadowmask ModeShadowmaskShadowmaskNA ShadowsDisabledNANA Shadow ResolutionLow resolutionNANA Shadow ProjectionStable fitNANA Shadow Distance20NANA Shadow Near Plane Offset3NANA Shadow CascadesNo CascadesNANA Cascade splitsNANANA Working unitNANANA Depth BiasNANANA Normal BiasNANANA Soft ShadowsNANANA Async Asset Upload Time Slice22NA Buffer Size1616NA Persistent BufferYesYesNA Level of Detail LOD Bias0 . 40 . 4NA Maximum LOD level00NA Meshes Skin Weights4 bones4 bonesNA Lighting Main Light:NANAPer pixel Cast ShadowsNANANo Shadow ResolutionNANANA Additional Lights:NANADisabled Per Object LimitNANANA Cast ShadowsNANANA Shadow Atlas ResolutionNANANA Shadow ResolutiontiersNANANA Cookie AtlasResolutionNANANA Cookie AtlasFormatNANANA Reflection probes:NANANA © 2024 Unity Technologies25 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Probe BlendingNANANo Box ProjectionNANANo Post-processing Grading ModeNANALow Dynamic Range NANA16 Fast sRGB/Linear conversionNANANo \* In URP, Pixel Light Count is handled using Additional Lights > (Per pixel ) > Per Object Limit . Built-In Render Pipeline to URP: High settings Setting Built-In Render Pipeline URPURP Asset settings Rendering Pixel Light Count2 Not applicable (NA) NA Anti-aliasingDisabledNA2x Render ScaleNANA1 Real-time Reflection Probes YesYesNA Resolution Scaling Fixed DPI Factor 11NA VSync CountEvery V BlankEvery V BlankNA Depth TextureNANANo Opaque TextureNANANo Opaque DownsamplingNANANA Terrain HolesNANAYes HDRNANAYes Textures Texture QualityFull resFull resNA Anisotropic TexturesDisabledDisabledNA Texture StreamingNoNoNA Particles Soft ParticlesNoNANA Particle Raycast Budget256256NA © 2024 Unity Technologies26 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Terrain Billboards Face Camera Position YesYesNA Shadows Shadowmask Mode Distance Shadowmask Distance Shadowmask NA Shadows Hard and Soft Shadows NANA Shadow ResolutionMedium resolutionNA2048 Shadow ProjectionStable fitNANA Shadow Distance40NA50 Shadow Near Plane Offset3NANA Shadow Cascades2 CascadesNA2 Cascade splits33/67NA12 .5/33 .8/3 .8 Working unitPercentPercentMetric Depth BiasNANA1 Normal BiasNANA1 Soft ShadowsNANAYes Async Asset Upload Time Slice22NA Buffer Size1616NA Persistent BufferYesYesNA Level of Detail LOD Bias11NA Maximum LOD level00NA Meshes Skin WeightsUnlimitedUnlimitedNA Lighting Main Light:NANAPer pixel Cast ShadowsNANAYes Shadow ResolutionNANANA Additional Lights:NANAPer pixel Per Object LimitNANA4 Cast ShadowsNANAYes Shadow Atlas ResolutionNANA2048 Shadow Resolution tiersNANA512/1024/2048 Cookie AtlasResolutionNANA2048 © 2024 Unity Technologies27 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Cookie AtlasFormatNANAColor high Reflection probes:NANANA Probe BlendingNANAYes Box ProjectionNANANo Post-processing Grading ModeNANALow Dynamic Range LUT sizeNANA32 Fast sRGB/Linear conversion NANANo Anti-aliasing In URP in Unity 6 you can select Temporal Anti-aliasing (TAA) as an anti-aliasing option for the Camera, via Camera > Rendering > Anti-aliasing . TAA selected URP in Unity 6 improves the overall quality of TAA without impacting performance. It provides better edge anti-aliasing (removing odd edge artifacts seen with the previous implementation) and better retention of texture quality. The output quality is now comparable to the low and medium SMAA presets but with better performance. How to work with Quality settings When using URP, quality settings are divided between the Quality panel and those for each URP Asset. The following table shows where each setting can be found. © 2024 Unity Technologies28 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Quality settings when using URP SettingQuality panelURP Asset Rendering Anti-aliasing ✅ Render Scale ✅ Resolution Scaling Fixed DPI Factor ✅ VSync Count ✅ Depth Texture ✅ Opaque Texture ✅ Opaque Downsampling ✅ Terrain Holes ✅ HDR ✅ Textures Texture Quality ✅ Anisotropic Textures ✅ Texture Streaming ✅ Particles Particle Raycast Budget ✅ Terrain Billboards Face Camera Position ✅ Shadows Shadowmask Mode ✅ Shadow Resolution ✅ Shadow Distance ✅ Shadow Cascades ✅ Cascade splits ✅ Working unit ✅ Depth Bias ✅ Normal Bias ✅ Soft Shadows ✅ © 2024 Unity Technologies29 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Async Asset Upload Time Slice ✅ Buffer Size ✅ Persistent Buffer ✅ Level of Detail LOD Bias ✅ Maximum LOD level ✅ Meshes Skin Weights ✅ Lighting Main Light: ✅ —Cast Shadows ✅ —Shadow Resolution ✅ Additional Lights: ✅ —Per Object Limit ✅ —Cast Shadows ✅ —Shadow Atlas Resolution ✅ —Shadow Resolutiontiers ✅ —Cookie AtlasResolution ✅ —Cookie AtlasFormat ✅ Reflection probes: ✅ —Probe Blending ✅ —Box Projection ✅ Post-processing Grading Mode ✅ LUT size ✅ Fast sRGB/Linear conversion ✅ If you switch between Quality options, choose a Quality Level for the Render Pipeline Asset in the Quality panel via Project Settings. Note that if the Quality Level is not set, the Render Pipeline Asset will default to the one set as the Scriptable Render Pipeline Asset in the Graphics panel. This can cause some confusion as you attempt to adjust the Quality settings of a URP Asset. For instance, you might accidentally assume that the Quality Level set in the URP Asset is the one currently used by the Scene and Game views. © 2024 Unity Technologies30 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Setting the Quality Level for the Render Pipeline Asset Modifying a URP Asset This image shows a URP Asset in the Inspector with all its available settings. See the URP documentation to learn more about each setting. A URP Asset in the Inspector Note: If you have the URP 2D Renderer enabled, some of the options related to 3D rendering in the URP Asset will not impact your final app or game. The 2D Renderer Asset is available under Scriptable Render Pipeline Settings via Edit > Project Settings > Graphics . The Quality panel for a URP Asset allows you to set the HDR format to 64-bit for better fidelity. However, be aware that this results in a performance hit and requires additional memory, so avoid this setting on low-end hardware . Another feature of the Quality panel is the option to enable LOD Cross Fade. LOD is a technique to reduce the GPU cost needed to render distant meshes. As the Camera moves, different LODs will be swapped to provide the right level of quality. LOD Cross Fade allows for smoother transitions of different LOD geometries and avoids the harsh snapping and popping that occurs during a swap. © 2024 Unity Technologies31 of 188 | unity.com | Introduction | Lighting in URP | Shaders | GPU Resident Drawer and GPU occlusion culling GPU Resident Drawer is a new feature in Unity 6 that’s available via the Rendering section of the URP Asset . The GPU Resident Drawer and GPU Occlusion Culling options available via the URP Asset in Unity 6 Notice from the screengrabs above that the batches necessary to render the garden environment from the URP 3D Sample scene in Editor mode is 3569. When GPU Resident Drawer is set to Instanced Drawing this drops to just 506. The GPU Resident Drawer is a GPU-driven rendering system that’s designed to optimize CPU time. It enables GameObjects to take advantage of the BatchRenderGroup API, so they can benefit from its faster batching and improved CPU performance. With GPU Resident Drawer, you can author your game using GameObjects, and when processed, they will be ingested and rendered via a special fast path that handles better instancing. When you enable this feature, games that are CPU-bound due to a high number of draw calls will see a reduction in this bottleneck as the amount of draw calls is reduced. The improvements you will see are dependent on the scale of your scenes and the amount of instancing you utilize. The more instanceable objects you render, the bigger the benefits gain. © 2024 Unity Technologies32 of 188 | unity.com | Introduction | Lighting in URP | Shaders | When you enable GPU Resident Drawer, GPU occlusion culling also becomes available as an option. This uses a GPU-driven approach to ensure you don’t render things you can’t see on the screen; depending on your content, it can reduce CPU work dramatically. Viewing the Occlusion Test using the Rendering Debugger To see if GPU occlusion culling is effective for your scene go to Window > Analysis > Rendering Debugger, and select GPU Resident Drawer > Occlusion Test Overlay. This displays a heatmap of culled instances. The heatmap displays blue if there are few culled instances, through to red if there are many culled instances. If you enable this setting, culling might be slower. GPU Resident Drawer is targeted for MeshRenderers. It will not handle Skinned Mesh Renderers, VFX Graphs, particle systems, or similar effects renderers. No changes to your existing content are required to take advantage of it. Note: GPU Resident Drawer requires the Forward+ renderer, and Project Settings > Graphics > BatchRendererGroup Variants needs to be set to Keep All . © 2024 Unity Technologies33 of 188 | unity.com Lighting in URP This section shows how lighting in URP in Unity 6 works, including covering techniques you can use to achieve balance between graphic fidelity and performance. Start with these resources if you are new to lighting in Unity: —Lighting documentation —The art of lighting game environments —Real-time lighting in Unity —Harnessing light with the URP and the GPU Lightmapper Choose your renderer URP offers different rendering techniques, each with its own strengths and weaknesses. The choice of rendering technique depends on the specific requirements and constraints of your project. Let’s delve into the differences between Forward, Forward+, and Deferred rendering in (URP). © 2024 Unity Technologies34 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Forward rendering How it worksProsCons Forward rendering is a traditional rendering technique where each object in the scene is rendered individually and each pixel computed separately. This means that for every pixel on the screen, Unity calculates the lighting and shading for each object in the scene that contributes to that pixel’s final color. The workflow is relatively straight-forward to understand. It works well in scenes with a small number of lights and simple materials. It can be inefficient for rendering scenes with a large number of lights or complex materials. This is because it requires multiple passes over the scene for each light, leading to increased rendering overhead . Forward+ rendering How it worksProsCons Forward+ rendering is an enhancement that addresses some of the limitations of Forward rendering, particularly when dealing with a large number of lights. In Forward+ rendering, lights are grouped into clusters, and only objects within each cluster are considered when calculating lighting, rather than processing every object in the scene for each light. It improves performance compared to Forward rendering, especially in scenes with many lights. It allows for more efficient utilization of hardware resources by reducing the number of objects that need to be considered for each light. It can still struggle with extremely large numbers of lights or very complex scenes. Additionally, implementing Forward+ rendering may require more effort and optimization compared to Forward rendering . URP Deferred rendering How it worksProsCons Deferred rendering decouples the lighting and shading calculations from the geometry rendering process. Geometry is first rendered to a set of buffers (e.g., G-buffer) that store information about each pixel’s position, normals, and material properties. Then, lighting calculations are performed per-pixel based on the information stored in these buffers . It’s highly efficient for scenes with a large number of lights or complex materials because lighting calculations are performed per-pixel rather than per-object. This allows for a large number of lights to be rendered with minimal performance impact. Deferred rendering has its own set of challenges, including increased memory usage due to the need to store additional buffers, limitations with transparent objects, and difficulty in handling certain types of lighting effects such as volumetric lighting. © 2024 Unity Technologies35 of 188 | unity.com | Introduction | Lighting in URP | Shaders | The table below provides more detail about these three rendering options: FeatureForwardForward+Deferred Maximum number of real-time lights per object 9 Unlimited; per-Camera limit applies Unlimited Per pixel normal encoding No encoding (accurate normal values) No encoding (accurate normal values) Two options: —Quantization of normals in G-buffer (loss of accuracy, better performance) —Octahedron encoding (accurate normals, might have significant performance impact on mobile GPUs) For more information, see Encoding of normals in G-buffer. MSAAYesYesNo GPU Resident DrawerNoYesNo Vertex lightingYesNoNo Camera stackingYesYes Supported with a limitation: Unity renders only the base Camera using the Deferred path; Unity renders all overlay Cameras using the Forward Rendering path © 2024 Unity Technologies36 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Use the Universal Renderer Data Asset to switch between the rendering paths. Choosing a rendering path. When using Forward+, a number of URP Asset Lighting settings are overridden: —Main light: The value of this property is Per Pixel, regardless of the value you select. —Additional lights: The value of this property is Per Pixel, regardless of the value you select. —Additional Lights > Per Object Limit: Unity ignores this property. —Reflection Probes > Probe Blending: Reflection probe blending is always on. Light settings You set light properties in the three places listed here: 1 . Window > Rendering > Lighting: This panel allows you to set lightmapping and environment settings, and view real-time and baked lightmaps. It is unchanged from the Built-In Render Pipeline to URP. 2 . Light Inspector: There are significant differences between the Built-In Render Pipeline and URP Inspectors. See the Light Inspector section for details. 3 . URP Asset Inspector: This is the principal place where you will set shadows. Lighting in URP relies heavily on the settings chosen in this panel. Quality settings are handled via Edit > Project Settings > Quality in the Built-In Render Pipeline. In URP, this depends on the URP Asset settings which can be swapped using the © 2024 Unity Technologies37 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Quality panel (see the Quality settings section). As the focus here is on lighting, the methods apply to materials that use the shaders in the following table. URP shaders for lit scenes ShaderDescription Complex LitThis shader has all the features of the Lit Shader. Select it when using the Clear Coat option to give a metallic sheen to a car, for example. The specular reflection is calculated twice – once for the base layer, and again to simulate a transparent thin layer on top of the base layer. LitThe Lit Shader lets you render real-world surfaces, such as stone, wood, glass, plastic, and metals with photorealistic quality. The light levels and reflections look lifelike and react across various lighting conditions, from bright sunlight to a dark cave. This is the default choice for most materials that use lighting. It supports baked, mixed, and real-time lighting, and works with Forward or Deferred rendering . It is a physically based shading (PBS) model. Due to the complexity of the shading calculations, it’s best to avoid using this shader on low-end mobile hardware . Simple LitThis shader is not physically based. It uses a non-energy conserving Blinn- Phong shading model and gives a less photorealistic result. Nonetheless, it can provide an excellent visual appearance. It is more suited to use on non- physically based projects when targeting low-end mobile devices. Baked LitThis shader provides a performance boost for objects that don’t need to support real-time lighting, including distant static objects that will never be affected by dynamic objects, real-time lights, or dynamic shadows. © 2024 Unity Technologies38 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Lit or Simple Lit? The choice between a Lit Shader and Simple Lit Shader is largely an artistic decision. It is easier for artists to get a realistic render using the Lit Shader, but if a more stylized render is desired, Simple Lit provides stellar results. Comparing scenes rendered using different shaders: The top-left image uses the Lit Shader, the top-right, the Simple Lit Shader, and the bottom image, the Baked Lit Shader. It’s possible to implement your own custom lighting model by writing a custom shader or using Shader Graph (see the Additional tools chapter). © 2024 Unity Technologies39 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Lighting overview Lights are divided into Main Light and Additional Lights in URP. The settings for the Main Light property affect the Directional Light. This is either the brightest light or the one set via Window > Rendering > Lighting > Environment > Sun Source . Setting the Sun Source Later in the guide, you’ll learn how to use the URP Asset settings to set the number of dynamic lights that affect an object via the Object Per Light limit, which is capped at eight for the URP Forward Renderer, but Unlimited for Forward+ and Deferred. The number of dynamic lights that can be used per Camera is also limited by different hardware: —Desktop and console platforms: 1 main light, and 256 additional lights —Mobile platforms: 1 main light, and 32 additional lights —OpenGL ES 3 .0 and earlier: 1 main light, and 16 additional lights Light Inspector The Light Inspector is one of three places where you can set up lighting. The available properties for lights in URP are Directional, Spot, Point, and Area, though area lights only work in Baked Indirect Mode. See the Light Mode section for more details. © 2024 Unity Technologies40 of 188 | unity.com | Introduction | Lighting in URP | Shaders | The Light Inspector panel in URP The image above shows how light properties are presented in the Light Inspector. The URP version has four groupings of controls, based on whether the light is Directional or Point, and an additional Shape grouping for Spot and Area lights. Lighting a new scene Creating a Lighting Settings Asset The first step to lighting a new scene for URP is to create a new Lighting Settings Asset (see image above). Open Window > Rendering > Lighting, and once you’re on the Scene tab, click New Lighting Settings, and give the new asset a name. The settings that you apply in Lighting panels are now saved to it. Switch between settings by switching the Lighting Settings Asset. © 2024 Unity Technologies41 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Ambient or Environment lighting The main ambient light is calculated from the panel accessible via Window > Rendering > Lighting > Environment . The available settings for lighting in the Environment panel You can set Environment Lighting to use the scene’s Skybox, with an option to adjust the Intensity, Gradient, or Color. Only the Gradient and Color modes update in real-time. The Skybox mode requires an on-demand bake to compute the ambient probe from the sky. Environment Lighting options © 2024 Unity Technologies42 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Shadows As discussed earlier, you need a Renderer Data object and a Render Pipeline Asset when using URP. The section on setting up a project for URP covers how to view your scene via Render Pipeline Asset, which you can use to define the fidelity of your shadows. The URP Asset Main Light shadow resolution The Lighting and Shadow groups in the URP Asset are key to setting up shadows in your scene. First, set the Main Light Shadow to Disabled or Per Pixel, then go to the checkbox to enable Cast Shadows. The last setting is the resolution of the shadow map. If you’ve worked with shadows in Unity before, you know that real-time shadows require rendering a shadow map that contains the depth of objects from the perspective of the light. The higher the resolution of this shadow map, the higher the visual fidelity – though both more processing power and increased memory are required. Factors that increase shadow processing include: 1 . The number of Shadow Casters rendered in the shadow map – this number for the Main Light depends on the Shadow Distance (far plane of shadow frustum) 2 . Shadow Receivers that are visible (you have to encompass them all) 3 . Shadow Cascades splits 4 . Shadow filtering (soft shadows) The highest resolution isn’t always ideal. For example, the Soft Shadows option has the effect of blurring the map. In the following image of a cartoon-like haunted room, you can see that the chair in the foreground casts a shadow on the desk drawers, which appears too crisp when the resolution is greater than 1024. © 2024 Unity Technologies43 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Setting the shadow resolution for the Main Light: The resolution is set to 256 in the top-left image, 512 in the top-right image, 1024 in the middle-left image, 2048 in the middle-right image, and 4096 in the bottom image. © 2024 Unity Technologies44 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Main Light: Shadow Max Distance Varying Max Distance for the Main Light Shadow: Top-left image – 10, top-right image – 30, bottom-left image – 60, bottom-right image – 400 Another important setting for the Main Light Shadow is Max Distance. This is set in scene units. In the image above, the poles are 10 units apart. The Max Distance varies from 10 to 400 units. Notice that only the first pole casts a shadow, and this is cut short at 10 units from the Camera location. At 60 units (bottom-left image), all shadows are in view – the shadow fidelity is adequate. When the Max Distance is much greater than the visible assets, the shadow map is being spread over too large an area. This means that the region in-shot has a much lower resolution than required. The Max Distance property needs to relate directly to what the user can see, as well as the units used in the scene. Aim for the minimum distance that gives acceptable shadows (see note below). If the player only sees shadows from dynamic objects 60 units from the Camera, then set Max Distance to 60. When the Lighting Mode for Mixed Lights is set to Shadowmask, the shadows of objects beyond Shadow Distance are baked. If this was a static scene then you would see shadows on all objects, but only dynamic shadows would be drawn up to the Shadow Distance. © 2024 Unity Technologies45 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Shadow Cascades As assets disappear into the distance due to perspective, it is convenient to decrease Shadow Resolution, thereby devoting more of the shadow map to shadows closer to the Camera. Shadow Cascades can help with this. The images below show the shadow map of the scene with the chair and desk in the haunted room. The cascade count is 1 in the image to the left. The map takes up the whole area. In the image to the right, the cascade count is 4. Notice that the map includes four different maps, with each area receiving a lower resolution map. A cascade count of 1 is likely to give the best result for small scenes like this. But if your Max Distance is a large value, then a cascade count of 2 or 3 will give better shadows for foreground objects, as these receive a larger proportion of the shadow map. Notice that the chair in the left image is much bigger, resulting in a sharper shadow. Shadow map when cascade count is set to 1 (left image) and 4 (right image) You can adjust the start and end ranges for each section of the cascade using the draggable pointers, or by setting the units in the relevant fields (see following image). Always adjust Max Distance to a value that is a close fit for your scene and choose the slider posi- tions carefully. If you use metric as the working unit, always choose the last cascade to be, at most, the distance of the last Shadow Caster. Adjusting the range of a Shadow Cascade © 2024 Unity Technologies46 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Additional Light Shadows Settings available for Additional Lights in URP Asset Having sorted the shadows for the Main Light, it’s time to move on to Additional Lights Mode . Enable additional lights to cast shadows by setting the Additional Lights Mode for the URP Asset to Per Pixel. While the mode can be set to Disabled, Per Vertex, or Per Pixel (see above image), only the latter works with shadows. Note: URP does not support shadows for additional directional lights. Remember, the Main light is always the brightest Directional light. For additional lights with shadows, use a Point or Spot light. Check the Cast Shadows box. Then, select the resolution of the Shadow Atlas. This is the map that will be used to combine all the maps for every light casting shadows. Bear in mind that a Point light casts six shadow maps, creating a cubemap, since it casts light in all directions. This makes a Point light the most demanding performance-wise. The individual resolution of an additional light shadow map is set using a combination of the three Shadow Resolution tiers, plus the resolution chosen via the Light Inspector when selecting the light in the Hierarchy window . Shadows group in the Light Inspector Setting Shadow Type to Soft Shadows enables the Baked Shadow Angle slider. This property adds some artificial softening to the edges of shadows and gives them a more natural look. A new option in Unity 6 is available to switch the Soft Shadows Quality between Low, Medium, and High . © 2024 Unity Technologies47 of 188 | unity.com | Introduction | Lighting in URP | Shaders | In the haunted room, there is a Spot light over the mirror and a Point light over the desk. There are also seven maps. To fit these seven maps onto a 1024px square map, the size of each map needs to be 256px or smaller. If you exceed this size, the resolution of shadow maps will shrink to fit the atlas, resulting in a warning message in the console. Number of mapsAtlas tilingAtlas size (multiply shadow tier size by) 11x11 2–42x22 5–164x44 Setting the Shadow Atlas size based on the number of Additional Lights shadow maps and the tier size chosen per map Shadow Atlas for Additional Lights The image above shows the six maps used by the Point light where the resolution is set to medium and the tier value to 256px. The Spot light has a resolution set to high, with a tier value of 512px. © 2024 Unity Technologies48 of 188 | unity.com | Introduction | Lighting in URP | Shaders | This is a low-polygon version of the haunted room, lit with a Main Directional light, a Point light over the desk, and a Spot light over the mirror. All lights are real-time and casting shadows. Light modes Environments have predominantly static geometry, so that if a light is static, you don’t need to calculate the lighting and shadows for it repeatedly. You can calculate this once at design time, and then use that data when rendering the geometry. This is called lightmapping or baking . Let’s go through the steps for lightmapping using an FPS Sample project by Unity. The following screenshots are from this project, which you can download here. The scene via Inspection > Scenes > Small Indirect demonstrates how to use real-time and baked lighting in URP. © 2024 Unity Technologies49 of 188 | unity.com | Introduction | Lighting in URP | Shaders | The Inspection > Scenes > Small Indirect scene from the Unity 6 URP e-book repository on GitHub. 1 . The scene from the FPS Sample project contains largely static geometry. To include the geometry in lightmapping, click the Static box to the right side of the Inspector. 2 . Choose the lightmapping settings via Window > Rendering > Lighting > Scene. Keep the Lightmap Resolution low while adjusting the settings. Once you have your desired settings, increase the value when generating the final lightmaps. Choose Progressive GPU to speed up the lightmap generation, if your GPU supports it. © 2024 Unity Technologies50 of 188 | unity.com | Introduction | Lighting in URP | Shaders | 3 . Filtering blurs the map to minimize noise. This can result in gaps in a shadow where one object meets another. Use A-Trous filtering to minimize this artifact. See Progressive Lightmapping documentation for more details on the settings available for lightmapping. How filtering affects the shadow between objects © 2024 Unity Technologies51 of 188 | unity.com | Introduction | Lighting in URP | Shaders | 4 . Make sure all static geometry has no overlapping UV values, or is generating lighting UVs on import. 5 . Set Light Mode to Baked or Mixed. Select the light in the Hierarchy window and use the Inspector. Mixed lights will illuminate dynamic objects as well as static ones. 6 . When using mixed lights, set the Light Mode to Baked Indirect, Subtractive, or Shadowmask via Window > Rendering > Lighting > Scene . a . Baked Indirect: Only the indirect light contribution will be baked into the lightmaps and light probes (the bounces of the lights only). Direct lighting and shadows will be real-time. This is an expensive option and not ideal for mobile platforms. However, it does mean that you get correct shadows and direct light for both static and dynamic geometry . © 2024 Unity Technologies52 of 188 | unity.com | Introduction | Lighting in URP | Shaders | b . Subtractive: Here, you bake the direct lighting from a Directional light set to Mixed into the static geometry, and subtract the lighting from shadows cast by dynamic geometry. This results in the static geometry unable to cast a shadow on dynamic objects, unless light probes or Adaptive Probe Volumes (APV) are used, which can cause unpleasant visual discontinuities. URP calculates an estimate of the contribution of the light from the Directional Light and subtracts that from the baked Global Illumination. The estimate is clamped by the Real-time Shadow Color setting in the Environment section of the Lighting window, so the color subtracted is never darker than this color. Then choose the minimum color of your subtracted value and the original baked color. While this mode is the most suitable option for low-end hardware, it cannot correctly combine baked and real-time shadows at runtime, leading to artifacts. This trade-off prioritizes performance over quality. c . Shadowmask: Though similar to Baked Indirect Mode, Shadowmask combines both dynamic and baked shadows, rendering shadows at a distance. It does this by using an additional Shadowmask texture and storing additional information in the light probes. This provides the highest fidelity shadows, but is also the most expensive option in terms of memory use and performance. Visually, it’s identical to Baked Indirect for shots up close. The difference is apparent when looking in the far distance, making it well-suited for open-world scenes. Due to the processing cost, it’s recommended for mid- to high-end hardware only. © 2024 Unity Technologies53 of 188 | unity.com | Introduction | Lighting in URP | Shaders | 7 . Adjust the Lightmap Scale via Asset > Inspector > Mesh Renderer > Lightmapping > Scale In Lightmap, so that distant objects take up less space on the lightmap. The following image shows the texel size of the background rock lightmap with a setting varying from 0 .05 to 0 .5 . 8 . Click Generate Lighting to bake. The baking time depends on the number of static objects, lights set to mixed or baked mode, and the settings chosen for lightmapping, particularly the Max Lightmap Size and the Lightmap Resolution. Baking time is proportional to the number of rays used in baking so Sample Count (Direct Samples, Indirect Samples and Environment Samples) also have a direct effect on baking time. Bake your lightmap via Window > Rendering > Lighting > Generate Lighting . © 2024 Unity Technologies54 of 188 | unity.com | Introduction | Lighting in URP | Shaders | 9 . An interactive baking feature is new in Unity 6 with Draw Modes active (1)\* and Baked Lightmap selected (2). A new panel is displayed with a Preview option (3). While you are in this mode the changes made do not affect the generated data. This feature enables a technical artist to tweak the properties and see how changes could affect the rendering without destroying a previous bake that might have taken a long time to calculate. \*Numbers refer to the image below. Activating interactive preview mode Unity also now provides a Baking Profile. This can be found in the Lighting window when using the GPU backend in on-demand mode, and offers users a tradeoff between performance and GPU memory usage. GPU Baking Profile Note: Since the 2019 release, Unity has provided a system for automatically generating baked environment lighting in scenes that haven’t been baked explicitly. This system was known as the SkyManager. However the SkyManager was causing confusion for users as the automatic behavior wasn’t clear, and was only present in a few specific situations. Additionally, the system caused differences in the behavior of the Editor and built Player, sometimes leading to the environment lighting being unexpectedly missing. © 2024 Unity Technologies55 of 188 | unity.com | Introduction | Lighting in URP | Shaders | More resources: —Lightmapping documentation —Lighting Settings Asset documentation —Lighting Explorer documentation —5 common lightmapping problems and tips to help you fix them Rendering Layers The Rendering Layers feature lets you configure certain lights to affect only specific GameObjects so you can emphasize and draw attention to them in a scene. In the image below, the syringe, a key collectable, appears in a shaded part of the scene. With a Rendering Layer, it becomes visible and helps ensure that the player doesn’t miss picking it up. Highlighting an object using Rendering Layers In Unity 6 the SkyManager is replaced with a new default Lighting Data Asset in the Editor, which is assigned to newly created scenes. The asset contains environment lighting matching the default settings for environment lighting. If you change these settings using the Skybox Mode, you’ll have to manually rebake lighting using the Generate Lighting button in the Lighting Window. © 2024 Unity Technologies56 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Here are the steps for setting up Rendering Layers. 1 . Select the URP Asset. In the Lighting section, click the vertical ellipsis icon (⁝) and select Advanced Properties . 2 . A new setting, Use Rendering Layers, will appear under the Lighting section. 3 . Rename a Rendering Layer via Project Settings > Tags and Layers > Rendering Layers . 4 . The Light Inspector > Rendering section includes a Rendering Layers drop-down. A light can contribute to more than one layer. © 2024 Unity Technologies57 of 188 | unity.com | Introduction | Lighting in URP | Shaders | 5 . With Rendering Layers enabled, create a new light and set up a custom shadow layer. The new light can cast shadows from the scene’s Main Light or from its own frustum . 6 . Lastly, select the object this applies to in the Hierarchy window and then set the Rendering Layer Mask . This can also be dynamically set in code. Renderer renderer = GetComponent(); int layerID = 1; int mask = 1 << layerID; renderer.renderingLayerMask = (uint)mask; © 2024 Unity Technologies58 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Light probes As covered in the light modes section, you can combine baked and dynamic objects using Mixed Lighting Mode. When using Mixed Lighting Mode it’s recommended to also add probes to your scene. With Unity 6 there are two options: light probes and the new Adaptive Probe Volumes (APV). The two options solve the same problem, namely allowing dynamic objects to move through a scene and be affected by global illumination. A probe is simply a point in your scene. At design time the global illumination at this location is calculated. At run time, when rendering a frame, a URP shader that includes lighting calculations uses a blend of the nearest probes for global illumination values. Note: Global illumination (GI) is a system that models how light bounces off surfaces onto other surfaces, to create indirect light, rather than being limited to just the light that hits a surface directly from a direct light source. Light probes Light probes save the light data at a particular position within an environment when you bake the lighting by clicking Generate Lighting via Window > Rendering > Lighting panel. This ensures that the illumination of a dynamic object moving through an environment reflects the lighting levels used by the baked objects. In a dark area it will be dark, and in a lighter area it will be brighter. Sampling is per object so for large objects this can lead to lighting anomalies if an object extends from a dark to a light area. If this is a problem for your scene then consider using APVs, which are sampled per pixel (see the section on APVs later on in the guide). Note: You’ll need to ensure that active URP Asset has Lighting > Light Probe System set to Light Probe Group when using light probes: © 2024 Unity Technologies59 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Below, you can see the robot character inside and outside of the hangar in the FPS Sample: The Inspection. The robot inside and outside of the cave, with lighting level affected by light probes © 2024 Unity Technologies60 of 188 | unity.com | Introduction | Lighting in URP | Shaders | To create light probes, right-click in the Hierarchy window and choose GameObject > Light > Light Probe Group . Creating a new GameObject for the Light Probe Group Initially, there will be a cube of probes, eight in total. To view and edit the positioning of the probes and add additional ones, select the Light Probe Group in the Hierarchy window, and in the Scene view click Tools > Edit Light Probes. Be sure to activate the light probes gizmos. Add or remove light probes and modify their position from the Inspector. © 2024 Unity Technologies61 of 188 | unity.com | Introduction | Lighting in URP | Shaders | The Scene view will now be in an editing mode where only light probes can be selected. Use the Move tool to move them around . Moving a light probe Light probes should be positioned, first, in an area where a dynamic object might move to, and second, where there is a significant change in lighting level. When calculating the lighting level for an object, the engine finds a pyramid of the nearest light probes and uses those to determine an interpolated value for the illumination level. The nearest light probes for the selected crate © 2024 Unity Technologies62 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Positioning probes can be time-consuming, but a code-based approach such as this one can speed up your editing, especially for a large scene or for super quick placement switch to using APVs. Creators often build modular content for their projects in scenes. These scenes are then repositioned at runtime in a “hub” scene. However, when building modular content including light probes, creators were unable to reposition these together with their Scene, because the positions of the probes were read-only. This issue is solved in Unity 6 with a new API that allows the repositioning of light probes at runtime. Further details on how a Mesh Renderer works with light probes and how to adjust the configuration can be found in this documentation . Adaptive Probe Volumes Any technical artist who has carefully positioned light probes for a scene only to find the scene layout has changed will immediately see the benefits of Adaptive Probe Volumes (APVs). For many scenes you can now place all the probes in a matter of seconds. Let’s look at a practical example using the FPS Sample: The Inspection again. This example is found via The Inspection > Scenes > APV-Example 1 . First make sure the active URP Asset has the Light Probe System option set to Adaptive Probe Volumes . 2 . In the Hierarchy window right-click and select GameObject > Light > Adaptive Probe Volume (APV). © 2024 Unity Technologies63 of 188 | unity.com | Introduction | Lighting in URP | Shaders | 3 . Set the Mode to Global and accept the default settings – Subdivisions of 1, 3, 9 and 27 meters . 4 . Bake the volume by pressing Bake Probe Volumes. The current scene is scanned and the probes are placed based on the geometry in the scene. Probes are at their densest where there is the most geometry . 5 . To view the result of the bake open Analysis > Rendering Debugger. Select Probe Volumes and select Display Probes. To view the different resolutions choose Display Bricks . © 2024 Unity Technologies64 of 188 | unity.com | Introduction | Lighting in URP | Shaders | For many scenes that would complete the job, and you can head off for a coffee break. But APVs provide much more fidelity. You can add multiple volumes with different subdivisions to have precise control over the placement and density of probes. Take the oasis environment in the URP 3D Sample as an example. Imagine most of the action in the scene is around the tent and therefore, you want to place most of the probes around it. To achieve this you would: 1 . Open Rendering > Lighting > Adaptive Probe Volumes and change Max Probe Spacing to 81m . 2 . Add an Adaptive Probe Volume set as Global and set the Override Probe Spacing to 27m>81m. 3 . Add an Adaptive Probe Volume set as Local and set the Override Probe Spacing to 1m>9m. Set the Volume to be a bit bigger than the tent. © 2024 Unity Technologies65 of 188 | unity.com | Introduction | Lighting in URP | Shaders | 4 . Bake the Probe Volumes. As you can see from the image below, most probes are around the tent. Probe placement Lighting Scenario asset Another feature of Adaptive Probe Volumes is the ability to switch between indirect lighting data . A Lighting Scenario asset contains the baked lighting data for a scene or Baking Set . You can bake different lighting setups into different Lighting Scenarios, and change which one URP uses at runtime or at design time using the Rendering Debugger . Scenario Blending using the Rendering Debugger © 2024 Unity Technologies66 of 188 | unity.com | Introduction | Lighting in URP | Shaders | For example, you can create one Lighting Scenario for day, and another one for night. At runtime, you can switch or blend between the two. Day/night Lighting Scenarios 1 . To use a Lighting Scenario asset, go to the active URP Asset and enable Lighting > Light Probe Lighting > Lighting Scenarios . © 2024 Unity Technologies67 of 188 | unity.com | Introduction | Lighting in URP | Shaders | 2 . To create a new Lighting Scenario asset so you can store baking results inside, do the following: a . Open the Adaptive Probe Volumes panel in the Lighting window . b . In the Lighting Scenarios section, select the Add (+) button to add a Lighting Scenario asset. 3 . In the Lighting window, under the Adaptive Probe Volume tab, make sure the Probe Positions are set to Don’t Recalculate. This ensures that Unity will only rebake lighting without changing the probe positions, which could otherwise invalidate previously baked scenarios . 4 . To bake into a Lighting Scenario, follow these steps: a . In the Lighting Scenarios section, select a Lighting Scenario to make it active. b . Select Generate Lighting. URP stores the baking results in the active Lighting Scenario. c . Use the dropdown button next to Generate Lighting to only focus on the probes if you’re not using lightmaps. © 2024 Unity Technologies68 of 188 | unity.com | Introduction | Lighting in URP | Shaders | You can set which Lighting Scenario URP uses at runtime using the ProbeReferenceVolume API . Note: If you change the active Lighting Scenarios at runtime, URP changes only the indirect lighting data in the light probes. You might still need to use scripts to move geometry, modify lights or change direct lighting. Fixing issues with Adaptive Probe Volumes Debug Probe Sampling To fix issues such as APV artifacts, use Window > Analysis > Rendering Debugger > Probe Volumes > Debug Probe Sampling to inspect probes and how they are sampled for a given pixel. Visualizing Probe Sampling per pixel © 2024 Unity Technologies69 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Since light probes are added in a grid, placement can sometimes cause rendering errors such as dark areas where it should be light and vice versa. The Editor provides several tools to let a technical artist quickly fix these issues. Light probes inside geometry are called invalid probes. URP marks a probe as invalid when it fires sampling rays to capture surrounding light data, but the rays hit the unlit backfaces inside geometry. The APV system has several tools to fix these issues. The Probe Invalidity Settings available in the Adaptive Probe Volumes panel Virtual Offset tries to make invalid light probes valid, by moving their capture points so they’re outside any colliders. And Dilation detects light probes that remain invalid after Virtual Offset, and gives them data from valid probes nearby. You can check which light probes are invalid using the Rendering Debugger . In the left-side scene in the image above, Virtual Offset isn’t active and dark bands are visible. In the scene on the right side, Virtual Offset is active. © 2024 Unity Technologies70 of 188 | unity.com | Introduction | Lighting in URP | Shaders | In the left-side scene in the image above, Dilation isn’t active and some areas are too dark. In the scene on the right, Dilation is active. Light leaks Light leaks are areas that are too light or dark, often in the corners of a wall or ceiling. A light leak Light leaks often occur when geometry receives light from a light probe that isn’t visible to the geometry, for example due to the light probe being on the other side of a wall. APVs use regular grids of light probes, so light probes might not follow walls or be at the boundary between different lighting areas. Try the following techniques to fix light leaks: —Create thicker walls . —Add an Adaptive Probe Volumes Options override to your scene: © 2024 Unity Technologies71 of 188 | unity.com | Introduction | Lighting in URP | Shaders | —Add a Volume, then an Adaptive Probe Volumes Options override to the Volume. This adjusts the position that GameObjects use to sample the light probes. —Enable Rendering Layers: —In the Lighting window, configure the Rendering Layer Masks in the Adaptive Probe Volumes panel to allow the APV to assign a Rendering Layer Mask to each light probe. —Adjust Baking Set properties: —If adding a Volume doesn’t work, use the Adaptive Probe Volumes panel in the Lighting window to adjust Virtual Offset and Dilation settings. —Use a Probe Adjustment Volume component: —Use this component to make light probes invalid in a small area. This triggers Dilation during baking, and improves the results of Leak Reduction Mode at runtime . Rendering Layers When switching the URP 3D Sample oasis environment from using light probes/lightmaps to using APV only, an issue arises with light leaks, which you can see on the bright roof and wall in the image below. Light leaking in the tent in the oasis environment from the URP 3D Sample © 2024 Unity Technologies72 of 188 | unity.com | Introduction | Lighting in URP | Shaders | This is because some pixels are blending between probes on the inside and outside of the tent. By using Window > Analysis > Rendering Debugger > Probe Volumes > Debug Probe Sampling, you can spot which probes are used when interpolating the value for a pixel. Viewing the interpolated probes for a pixel One option to fix this is to use a Volume to modify how APV is sampled at runtime using the Adaptive Probe Volume Options override . Use the NormalBias and ViewBias settings to adjust the sampling position:: NormalBias pushes it along the normal (away from walls), while ViewBias pushes it towards the camera (keeping it on the same side of the wall as the camera). When you change these properties in the Volume, you can see the updates in real- time in both the lighting results and the Debug Probe Sampling View, where the sampling position and weights are updated accordingly. But a better option is to use Rendering Layers. APV supports Rendering Layers, allowing you to create up to four different masks and restrict sampling to those specific masks for certain objects. This can be useful to prevent interior objects from sampling exterior probes, or vice versa. Activate and add them using Window > Rendering > Lighting > Adaptive Probe Volumes > Rendering Layers . © 2024 Unity Technologies73 of 188 | unity.com | Introduction | Lighting in URP | Shaders | You’ll also need to add a layer via Project Settings > Tags and Layers > Rendering Layers: To implement this, edit the meshes themselves to ensure they are divided between the different areas you want to create. In this project, for example, the meshes are edited to separate the interior and exterior into multiple meshes. Once the meshes are split, assign the correct Rendering Layers to them, and specify which ones APV should use in the Adaptive Probe Volume Tab . You don’t need to assign layers to every object in the tent, only to those susceptible to leaking, like the walls or objects near the walls. When generating lighting, the system will automatically assign layers to the probes during the bake process based on the nearby objects, eliminating the need to manually assign layers per probe. To facilitate this automatic probe assignment, you need to assign layers to larger objects. In the oasis environment tent example, the interior layer is assigned to the walls and ceiling of the tent to ensure that most of the interior probes hit them during baking and are automatically assigned to the interior mask. Probes are assigned to the layer they encounter most frequently. Once this is done, click Generate Lighting and observe that leaking is eliminated for the tent, thanks to the separate interior and exterior masks. © 2024 Unity Technologies74 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Light leaks without and with rendering layers Get more information here about fixing issues with APVs. Streaming APVs APV streaming enables you to use APV-based lighting in large worlds. APV streaming bakes APV data that’s larger than the available CPU or GPU memory, and loads it at runtime when it’s needed. At runtime, as the camera moves, URP loads only APV data from cells within the camera’s view frustum . You can enable and disable streaming for different URP quality levels. Enable streaming with the following steps: 1 . Select Edit > Project Settings > Quality from the main menu . 2 . Select a Quality Level. 3 . Double-click the Render Pipeline Asset to open it in the Inspector. 4 . Expand the Lighting tab. 5 . You can now enable two types of streaming: a . Enable Disk Streaming to stream from disk to CPU memory. b . Enable GPU Streaming to stream from CPU memory to GPU memory. You must enable Enable Disk Streaming first. © 2024 Unity Technologies75 of 188 | unity.com | Introduction | Lighting in URP | Shaders | You can configure streaming settings in the same window. Refer to the URP Asset for more information . Debug streaming The smallest section URP loads and uses is a cell, which is the same size as the largest brick in an APV. You can influence the size of cells in an APV by adjusting the density of light probes Use the Rendering Debugger to view the cells in an APV or debug streaming. APV Streaming Sky occlusion Sky occlusion is the process whereby if a GameObject samples a color from the sky, Unity will dim the color if the light can’t reach the GameObject. Sky occlusion in Unity uses the sky color from the ambient probe, which updates at runtime. This means you can dynamically light GameObjects as the sky color changes. For example, you can change the sky color from light to dark to simulate the effect of a day-night cycle. © 2024 Unity Technologies76 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Note: If you enable sky occlusion, APVs might take longer to bake, and Unity might use more memory at runtime . When you enable sky occlusion, Unity bakes an additional static sky occlusion value into each probe in an APV. The sky occlusion value is the amount of indirect light the probe receives from the sky, including light that bounced off static GamesObjects. The main benefit of using sky occlusion is you can modify the sky lighting at runtime. Let’s look at the series of images to the left to illustrate this: a . The top image shows the problem that occurs when you can’t bake the sky lighting because you need it to change at runtime . In this image only an ambient probe is used with no baking resulting in a poor result. b . In the second to fifth images the ambient probe is used together with sky occlusion. You could also light this image with a regular APV bake, with sky occlusion disabled but then the lighting would not change at runtime . An example of the results of using sky occlusion in a scene. The images are from the Unity Asset Store package Azure\[Sky\] Dynamic Skybox by 7stars. © 2024 Unity Technologies77 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Follow these steps to enable sky occlusion: 1 . Enable the Progressive GPU Lightmapper. Unity doesn’t support sky occlusion if you use Progressive CPU . Go to Window > Rendering > Lighting . 2 . Go to the Scene panel. 3 . Set Lightmapper to Progressive GPU. 4 . Open the Adaptive Probe Volumes panel. 5 . Enable Sky Occlusion. To update the lighting data, you must also bake the APV after you enable or disable sky occlusion. Once the sky occlusion is baked, the scene lighting will respond to the ambient probe updates. In URP, the ambient probe is updated in real-time only when using the Color or Gradient Mode, not the Skybox mode. This means you’ll probably have to manually animate a color to match the animated sky visuals. Note: URP now supports per-vertex quality sampling for probes. This is especially useful to boost performance on lower-end devices. To set the sampling mode use the URP Asset in the Lighting section. Advanced Properties must be active to view the option; press the ellipsis at the top right of the Lighting panel to activate it. With Advanced Properties active, the SH Evaluation Mode dropdown will appear. © 2024 Unity Technologies78 of 188 | unity.com | Introduction | Lighting in URP | Shaders | More Information —Adaptive Probe Volumes documentation . —GDC 2023 session: Efficient and impactful lighting with Adaptive Probe Volumes Light probes vs APVs Light Probe Groups in use in the top image, and APVs in the bottom image; images are from the Unity Asset Store package ArchVizPRO Photostudio URP by ArchVizPro © 2024 Unity Technologies79 of 188 | unity.com | Introduction | Lighting in URP | Shaders | The bottom image (shown above) shows how smoothly a transition from dark to light works with APV. In the top image, the Light Probe Group results in a bright light on the car door because a single interpolated probe is used per object. This is because the door is a separate GameObject to the rest of the door and uses a different probe, resulting in a rendering error. The table below compares the features of light probes and APVs. Light Probe GroupsAdaptive Probe Volumes Time-consuming to place probes and move them if geometry changes Fast to place and easy to update as geometry changes A single interpolated probe is used for lighting objects: —Objects cannot transition well from darkness to light and stand out. —It can cause problems for big objects. Each pixel is individually lit: —This ensures smooth transitions. —Volumetric effects work well using APV because the APV grid is easy to sample at any location. Static objects are usually lit using light maps. Only dynamic objects use probes. No need for lightmaps or lightmap UVs: —Use a single lighting solution for all objects in a scene. —Light large worlds with a constrained memory budget . Probes can be freely placed and moved at runtime . Probes are placed in a grid structure and cannot be moved at run time . Switch GI is not supported.The Lighting Scenario asset allows for switching between different lighting, e.g., from day to night, turning a light on or off, and so on . Reflection probes A ray-tracing tool, such as Maya or Blender, can take the time to accurately calculate the values for each frame pixel of a reflective surface. This process takes far too long for a real- time renderer, which is why shortcuts are often used. Reflections in a real-time renderer use environment maps (pre-rendered cubemaps). Unity supplies a default map using the SkyManager. Having a single map as the source of reflections from all locations in a scene can lead to unconvincing reflections. Take the example of the robot shown in this section. If the metal parts of this character always reflect the sky, then it will look very strange when inside the hangar where the sky is not visible. This is where reflection probes are helpful. © 2024 Unity Technologies80 of 188 | unity.com | Introduction | Lighting in URP | Shaders | A Reflection Probe component is a pre-rendered cubemap placed at a key position in the scene. You can use several reflection probes in a single scene. As a dynamic object moves through the scene, it can select the nearest reflection probe and use that as the basis of its reflections. You can also set up the scene to blend between probes. To add a Reflection Probe component, right-click the Hierarchy window and select Light > Reflection Probe . Adding a Reflection Probe component Then position the probe and adjust its settings. Once the probe is placed correctly and the settings are adjusted, click Bake to generate a cubemap. Settings for the Reflection Probe component © 2024 Unity Technologies81 of 188 | unity.com | Introduction | Lighting in URP | Shaders | The following image shows the two reflection probes used in FPS Sample: The Inspection, one inside the hangar and one outside . Each reflection probe captures an image of its surroundings in a cubemap texture. Reflection probe blending Blending is a great feature of reflection probes. You can enable blending via the Renderer Asset Settings panel. Blending is always on when the Forward+ path is chosen, regardless of the Renderer Asset setting . Blending gradually fades out one probe’s cubemap, while fading in the other as the reflective object passes from one zone to the other. This gradual transition prevents a moving object from suddenly acquiring completely different reflections when crossing the boundary between two reflection probes. Box Projection Normally, the reflection cubemap is assumed to be at an infinite distance from any given object. Different angles of the cubemap will be visible as the object turns, but it’s not possible for the object to move closer or further away from the reflected surroundings. While this works well for outdoor scenes, its limitations show in an indoor scene. The interior walls of a room are clearly not an infinite distance away, and the reflection of a wall should get larger as the object nears it. The Box Projection option enables you to create a reflection cubemap at a finite distance from the probe, allowing objects to show reflections of different sizes according to their distance from the cubemap’s walls. The size of the surrounding cubemap is determined by the probe’s zone of effect, depending on its Box Size property. For example, with a probe that reflects the interior of a room, you should set the size to match the dimensions of the room. © 2024 Unity Technologies82 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Lens flares If you’re coming to URP from using the Built-In Render Pipeline the workflow for creating a lens flare has been updated for URP. The first step in configuring it is to create a Lens Flare (SRP) Data asset. Right-click in the Project window, in a suitable Assets folder, and select Create > Rendering > Lens Flare (SRP) . Creating a Lens Flare (SRP) Data asset Use this asset to configure the shape of your flare by setting Type as Circle, Polygon, or Image assets and adjusting the Tint and Intensity settings. Adding and configuring Lens Flare elements © 2024 Unity Technologies83 of 188 | unity.com | Introduction | Lighting in URP | Shaders | To render a lens flare, choose the light source that will cause the flare and then select Add Component > Rendering > Lens Flare (SRP) . Setting up rendering for a lens flare Select the Lens Flare Data Asset. In the Settings panel for this component, assign the Lens Flare Data asset you created to the Lens Flare Data property . Settings for the Lens Flare (SRP) component If you use lens flares you’ll find that the workflows for adding and adjusting them are very flexible. © 2024 Unity Technologies84 of 188 | unity.com | Introduction | Lighting in URP | Shaders | An example of a lens flare Screen space lens flare Setting up lens flares for multiple lights can be time consuming. Unity 6 introduces a new post-processing technique, the Screen Space Lens Flare override (SSLF). This technique can generate flares from any bright surface, such as a bright specular highlight or an emissive mesh. In contrast, the lens flare (SRP) effect is limited to generating flares specifically from lights. Screen space lens flare uses a post-production technique. Follow these steps to use SSLF: 1 . Because SSLF is a post-processing filter you use a Volume component to apply it. Either add a Volume component to your scene or use the new Default Volume in Unity 6. Settings for the Default Volume are adjusted using Edit > Project Settings > Graphics . © 2024 Unity Technologies85 of 188 | unity.com | Introduction | Lighting in URP | Shaders | 2 . If using the Default Volume look for the Screen Space Lens Flare override in the settings panel. 3 . If using a scene Volume create a Volume Profile so you can add overrides. Then add the override via Post-processing > Screen Space Lens Flare . 4 . Now you can experiment with the settings to achieve the desired style for your scene. Keep in mind that intensity needs to be more than 0. © 2024 Unity Technologies86 of 188 | unity.com | Introduction | Lighting in URP | Shaders | You can combine SSLF with a Lens Flare (SRP) component for more control. Clockwise from top left: No SSLF; flares added; flares, warped flares, and streaks; flares and warped flares © 2024 Unity Technologies87 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Light halos The Draw Halo property is not available for lights in URP, but it’s easily mimicked with a billboard. Another option is to set the alpha transparency of a sphere. The first image below shows the Shader Graph for such a shader, and the second image depicts the result. For more information on using Shader Graph to create this shader, see the Additional tools chapter . Fresnel transparency using Shader Graph A halo effect that uses a sphere with a material using the Shader Graph shader from above © 2024 Unity Technologies88 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Screen Space Ambient Occlusion Since ambient light does not consider geometry by default, high levels of ambient light can lead to unconvincing renders. In the real world, a narrow gap between two objects is likely to be darker than a much wider gap. Ambient occlusion can help deal with this issue in your Unity project. To use it with URP, select the Renderer that the URP Asset is using. Go to Add Renderer Feature and choose Screen Space Ambient Occlusion (SSAO). Choosing SSAO from the Add Renderer Feature Either use the default SSAO settings or adjust as needed: The SSAO settings Let’s look at the SSAO properties. —Method: This property defines the type of noise the SSAO effect uses. —Intensity: This property defines the intensity of the darkening effect. —Radius: When Unity calculates the ambient occlusion value, the SSAO effect takes samples of the normal texture within this radius from the current pixel. A lower Radius value improves performance because the SSAO Renderer Feature samples pixels closer to the source pixel. © 2024 Unity Technologies89 of 188 | unity.com | Introduction | Lighting in URP | Shaders | —Falloff Distance: SSAO does not apply to objects farther than this distance from the Camera. A lower value increases performance in scenes that contain many distant objects. —Direct Lighting Strength: This property defines how visible the effect is in areas exposed to direct lighting. —Quality: For details about these quality settings, check the documentation —Source —Downsample —After Opaque —Blur Quality —Samples A scene with only an ambient occlusion texture demonstrating a varying falloff distance SSAO adds shading to narrow gaps. Let’s look at the three images to the left: The top image has no SSAO. The middle image shows the calculated SSAO, while the bottom image shows the result of SSAO. Notice that the grinder and scales have a stronger edge where they meet the desk . SSAO is a post-processing technique the details of which are covered later in this guide . The haunted room in three versions: At the top, with no SSAO, in the middle, with SSAO applied, and at the bottom, rendered with SSAO © 2024 Unity Technologies90 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Decals A Decal Projector The Decal Projector component provides you with a great way of adding detail to a mesh. Use them for elements such as bullet holes, footsteps, signage, cracks, and more. Because they use a projection framework, they conform to an uneven or curved surface. To use a Decal Projector with URP, you need to locate your Renderer Data asset and add the Decal Renderer Feature . Adding the Decal Renderer Feature For most purposes, you can accept the default settings . Now your scene is ready for decals. Create a decal by right-clicking in the Hierarchy view and selecting Rendering > URP Decal Projector. By default, the projector uses the material Decal, which will project a white square onto a surface. Use the usual tools to position and orientate the projector. Adjust the Width, Height, and Projection Depth in the Inspector. © 2024 Unity Technologies91 of 188 | unity.com | Introduction | Lighting in URP | Shaders | To customize the decal, create a material using the Shader Graph > Decal shader. Then assign it to the URP Decal Projector. Decal Projector component settings The Inspector for a Decal Projector includes three Editing Mode buttons: Scale, Crop, and Pivot/UV, which you can read about here . By default, the projector will affect any surface within its frustum. The Decal Renderer Feature includes the setting Use Rendering Layers. Enable this to facilitate targeting specific meshes. Decal Renderer Feature settings Refer back to the Rendering Layers section to learn about setting up and using this rendering option. Here are the steps to set up a decal: 1 . Use Edit > Project Settings ... > Tags and Layers > Rendering Layers to name a Rendering Layer. 2 . Select the mesh/meshes that you want to receive the projector. In the Inspector, find Mesh Renderer > Additional Settings > Rendering Layer Mask, and add the named Rendering Layer to the mask. © 2024 Unity Technologies92 of 188 | unity.com | Introduction | Lighting in URP | Shaders | Adding Rendering Layer to the Mesh Renderer Rendering Layer Mask 3 . Select the URP Decal Projector and in the Inspector, select the named Rendering Layer for the Rendering Layers property. The image below shows the scene with and without a decal, and with a wall projection limited by using Rendering Layers. From left to right: No decal in the image, the decal hitting all objects, and the decal applied to the wall only using Rendering Layers © 2024 Unity Technologies93 of 188 | unity.com Shaders This section is for users who want to convert an existing custom shader to work with URP and/or want to write a custom shader in code without using Shader Graph. It provides the information required to port both basic and advanced shaders to URP from the Built-In Render Pipeline. The tables included show helpful samples of available HLSL shader functions, macros, and so on. In each case, a link is provided to the relevant include containing many other useful functions. For those who already have experience coding shaders, the includes provide you with a clear idea of what’s available in HLSL to write compact and efficient shaders. After considering the information here, hopefully porting your shaders to URP won’t seem so daunting. Another approach is to use Shader Graph to create versions of your custom shaders. An introduction to Shader Graph is provided in the Additional tools section . © 2024 Unity Technologies94 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | Comparing URP and Built-In Render Pipeline shaders URP shaders use the ShaderLab structure, as seen in the code snippet below. As such, Property, SubShader, Tags, and Pass will all be familiar to shader coders. SubShader { Tags {“RenderPipeline” = “UniversalPipeline” } Pass { HLSLPROGRAM ... ENDHLSL } } The basic structure of a SubShader block The first thing to notice is that a URP shader uses the key-value pair “RenderPipeline” = “UniversalPipeline” in the SubShader tag. A SubShader tag with the name RenderPipeline tells Unity which render pipelines to use this SubShader with. The value of UniversalPipeline indicates that Unity should use this SubShader with URP. Looking at the render pass code, you’ll see the shader code contained between the HLSLPROGRAM / ENDHLSL macros. For URP, the shader code inside those passes is written in HLSL. Unity will use the first SubShader block that is supported on the GPU. If the first SubShader block doesn’t have a “RenderPipeline” = “UniversalPipeline” tag, it won’t run in the URP. Instead, Unity will try to run the next SubShader, if any. If none of the SubShaders are supported, Unity will render the well-known magenta error shader. Custom shaders If you start creating a custom shader by using Create > Shader > Unlit Shader you’ll get a template intended for the Built-In Render Pipeline. It will use code that makes it incompatible with the SRP Batcher. Why does this happen? For most purposes developers will find using Shader Graph a more convenient route for custom shaders for the URP. However, many developers will have shaders that they have created over many years using Unity and will want to know how best to use these with the URP. This section will point you in the right direction using five examples. If you want to view the scene in the Editor it is available via Shaders > Shaders in the examples repo mentioned earlier. For more information checkout the documentation . © 2024 Unity Technologies95 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | Shaders in URP, from the left: Unlit hard coded white; unlit using property to set color; unlit using a texture; simple Lambert lighting using the Main Light - floor; for more information on how to access and use shadows, see the “Shadows” section further down Unlit Let’s unpack the simplest of shaders, a basic unlit example: —Every visible pixel using this shader will be set to the same color. —Properties are empty because the color is hard set. —In Tags the RenderType is set to Opaque and RenderPipeline is set to UniversalPipeline. The #include to use is Core .hlsl which contains a large number of useful functions and macros. —If you’re familiar with Built-In shaders then this serves a similar purpose to UnityCG.cginc. The function TransformObjectToHClip is found in the Core.hlsl include. The purpose of this function is to convert Object Space to Homogenous Space. —The vertex shader vert simply sets the positionHCS value of the Varyings struct that is passed to the fragment shader frag . —HLSL uses semantics for all values passed between shader stages. A semantic is a string attached to a shader input or output that conveys information about the intended use of a parameter. —For example, with Attributes positionOS, the semantic is POSITION . When compiling POSITION in a vertex shader is the position in Object Space for a vertex. © 2024 Unity Technologies96 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | The fragment shader simply returns white resulting in the white capsule on the left in the image above . Shader “CustomURP/Unlit” { Properties { } SubShader { Tags { “RenderType” = “Opaque” “RenderPipeline” = “UniversalPipeline” } Pass { HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl” struct Attributes { float4 positionOS : POSITION; }; struct Varyings { float4 positionHCS : SV\_POSITION; }; Varyings vert(Attributes IN) { Varyings OUT; OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz); return OUT; } half4 frag() : SV\_Target { half4 customColor = half4(1, 1, 1, 1); return customColor; } ENDHLSL } } } © 2024 Unity Technologies97 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | Unlit Color —For the second shader example, unlit color, you’ll need to include a property to set the color.Use an attribute, \[MainColor\]; this is optional but helps inform Unity how to use the property. The name of the property is \_BaseColor, the name in the Inspector is Base Color and the type is a Color . —Shader variables with URP must be compatible with SRP Batcher. In this example compatibility is achieved by declaring them inside two macros CBUFFER\_ START(UnityPerMaterial) and CBUFFER\_END (described as a CBUFFER block). —Now the fragment shader returns the value of \_BaseColor . Shader “CustomURP/UnlitColor” { Properties { \[MainColor\] \_BaseColor(“Base Color”, Color) = (1, 1, 1, 1) } SubShader { Tags { “RenderType” = “Opaque” “RenderPipeline” = “UniversalPipeline” } Pass { HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl” struct Attributes { float4 positionOS : POSITION; }; struct Varyings { float4 positionHCS : SV\_POSITION; }; CBUFFER\_START(UnityPerMaterial) half4 \_BaseColor; CBUFFER\_END Varyings vert(Attributes IN) { Varyings OUT; OUT.positionHCS = TransformObjectToHClip (IN.positionOS.xyz); return OUT; } © 2024 Unity Technologies98 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | half4 frag() : SV\_Target { return \_BaseColor; } ENDHLSL } } } To confirm if the shader is SRP Batcher compatible, select the shader and check the Inspector which will indicate if the shader is SRP Batcher compatible. The shader’s Inspector will indicate if it’s compatible with the SRP Batcher. Unlit Textured The third example in the image uses a texture. —The shader has a property named \_BaseMap, (in the Inspector it’s called Base Map) that uses the attribute \[MainTexture\]and the type 2D . —To use a texture you need interpolated UV values passing from the vertex to the fragment shader. You add a float2, uv, with semantic TEXCOORD0, to both the Attributes and the Varyings structs . —Just before the CBUFFER block, add two macros: TEXTURE2D which takes the property \_BaseMap, and SAMPLER(sampler\_BaseMap) . © 2024 Unity Technologies99 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | —For tiling and offset to work you need a float4 defining that uses the name of the 2D property with the suffix \_ST. This is essential when using the macro TRANSFORM\_TEX, which is used by the vertex shader. The macro takes the vertex UV value, in this example IN.uv, and a 2D property that has been declared using the TEXTURE2D macro . It ensures tiling and offsets are supported. —The fragment shader uses the macro SAMPLE\_TEXTURE2D. This takes three parameters – a Texture2D, a sampler, and the UV value, and returns a color value. This value is returned in the frag method . Shader “CustomURP/UnlitTexture” { Properties { \[MainColor\] \_BaseColor(“Base Color”, Color) = (1, 1, 1, 1) \[MainTexture\] \_BaseMap(“Base Map”, 2D) = “white” {} } SubShader { Tags { “RenderType” = “Opaque” “RenderPipeline” = “UniversalPipeline” } Pass { HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl” struct Attributes { float4 positionOS : POSITION; float2 uv : TEXCOORD0; }; struct Varyings { float4 positionHCS : SV\_POSITION; float2 uv : TEXCOORD0; }; TEXTURE2D(\_BaseMap); SAMPLER(sampler\_BaseMap); CBUFFER\_START(UnityPerMaterial) half4 \_BaseColor; float4 \_BaseMap\_ST; CBUFFER\_END Varyings vert(Attributes IN) { © 2024 Unity Technologies100 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | Varyings OUT; OUT.positionHCS = TransformObjectToHClip (IN.positionOS.xyz); OUT.uv = TRANSFORM\_TEX(IN.uv, \_BaseMap); return OUT; } half4 frag(Varyings IN) : SV\_Target { half4 color = SAMPLE\_TEXTURE2D(\_BaseMap, sampler\_Base Map, IN.uv); return color; } ENDHLSL } } } Lit Simple —To use lighting in a URP shader add the include Lighting .hlsl, which is in the same folder as Core .hlsl . —This example shader uses the main light – the directional light with the greatest intensity. It also uses the Lambert technique, calculating at the vertex level and using the interpolated value in the fragment shader. Therefore, you need to update the Varyings struct adding a half3 lightAmount with semantic TEXCOORD2 . —The vertex shader has a VertexNormalInputs using the function GetVertexNormalInputs. This function takes a normal in object space and converts it to world space. —For a centered object you can use the object space position as a proxy to the normal. VertexNormalInputs is a struct containing a float4 value, normalWS . —You get details of the main light using the function GetMainLight. This returns a Light struct containing, amongst other data, the light color and direction. —Finally, in the vert function, you use the function LightingLambert to return the lighting at the current vertex. The LightingLambert function takes three parameters – light color, light direction, and a world space normal. At this point you have all the necessary data to call the function. It returns a half3 . —The fragment shader uses the macro SAMPLE\_TEXTURE2D. This takes three parameters – a Texture2D, a sampler, and a float2 value, uv. You multiply this by the lightAmount after bouncing this up to a half4 by adding an additional w value set to 1. © 2024 Unity Technologies101 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | Shader “CustomURP/LitSimple” { Properties { \[MainColor\] \_BaseColor(“Base Color”, Color) = (1, 1, 1, 1) \[MainTexture\] \_BaseMap(“Base Map”, 2D) = “white” {} } SubShader { Tags { “RenderType” = “Opaque” “RenderPipeline” = “UniversalPipeline” } Pass { HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl” #include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl” struct Attributes { float4 positionOS : POSITION; float2 uv : TEXCOORD0; }; struct Varyings { float4 positionHCS : SV\_POSITION; float2 uv : TEXCOORD0; half3 lightAmount : TEXCOORD2; }; TEXTURE2D(\_BaseMap); SAMPLER(sampler\_BaseMap); CBUFFER\_START(UnityPerMaterial) half4 \_BaseColor; float4 \_BaseMap\_ST; CBUFFER\_END Varyings vert(Attributes IN) { Varyings OUT; OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz); OUT.uv = TRANSFORM\_TEX(IN.uv, \_BaseMap); VertexNormalInputs positions = GetVertexNormalInputs(IN.positionOS); Light light = GetMainLight(); © 2024 Unity Technologies102 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | OUT.lightAmount = LightingLambert(light.color, light.direction, positions.normalWS.xyz); return OUT; } half4 frag(Varyings IN) : SV\_Target { half4 color = SAMPLE\_TEXTURE2D(\_BaseMap, sampler\_BaseMap, IN.uv) \* half4(IN.lightAmount, 1); return color; } ENDHLSL } } } Shadows —To control the strength of the shadow add a property \_ShadowStrength, which is called Shadow Strength in the Inspector. It is a Float value initialized to 0.5. Add this value to the CBUFFER block. —To use shadows you need the pragma, multi\_compile, adding: \_MAIN\_LIGHT\_ SHADOWS —MAIN\_LIGHT\_SHADOWS\_CASCADE —\_MAIN\_LIGHT\_SHADOWS\_SCREEN —The Varyings struct has a float4 value shadowCoords using the semantic TEXCOORD3 . —In the vert function you use the function GetVertexPositionInputs, to convert object space to world space. Now you can convert the vertex position to a position on the shadow map using the function GetShadowCoord. Save this as the Varyings value, shadowCoords . —In the frag function the shadowAmount uses the function MainLightRealtimeShadow passing the interpolated shadowCoord . Strength, is set to one minus \_ ShadowStrength. The color value is the \_BaseColor modulated by the maximum of strength and shadowAmount . © 2024 Unity Technologies103 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | Shader “CustomURP/SimpleShadows” { Properties { \[MainColor\] \_BaseColor(“Base Color”, Color) = (1, 1, 1, 1) \_ShadowStrength(“Shadow Strength”, Float) = 0.5 } SubShader { Tags { “RenderType” = “AlphaTest” “RenderPipeline” = “UniversalPipeline” } Pass { HLSLPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi\_compile \_ \_MAIN\_LIGHT\_SHADOWS \_MAIN\_LIGHT\_ SHADOWS\_CASCADE \_MAIN\_LIGHT\_SHADOWS\_SCREEN #include “Packages/com.unity.render-pipelines.universal/ ShaderLibrary/Lighting.hlsl” struct Attributes { float4 positionOS : POSITION; }; struct Varyings { float4 positionCS : SV\_POSITION; float4 shadowCoords : TEXCOORD3; }; CBUFFER\_START(UnityPerMaterial) half4 \_BaseColor; float \_ShadowStrength; CBUFFER\_END Varyings vert(Attributes IN) { Varyings OUT; OUT.positionCS = TransformObjectToHClip(IN.positionOS.xyz); VertexPositionInputs positions = GetVertexPositionInputs(IN.positionOS.xyz); // Convert the vertex position to a position on the shadow map float4 shadowCoordinates = GetShadowCoord(positions); OUT.shadowCoords = shadowCoordinates; return OUT; } half4 frag(Varyings IN) : SV\_Target { © 2024 Unity Technologies104 of 188 | unity.com | Lighting in URP | Shaders | Pipeline callbacks | // Get the value from the shadow map at the shadow coordinates half shadowAmount = MainLightRealtimeShadow(IN.shadowCoords); half strength = 1.0 - \_ShadowStrength; half4 color = \_BaseColor \* max(strength, shadowAmount); return color; } ENDHLSL } } } Custom shaders require some work when upgrading to URP. These tables of functions will be helpful. —Transform positions in a custom URP shader —Use the camera in a custom URP shader —Use lighting in a custom URP shader —Use shadows in a custom URP shader See this step-by-step video tutorial that uses a Unity project to show how to convert a custom unlit Built-In shader to URP. See the tutorial Note: A great resource for users planning to write shaders for URP is this tutorial by Cyanilux. © 2024 Unity Technologies105 of 188 | unity.com Pipeline callbacks A great feature of SRPs is that you can add code at just about any stage of the rendering process using a C# script. Scripts can be injected at stages such as: —Rendering shadows —Rendering prepasses —Rendering G-buffer —Rendering deferred lights —Rendering opaques —Rendering Skybox —Rendering transparents —Rendering post-processing You can inject scripts in the rendering process via the Add Renderer Feature option in the Inspector for the Universal Renderer Data Asset. Remember, when using URP, there is a Universal Renderer Data object and a URP Asset. The URP Asset has a Renderer List with at least one Universal Renderer Data object assigned. It is the asset you assign in Project Settings > Graphics > Scriptable Render Pipeline Settings . If you are experimenting with multiple setting assets for different scenes, then attaching the following script to your Main Camera can be useful. Set the Pipeline Asset in the Inspector. Then it will switch the asset when the new scene is loaded. © 2024 Unity Technologies106 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; \[ExecuteAlways\] public class AutoLoadPipelineAsset : MonoBehaviour { public UniversalRenderPipelineAsset pipelineAsset; // Start is called before the first frame update void OnEnable() { if (pipelineAsset) { GraphicsSettings.defaultRenderPipeline = pipelineAsset; QualitySettings.renderPipeline = pipelineAsset; } } } Script to switch Universal Render Pipeline Asset on scene load The next section covers two different types of Renderer Features, one for artists and the other for experienced programmers. Render Objects A common problem in games is losing sight of the player character as they disappear behind environment objects. You could attempt to move the Camera so that the character is always in view, or adjust the environment to be as open as possible. But such options are not always available. A good trick is to show a silhouette of the character when an environment model appears between the character and the Camera, as shown in the image below. Showing a silhouette when an environment model masks the character © 2024 Unity Technologies107 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | Here’s how you can you create this silhouette: 1 . First, you need a material to use when the character is masked. Create a material and set the shader to Universal Render Pipeline > Lit or Unlit (the previous image shows the Lit option). Set the Surface Inputs > Base Map color. In this example, the material is called Character . 2 . To avoid rendering the character more times than necessary, let’s place it on a special layer. Select the character, add a SeeBehind layer to the Layers list and select it for the character . 3 . Select the Renderer Data object used by the URP Asset. Go to the Opaque Layer Mask and exclude the SeeBehind layer. The character will then disappear. 4 . Click Add Renderer Feature and select Render Objects . © 2024 Unity Technologies108 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | 5 . Fill out the settings for this Render Object’s Pass . Give it a name and choose when the render should be triggered. In this example, it’s called AfterRenderingOpaques. Set the Layer Mask to the SeeBehind layer, which was the layer chosen for the character. Expand the Overrides and set the Override Mode to Material. Select the material created in step 1. You’ll want to use Depth when rendering, without having to update the depth buffer by writing to it. Set the Depth Test to Greater so that this Pass only renders when the distance to the rendered pixel is further from the Camera than the distance currently stored in the depth buffer. 6 . At this stage, you only see the silhouette of the character when it’s behind another object. You don’t see the character at all when it’s in full view. To fix this, add another Render Objects feature. This time you don’t need to update the Overrides panel. This Pass will draw the character when not masked by another object. The silhouette trick is a good example of the benefits of using the SRP workflow to facilitate easy injection in the render pipeline. © 2024 Unity Technologies109 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | The render graph system The render graph system allows you to author a custom SRP in a maintainable and modular way. You can use the RenderGraph API to create a render graph, a high-level representation of the custom SRP’s render passes, which explicitly states how the render pipeline uses its resources across render passes. It is not a graphical system. Describing render passes in this way has two benefits: It simplifies render pipeline configuration, and it allows the render graph system to efficiently manage parts of the render pipeline, which can improve runtime performance. To use the render graph system, you need to write your code in a different way to that required for a regular custom SRP. Main principles Before you write render passes with the RenderGraph API, know the following foundational principles: —You no longer handle resources directly; instead, you use render graph system-specific handles. All RenderGraph APIs use these handles to manipulate resources. The resource types a render graph manages are RTHandles, ComputeBuffers, and RendererLists . —Actual resource references are only accessible within the execution code of a render pass. —The framework requires an explicit declaration of render passes. Each render pass must state which resources it reads from and/or writes to . —There is no persistence between each execution of a render graph. This means that the resources you create inside one execution of the render graph don’t carry over to the next execution . —For resources that need persistence (e.g., from one frame to another), you can create them outside of a render graph, like regular resources, and import them. They behave like any other render graph resource in terms of dependency tracking, but the graph does not handle their lifetime. —A render graph mostly uses RTHandles for texture resources. This has a number of implications on how to write shader code and how to set them up. Resource management The render graph system calculates the lifetime of each resource with the high-level representation of the whole frame. This means that when you create a resource via the RenderGraph API, the render graph system does not create the resource at that time. Instead, the API returns a handle that represents the resource, which you then use with all RenderGraph APIs. The render graph only creates the resource just before the first pass that needs to write it. In this case, “creating” does not necessarily mean that the render © 2024 Unity Technologies110 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | graph system allocates resources. Rather, it means that it provides the necessary memory to represent the resource so that it can use the resource during a render pass. In the same manner, it also releases the resource memory after the last pass that needs to read it. This way, the render graph system can reuse memory in the most efficient manner based on what you declare in your passes. If the render graph system does not execute a pass that requires a specific resource, then the system does not allocate the memory for the resource. Render graph execution overview Render graph execution is a three-step process that the render graph system completes, from scratch, every frame. This is because a graph can change dynamically from frame to frame, for example, depending on the actions of the user. —Setup: The first step is to set up all the render passes. This is where you declare all the render passes to execute and the resources each render pass uses. —Compilation: The second step is to compile the graph. During this step, the render graph system culls render passes if no other render pass uses their outputs. This allows for less organized setups because you can reduce specific logic when you set up the graph. This step also calculates the lifetime of resources. This allows the render graph system to create and release resources in an efficient way as well as compute the proper synchronization points when it executes passes on the asynchronous compute pipeline. —Execution: Finally, execute the graph. The render graph system executes all render passes that it did not cull, in declaration order. Before each render pass, the render graph system creates the proper resources and releases them after the render pass if later render passes do not use them. Let’s look at a practical example. The final code for this example is here . © 2024 Unity Technologies111 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | Renderer Feature A Renderer Feature can be used at any stage in URP to affect the final render. This example is of a post-processing technique using a material to process each pixel in the image, creating a tint effect . 1 . Start by finding a suitable folder in the Project Assets folder. Right-click and choose Create > Rendering > URP Renderer Feature . Name it TintFeature . 2 . Double-click the default TintFeature file. This is a C# script containing boilerplate for a Renderer Feature . Learn how to use the render graph system to create a Renderer Feature that is injected into the render pipeline. In this tutorial we create a performant post-processing pass using the latest methods to reduce bandwidth, making it suitable on mobile platforms. Watch the tutorial © 2024 Unity Technologies112 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | Default code for a Renderer Feature 3 . Add these properties to the TintRendererFeature: —RenderPassEvent allows the user to set the injection point in the Inspector. —Material is the one to use when copying. —Requirements are set to Color . —Initialize a ProfilingSampler. You’ll get two ID values allowing access to \_ BlitTexture and \_BlitScaleBias . —Lastly, define a MaterialPropertyBlock . © 2024 Unity Technologies113 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | public RenderPassEvent injectionPoint = RenderPassEvent.AfterRendering; public Material passMaterial; public ScriptableRenderPassInput requirements = ScriptableRenderPassInput.Color; private ProfilingSampler m\_Sampler; private static readonly int m\_BlitScaleBiasID = Shader.PropertyToID(“\_BlitScaleBias”); private static MaterialPropertyBlock s\_SharedPropertyBlock = null; 4 . Rename CustomRenderPass to TintPass and add these properties to the TintPass class. The Material will contain the shader you apply to the current state of the rendered image. The PassData defines the data used when you declare the pass. This is where you set the data that the rendering code can access . private Material m\_Material; private string m\_PassName; private ProfilingSampler m\_Sampler; private class PassData { internal Material material; internal TextureHandle source; } 4. Add a constructor to the TintPass to initialize the material, and set the position of this pass in the render pipeline. public TintPass(Material mat, string name) { m\_PassName = name; m\_Material = mat; m\_Sampler ??= new ProfilingSampler(GetType().Name + “\_” + name); } 5 . Delete the functions ExecutePass, OnCameraSetup, Execute and OnCameraCleanup . © 2024 Unity Technologies114 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | 6 . Add the code below to the RecordRenderGraph function: —Get a resourceData instance, this is used to get a texture descriptor from the active color texture after post-processing. —Change the name and request a new texture. Render Graph will allocate it when needed . —The first blit copies the current color buffer to an intermediary texture so it can be used as an input to the next pass. A pass is created using AddRasterRenderPass . In the first pass you set the source of the passData instance to the activeColorTexture of the resourceData instance . —Set the builder input texture using the method UseTexture and the output using SetRenderAttachment . —Finally, set the render function that the builder uses. It uses a function, ExecuteCopyColorPass, which is created in the steps below. —The second blit uses a material when copying. It is similar to the first blit except it assigns a material to the passData instance and uses the function ExecuteMainPass in the SetRenderFunc assignment . public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) { UniversalResourceData resourceData = frameData.Get(); var colCopyDesc = renderGraph.GetTextureDesc(resourceData.afterPostProcessColor); colCopyDesc.name = “\_TempColorCopy”; TextureHandle copiedColorTexture = renderGraph.CreateTexture(colCopyDesc); using (var builder = renderGraph.AddRasterRenderPass(m\_PassName + “\_CopyPass”, out var passData, m\_Sampler)) { passData.source = resourceData.activeColorTexture; builder.UseTexture(resourceData.activeColorTexture, AccessFlags.Read); builder.SetRenderAttachment(copiedColorTexture, 0, AccessFlags.Write); builder.SetRenderFunc( (PassData data, RasterGraphContext rgContext) => { ExecuteCopyColorPass(rgContext.cmd, data.source); }); } using (var builder = renderGraph.AddRasterRenderPass(m\_PassName + “\_FullScreenPass”, out var passData, m\_Sampler)) { passData.source = resourceData.activeColorTexture; © 2024 Unity Technologies115 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | passData.material = m\_Material; builder.UseTexture(copiedColorTexture, AccessFlags.Read); builder.SetRenderAttachment(resourceData.activeColorTexture, 0, AccessFlags.Write); builder.SetRenderFunc( (PassData data, RasterGraphContext rgContext) => { ExecuteMainPass(rgContext.cmd, data.material, data.source); }); } } 7 . You’ll need to provide the ExecuteCopyColorPass. It simply uses the Blitter method BlitTexture. This function is provided with a variety of parameters. This example uses this version . public static void BlitTexture(CommandBuffer cmd, RTHandle source, Vector4 scaleBias, float mipLevel, bool bilinear) This function should be placed before the RecordRenderGraph function . private static void ExecuteCopyColorPass(RasterCommandBuffer cmd, RTHandle sourceTexture) { Blitter.BlitTexture(cmd, sourceTexture, new Vector4(1, 1, 0, 0), 0.0f, false); } 8 . Now you define the ExecuteMainPass function. You need to set the \_BlitScaleBias uniform for user material with shaders replying on core Blit.hlsl to work . private static void ExecuteMainPass(RasterCommandBuffer cmd, Material material, RTHandle copiedColor) { s\_SharedPropertyBlock.Clear(); s\_SharedPropertyBlock.SetVector(m\_BlitScaleBiasID, new Vector4(1, 1, 0, 0)); cmd.DrawProcedural(Matrix4x4.identity, material, 0, MeshTopology.Triangles, 3, 1, s\_SharedPropertyBlock); } © 2024 Unity Technologies116 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | 9 . Rename CustomRenderPass to TintPass, and change m\_ScriptablePass to m\_pass . 10 . Delete the existing code in the Create method. Create a new TintPass using the custom constructor . Define the renderPassEvent and configure the input. public override void Create() { m\_pass = new TintPass(passMaterial, name); m\_pass.renderPassEvent = injectionPoint; m\_pass.ConfigureInput(requirements); } These next steps complete this example of a Renderer Feature, which is designed to work with a Shader Graph shader. It’s a simple example consisting of a TintColor property, a URP Sample Buffer node using the BlitSource and a Multiply node that modulates the existing BlitSource with the TintColor. Let’s look at the steps below. Tint Shader Graph © 2024 Unity Technologies117 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | 1 . To see the effect in action, select the Renderer Data object and click Add Renderer Feature. TintFeature will appear in the list. 2 . Create a material using the Tint Shader Graph. 3 . Assign the Tint material to the Renderer Feature and set the materials color. Effect of TintFeature: Unprocessed to the left, tinted on the right © 2024 Unity Technologies118 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | Unity 6 comes with a Render Graph Viewer window that you can open via Window > Analysis > Render Graph Viewer. This viewer allows you to study what is happening in the pipeline. The Render Graph Viewer window Notice that Draw Objects Pass, TintRendererFeature\_CopyPass, and TintRendererFeature\_ FullScreen Pass are all separate passes. It would be better to combine them into a single pass. But separate passes are necessary because of the way textures are used. If you click on the pass name, with the Pass List expanded, you’ll see details about the pass. If you click on Draw Objects Pass you’ll notice the message “Failed to merge”; this occurs because the next pass reads data output by this pass as a regular texture. TintRendererFeature\_CopyPass has the same issue. Let’s fix this. You’ll need a new material. The project includes a material in the Resources folder called FrameBufferFetch. This uses the shader of the same name (FrameBufferFetch) which has two passes. You’re interested in the second pass that samples the current active frame buffer. Using this approach you’ll need to adapt the Tint Shader Graph. Instead of using the URP Sample Buffer node, you’re going to use a custom function node. It uses the HLSL in the FrameBufferFetch .hlsl file. Essentially it just uses the macro LOAD\_FRAMEBUFFER\_X\_INPUT. © 2024 Unity Technologies119 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | The Tint Shader Graph using custom node FrameBufferFetch Let’s go back to the TintFeature. In the TintPass you need to add a new private static property. private static Material s\_FrameBufferFetchMaterial; You can assign it in the custom constructor by using the Load method . s\_FrameBufferFetchMaterial ??= UnityEngine.Resources. Load(“FrameBufferFetch”) as Material; In the ExecuteCopyColorPass you need to remove the Blit and use a DrawProcedural instead. Using the identity matrix again, you’ll use the material s\_FrameBufferFetchMaterial for the second pass. The first pass is index 0 and the second pass is index 1. You’re using topology triangles again, so you’ll use indexCount 3 and instanceCount 1. cmd.DrawProcedural(Matrix4x4.identity, s\_FrameBufferFetchMaterial, 1, MeshTopology.Triangles, 3, 1, null); Next you’ll use the RecordRenderGraph method. For the first pass replace UseTexture with SetInputAttachment. This method uses FrameBufferFetch to access the previous pass. builder.SetInputAttachment(resourceData.activeColorTexture, 0)) The same steps are down for the second pass. builder.SetInputAttachment( copiedColorTexture, 0)) © 2024 Unity Technologies120 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | Look at the Render Graph Viewer and refresh if necessary. You will see that the three passes, Draw Objects Pass and the two TintRendererFeature passes, are combined into a single pass, which improves performance. In the Viewer window, the F means the input is accessed via FrameBufferFetch. The three passes are merged FramebufferFetch support is available on mobile platforms targeting Vulkan, Metal, and DirectX 12. On other platforms the engine falls back on texture sampling. Using FrameBufferFetch reduces bandwidth usage, which can improve performance if bandwidth bound, and generally reduce battery usage. For more examples of using the render graph system, download the package samples via the Package Manager. Search for Universal RP, and click the Samples tab. URP RenderGraph Samples are available to import there. Importing the URP RenderGraph Samples via the Universal RP package and Package Manager © 2024 Unity Technologies121 of 188 | unity.com | Shaders | Pipeline callbacks | Post-processing | In this video tutorial, we show you three practical exercises using Renderer Features: How to create a custom post-processing effect, stencil effect, and occlude characters by their environment . © 2024 Unity Technologies122 of 188 | unity.com Post-processing URP uses a Volume framework when adding post-processing effects. Unity 6 includes a Default Volume . It can be found at Project Settings > Graphics > Volume. Any settings applied here affect the entire project but can be overridden by volumes added to a scene. The Default Volume option © 2024 Unity Technologies123 of 188 | unity.com | Pipeline callbacks | Post-processing | Camera Stacking | Another feature that’s new to Unity 6 is a volume for the active URP Asset, which can also be overridden by volumes added to a scene. URP Asset > Volumes When you add volumes to a scene, you can choose which post-processing effects apply to them. A volume can be Global or Local. If Global, the volume affects the Camera everywhere in the scene. With the Mode set to Local, volumes affect the Camera if it’s within the bounds of the Collider. Applying post-processing effects: The top-left image has no effects applied, the top-right image has Bloom applied, the bottom-left has Vignette applied, and the bottom-right has Color Adjustment added. © 2024 Unity Technologies124 of 188 | unity.com | Pipeline callbacks | Post-processing | Camera Stacking | Using the URP post-processing framework 1 . The first step is to make sure your Main Camera has post-processing enabled. Select the Main Camera in the Hierarchy window, go to the Inspector, and expand the Rendering panel. Check the Post Processing option. 2 . Right-click the Hierarchy window and select Create > Volume > Global Volume to create a Global Volume. 3 . With the Global Volume selected in the Hierarchy window, find the Volume panel in the Inspector and create a new Profile by clicking on New . 4 . Start adding post-processing effects. See the table further down that lists available effects. Click Add Override and select Post-processing. In this example, the Bloom effect is chosen . © 2024 Unity Technologies125 of 188 | unity.com | Pipeline callbacks | Post-processing | Camera Stacking | Selecting the Bloom effect 5 . Each effect has a dedicated Settings panel. The image here shows the settings for Bloom. 6 . You can easily add multiple effects (such as Vignette in this example) and configure each one using their Settings panel. © 2024 Unity Technologies126 of 188 | unity.com | Pipeline callbacks | Post-processing | Camera Stacking | Adding a Local Volume component With the Volume framework, you can configure the scene so that as a Camera moves around it, different post-processing profiles are triggered. This is achieved by adding a Local Volume component. Let’s go through the steps for setting this up. 1 . In the Hierarchy window, right-click and choose Create > Volume > Box Volume . Alternatively, choose Sphere Volume if this shape is more suited to your purpose, or Convex Mesh Volume for a tighter control over the shape of the Collider component that defines the volume region. 2 . From the Volume panel in the Inspector, create a new Profile to store this volume data. The panel can also be used to set: a . Blend Distance: This is the furthest distance from the Volume’s Collider that URP starts blending from, and the distance in Collider dimensions where this profile fades in. At the edge of the Collider, the post-processing effects will fade out and the Blend Distance from the edge of the Collider will fully fade in. b . Weight: Weight defines the maximum strength of the post-processing effects. If Weight is set to 1, then the effect will reach full strength. A setting of 0 means there is no effect, while 0.5 sets the strength of the effect at a maximum of 50%. c . Priority: Use this value to determine which Volume URP is used when multiple Volumes have an equal amount of influence on the scene. The higher the number, the higher the Priority. If you are merging Global and Local, then keep Global at the default 0 setting and set the Local Volume(s) to 1 or more. Settings for a Local Volume © 2024 Unity Technologies127 of 188 | unity.com | Pipeline callbacks | Post-processing | Camera Stacking | 4 . Position the Volume and control its dimensions using the Box Collider component, as shown in the image below. Positioning and sizing a Box Volume using the attached Box Collider component Post-processing can weigh heavily on your processor, so carefully consider the effects on low-end hardware and mobile devices. If your project must use it, then test on the target hardware. Some filters are less processor intensive than others. This document outlines the mobile-friendly effects. These are the available post-processing effects in URP. EffectDescription BloomAdds a glow around pixels above a defined brightness level Channel MixerModifies the influence of each input color channel on the overall mix Chromatic Aberration Creates fringes of color along boundaries that separate dark and light parts of the image © 2024 Unity Technologies128 of 188 | unity.com | Pipeline callbacks | Post-processing | Camera Stacking | Color Adjustments Tweaks the overall tone, brightness, and contrast of the final rendered image Color Curves An advanced way to adjust specific ranges in hue, saturation, or luminosity Color LookupMaps the colors of each pixel to a new value using a Lookup Texture Depth of FieldSimulates the focus properties of a camera lens Film GrainSimulates the random optical texture of photographic film Lens Distortion Distorts the final rendered picture to simulate the shape of a real- world camera lens Lift Gamma Gain Uses different trackballs to affect different ranges within the image; adjust the slider under the trackball to offset the color lightness of that range Motion Blur Simulates the blur that occurs in an image when a real-world camera films objects moving faster than the camera’s exposure time Panini Projection Helps you render perspective views in scenes with a very large field of view Screen Space Lens Flare Adds a lens flare that applies to the entire scene not just a single light Shadows Midtones Highlights Separately controls the shadows, midtones, and highlights of the render Split Toning Adds different color tones to the shadows and highlights in your scene TonemappingRemaps the HDR values of an image to a new range of values Vignette Comprises darkening toward the edges of an image compared to the center White Balance Removes unrealistic color casts, so items that would appear white in real life render as white in your final image © 2024 Unity Technologies129 of 188 | unity.com | Pipeline callbacks | Post-processing | Camera Stacking | Motion Blur The top image shows Motion Blur off and the bottom image shows Motion Blur on. The Motion Blur post-processing effect simulates the blur that occurs in an image when a real- world camera films objects moving faster than the camera’s exposure time. This is usually due to rapidly moving objects, or a long exposure time. © 2024 Unity Technologies130 of 188 | unity.com | Pipeline callbacks | Post-processing | Camera Stacking | Using Motion Blur As with all post-processing effects using URP, Motion Blur uses the Volume system, so to enable and modify Motion Blur properties, you must add a Motion Blur override to a Volume in your scene . PropertyDescription Mode Select the motion blur technique. Options: —Camera Only: Use only the motion of the camera to blur the objects. This technique does not use the motion vectors and has better performance than Camera and Objects. —Camera and Objects: Use the motion of both the camera and the GameObjects. GameObject motion vectors overwrite the camera motion vectors . Quality Set the quality of the effect. Lower presets give better performance, but at a lower visual quality. Intensity Set the strength of the motion blur filter to a value from 0 to 1. Higher values give a stronger blur effect, but can cause lower performance, depending on the Clamp parameter. Clamp Set the maximum length that the velocity resulting from camera rotation can have. This limits the blur at high velocity, to avoid excessive performance costs. The value is measured as a fraction of the screen’s full resolution. The value range is 0 to 0.2. The default value is 0.05. Troubleshooting performance issues To decrease the performance impact of Motion Blur, you can: —Reduce the Quality: A lower quality setting gives higher performance but may exhibit more visual artifacts. —Change the Mode property from Camera and Objects to Camera Only: This technique has better performance than Camera and Objects. —Decrease the Clamp: Do this to reduce the maximum velocity that Unity takes into account. Lower values give higher performance. © 2024 Unity Technologies131 of 188 | unity.com | Pipeline callbacks | Post-processing | Camera Stacking | Controlling post-processing with code You can also dynamically adjust your post-processing profile using a C# script. The following code example shows how to adjust the intensity of the Bloom effect. If a Vignette is applied, you can control the vignetting color via code. For example, if the player character takes damage, you can temporarily tint it red. using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; public class PPController : MonoBehaviour { // Start is called before the first frame update void Start() { Volume volume = GetComponent(); Bloom bloom; if (volume.profile.TryGet(out bloom)) { bloom.intensity.value = 0; } } } © 2024 Unity Technologies132 of 188 | unity.com Camera Stacking A common requirement in games is the ability to combine geometry viewed from different cameras in a single render. The image below shows a shelf in the foreground acting as an inventory within the game. Collected items are added to the shelf and can be selected at key points by the player. Notice that it has a different field of view, as well as different lighting and post-processing. This has been set up using the Camera Stacking feature in URP . An example of using Camera Stacking © 2024 Unity Technologies133 of 188 | unity.com | Post-processing | Camera Stacking | The SubmitRenderRequest API | Let’s look at how to set this feature up. 1 . Create a Camera by right-clicking the Hierarchy view and choosing Camera . Remove the audio listener component. 2 . Use the Inspector > Camera Settings panel to set this Camera as Render Type Overlay . 3 . Create a new Layer for the Camera and the GameObjects it renders. 4 . Update the Rendering > Culling Mask for the Camera using the Inspector. 5 . Move the Camera to a suitable place in the scene, then add and position GameObjects by placing them in Layer Overlay . © 2024 Unity Technologies134 of 188 | unity.com | Post-processing | Camera Stacking | The SubmitRenderRequest API | 6 . Make sure the Main Camera does not render Overlay by updating its Rendering > Culling Mask . 7 . In the Stack panel, use the “+” button to add the Overlay Camera . Controlling a stack with code As with post-processing, you can control the stack from code, and add or remove cameras dynamically during runtime. See this code example: using UnityEngine; using UnityEngine.Rendering.Universal; public class StackController : MonoBehaviour { public Camera overlayCamera; // Start is called before the first frame update void Start() { Camera camera = GetComponent(); var cameraData = camera.GetUniversalAdditionalCamera Data(); cameraData.cameraStack.Remove(overlayCamera); } } Post-processing and Camera Stacking, both easily configured using URP, are powerful tools for creating rich, atmospheric effects in your games. © 2024 Unity Technologies135 of 188 | unity.com The SubmitRenderRequest API Sometimes you might want to render your game to a different destination than the user’s screen. The SubmitRenderRequest API is designed with this purpose in mind. Let’s look at a possible use case. Coding a screengrab The script below will render the game to an off-screen RenderTexture when the user presses the onscreen GUI. The script should be attached to the Main Camera. A RenderTexture is created in the Start callback. It is 1920 x 1080 pixels with a bit depth of 24. When the user presses the “Render Request” button, the RenderRequest method is called. In the RenderRequest method, there’s a reference to the Camera component. Create a RenderPipeline.StandardRequest instance, then check whether the current pipeline supports the RenderRequest framework. If it does, you set the RenderTexture that was initialized in the Start callback as the destination of this request object and initialize the render using RenderPipeline.SubmitRenderRequest. This method takes a camera instance and a request object. At this point, Texture2D contains a render of the current scene. To save this to a file, you first need to convert the RenderTexture to a Texture2D instance. The method ToTexture2D shows one possible route. Once you have a Texture2D you can use the EncodeToPNG method of a Texture2D instance to get a byte array. You can then use the System.IO.File method WriteAllBytes to save the byte array to a file. © 2024 Unity Technologies136 of 188 | unity.com | Camera Stacking | The SubmitRenderRequest API | Additional tools compatible with URP | If you use the script directly, the screengrab will be saved in a newly created folder called RenderOutput in the Assets folder of your game. The file name is R\_ followed by a randomly chosen integer between 0 and 100,000. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; \[RequireComponent(typeof(Camera))\] public class StandardRenderRequest : MonoBehaviour { \[SerializeField\] RenderTexture texture2D; private void Start() { texture2D = new RenderTexture(1920, 1080, 24); } // When user clicks on GUI button, // Render Requests are sent with various output textures to render given frame private void OnGUI() { GUILayout.BeginVertical(); if (GUILayout.Button(“Render Request”)) { RenderRequest(); } GUILayout.EndVertical(); } void RenderRequest() { Camera cam = GetComponent(); RenderPipeline.StandardRequest request = new RenderPipeline.StandardRequest(); if (RenderPipeline.SupportsRenderRequest(cam, request)) { // 2D Texture request.destination = texture2D; RenderPipeline.SubmitRenderRequest(cam, request); SaveTexture(ToTexture2D(texture2D)); } } void SaveTexture(Texture2D texture) { © 2024 Unity Technologies137 of 188 | unity.com | Camera Stacking | The SubmitRenderRequest API | Additional tools compatible with URP | byte\[\] bytes = texture.EncodeToPNG(); var dirPath = Application.dataPath + “/RenderOutput”; if (!System.IO.Directory.Exists(dirPath)) { System.IO.Directory.CreateDirectory(dirPath); } System.IO.File.WriteAllBytes(dirPath + “/R\_” + Random.Range(0, 100000) + “.png”, bytes); Debug.Log(bytes.Length / 1024 + “Kb was saved as: “ + dirPath); #if UNITY\_EDITOR UnityEditor.AssetDatabase.Refresh(); #endif } Texture2D ToTexture2D(RenderTexture rTex) { Texture2D tex = new Texture2D(rTex.width, rTex.height, TextureFormat.RGB24, false); RenderTexture.active = rTex; tex.ReadPixels(new Rect(0, 0, rTex.width, rTex.height), 0, 0); tex.Apply(); Destroy(tex);//prevents memory leak return tex; } } © 2024 Unity Technologies138 of 188 | unity.com Additional tools compatible with URP Another benefit of using URP is its compatibility with Unity’s authoring tools that bring complex creation tasks into the reach of technical artists. This chapter provides an introduction to Shader Graph and VFX Graph. Shader Graph Shader Graph brings custom shaders to an artist’s workflow. The Shader Graph tool is included when you start a project using the URP template or import the URP package. © 2024 Unity Technologies139 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | Note: You can find the Shader Graph node examples libraries in the Shader Graph package in the Package Manager window. Read about the new Shader Graph production ready shaders in Unity 6 in this blog post . © 2024 Unity Technologies140 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | Covering Shader Graph warrants a separate guide, but let’s go over some basic yet crucial steps by creating the Light Halo shader from the Lighting chapter . 1 . Right-click in the Project window, find a suitable folder, and choose Create > Shader Graph > URP > Unlit Shader Graph . For this example, choose Unlit. Name the new asset FresnelAlpha. 2 . Double-click the new Shader Graph Asset to launch the Shader Graph editor. If you’re familiar with shaders, then you’ll recognize the Vertex and Fragment nodes. By default, this shader will ensure any model with a material using it that it is correctly placed in the Camera view using the Vertex node, and that each pixel is set to a grey color using the Fragment node. 3 . This shader is going to set the alpha transparency of the object. It therefore needs to apply to the Transparent queue. Change the Graph Inspector > Graph Settings > Surface Type to Transparent. You’ll see that the Fragment node now has an Alpha input as well as Base Color. © 2024 Unity Technologies141 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | 4 . Add properties to the shader. For instance, add Color as a Color, and Power and Strength as Float values. © 2024 Unity Technologies142 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | 5 . Set the default values using Graph Inspector > Node Settings > Default. Set Color to white, Power to 4, and Strength to 1. 6 . Shader Graph functions by joining nodes together. A node will have one or more inputs and an output. To add a node, right-click and choose Create Node in the Search panel at the top, then enter Fre. The results will show a Fresnel Effect node . 7 . A node shows a preview of its effect. Notice that the Fresnel Effect is bright toward the edge. The value is the difference between the View direction and the Normal direction – and for a sphere, this is greatest at the edge. The alpha value should be lowest at the edge. You can flip the result using a One Minus node. To do this, click Create Node and enter One. Select the One Minus node . Now drag from Out(1) on the Fresnel Effect node to In(1) on the One Minus node. The 1 means © 2024 Unity Technologies143 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | that the value type is a single float. If it was 3, then it would be a vector with three components. The nodes should be joined like this: 8 . Let’s look at how to control the size of gradient and the overall transparency. Use a Power node for sizing the gradient. Create a Power node and connect One Minus Out(1) to Power A(1). Drag the Power property to the graph and join it to Power B(1). The graph should now look like this: 9 . Control the overall transparency using a Multiply node . Create it and connect Power Out(1) to Multiply A(1). Drag the Strength property to the graph and join it to Multiply B(1). Then join the Multiply Out(1) to Fragment Alpha(1) and drag the Color(4) property to the graph and join it to Fragment Base Color(3). © 2024 Unity Technologies144 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | Notice here that the property Color comprises a four-component vector, while Base Color is a three-component vector. Shader Graph will map the first three components of Color to the Base Color vector. 10 . Save the asset and create a new material. Assign this shader to the new material, which is located in Shader Graphs/FresnelAlpha . 11 . Now you can apply the material to an object, controlling its visibility at the edges. A shader is applied to a sphere-shaped Point light to provide a halo effect around it. © 2024 Unity Technologies145 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | Fullscreen Shader Graph The Fullscreen Shader Graph allows you to create custom post-processing passes. Right-click in the Project pane and select Create > Shader Graph > URP > Fullscreen Shader Graph . Creating a Fullscreen Shader Graph You can access a pixel’s color for the fragment shader using a URP Sample Buffer node that itself uses the BlitSource option. The graph below shows a simple tint example. The URP Sample Buffer also gives access to world normals and motion vectors that are useful for edge detection and motion trails. A simple tinting example To use this example, you need a way to Blit the result of the current camera render texture using a material that uses this shader. © 2024 Unity Technologies146 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | With the active Renderer Data asset selected, use the Inspector to add a Renderer Feature. Select Full Screen Pass Renderer Feature . Adding the Full Screen Pass Renderer Feature It just remains to update the settings for this Renderer Feature. Set the material you created that uses the Fullscreen Shader Graph, then select the position in the render pipeline. The Renderer Feature settings The image below shows the tint effect on the left. The Fullscreen Shader Graph is a useful way to create custom post-processing effects. The tint effect © 2024 Unity Technologies147 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | Six Way Shader Graph Here are four versions of the same smoke effect under different lighting conditions. From the top left: Directional light and ambient; top right, ambient, probe volumes and directional light; bottom left, ambient and probes, and bottom right, spot light and probes The Six Way Shader Graph is a feature in Unity 6 that lets you dynamically relight smoke effects for more realism, using six-way lightmaps that can be baked in DCC tools like Houdini, Blender, or Embergen. Create a Six Way Shader Graph © 2024 Unity Technologies148 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | To know more about six-way lighting see the blog post Realistic smoke lighting with 6-way lighting in VFX Graph . And see this blog post that goes through the Shader Graph process with an example project and some advanced suggestions. VFX Graph Almost any kind of visual effect is possible in Unity, whether you plan on your characters shooting fireballs from their fingertips or traveling through a wormhole. Visual effects (VFX) in a game enhance the atmosphere, help tell the story, and add details that can truly captivate your players. Unity is pushing the boundaries of real-time graphics with tools such as the VFX Graph. This node-based editor enables technical and VFX artists to design dynamic visual effects – from simple common particle behaviors to complex simulations involving particles, lines, ribbons, trails, meshes, and more. Editing a VFX Graph © 2024 Unity Technologies149 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | Download the Unity e-book To learn more about creating VFX with URP and the VFX Graph download the e-book The definitive guide to creating advanced visual effects in Unity. A smoke effect created using the VFX Graph © 2024 Unity Technologies150 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | 2D Renderer and 2D lights There’s no limit to how innovative today’s 2D games can be. The evolution of hardware, graphics, and game development software makes it possible to create 2D games with real-time lights, high- resolution textures, and an almost unlimited sprite count. If you are working on a 2D game, you’ll be pleased to know there is a dedicated URP 2D Renderer. The simplest way to get started is to use the 2D URP template from the Unity Hub. This template ensures that your project has a URP 2D Renderer assigned via Project Settings > Graphics > Scriptable Render Pipeline Settings. All verified and precompiled 2D packages are installed with the 2D URP template and the default settings optimized for 2D projects. This also ensures that the project loads faster than installing all the packages manually. The 2D URP template in the Unity Hub If you’re upgrading an existing project, then you need to find a suitable folder in your project’s Assets folder. Right-click and select Create > Rendering > URP Asset (with 2D Renderer). Give it a name, and select it using Project Settings > Graphics > Scriptable Render Pipeline Settings. In the Scene view, be sure to select the 2D button when editing. Creating a 2D Renderer and Settings Asset © 2024 Unity Technologies151 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | The appearance of the “classic” magenta color that indicates a rendering error might occur if you’re switching an existing project to the URP 2D Renderer. Updating an existing project with URP 2D Renderer can result in rendering errors in your scene. Fortunately, the Window > Rendering > Render Pipeline Converter has got you covered . Select Built-in to 2D (URP) and click the Material and Material Reference Upgrade panel. Then click Initialize Converters, followed by Convert Assets to be able to deselect some items or Initialize And Convert to handle the process with one click. If you still see magenta-colored sprites, you might need to manually replace the shader in some of your materials. Choose one of the shaders in the following table. 2D shaders available in URP ShaderDescription Sprite-Lit-DefaultUses 2D lights when rendering Sprite-Mask-DefaultWorks with the stencil buffer Sprite-Unlit-DefaultUses only the texture colors when rendering © 2024 Unity Technologies152 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | Converting a Built-In Render Pipeline 2D project to URP 2D 2D lights are available with the URP 2D Renderer. These offer enhanced performance and flexibility. Using the new tools, you can create a more immersive experience and save time preparing different sprite variations by using baked lights to create new gameplay possibilities. If you have migrated an existing project, then you will have no URP 2D lights in your scene. If your sprites use the Sprite-Lit-Default shader, you might be surprised to see a lit render. But with no lights, you get a default Global Light assigned to the scene for an unlit appearance. With no lights in the scene, the render defaults to Unlit. © 2024 Unity Technologies153 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | 2D game development resources from Unity The e-book, 2D game art, animation, and lighting for artists is our biggest, most comprehensive 2D development guide, created for Unity developers and artists who want to make a commercial 2D game. Download the Unity e-book about 2D graphics, tools, and animation 2D sample projects from Unity Gem Hunter Match © 2024 Unity Technologies154 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | Gem Hunter Match shows you how a 2D puzzle/match-3 game can stand out from the competition with eye-catching lighting and visual effects created in URP. Among other techniques, you’ll learn how to prepare and light 2D sprites to add depth, apply a Sprite Custom Lit shader for shimmer, and create glare and ripple effects. —Download Gem Hunter Match —Get an introduction to Gem Hunter Match Happy Harvest Happy Harvest shows developers how to harness the latest capabilities for creating 2D lights, shadows, and special effects with URP. It incorporates best practices any 2D creator can use, including not baking shadows into a sprite, keeping sprites flat, moving shadow and volume information to secondary textures, advanced Tilemap features, and much more . —Download Happy Harvest —Get an introduction to Happy Harvest © 2024 Unity Technologies155 of 188 | unity.com | The SubmitRenderRequest API | Additional tools compatible with URP | More Unity 6 features for URP | UI Toolkit Sample – Dragon Crashers This 2D sample project is a vertical slice of a side scrolling Idle RPG game that showcases how the suite of 2D tools can be combined with artwork to make your vision a reality. All of the content in this demo can be added into your own creative projects. —Download UI Toolkit – Dragon Crashers —Get an introduction to UI Toolkit – Dragon Crashers © 2024 Unity Technologies156 of 188 | unity.com More Unity 6 features for URP This section highlights key features in URP in Unity 6 that can improve performance or fidelity on a wide variety of devices . Spatial-Temporal Post-Processing (STP) The oasis environment from the URP 3D Sample rendered in three different ways: Render scale 1 at left, Render scale 0.25 in the middle, and Render scale 0.25 with STP enabled at right © 2024 Unity Technologies157 of 188 | unity.com | Additional tools compatible with URP | More Unity 6 features for URP | Performance | The number of competing super resolution techniques is growing, and many of them are specific to a single hardware vendor. Along with this, these solutions are not designed for mobile. Spatial-Temporal Post-Processing (STP), is Unity’s super resolution solution which works on all devices, from mobile to console, and delivers high quality results in URP while keeping overhead low. As you can see from the blended image above the results are high-quality. The left third shows the image with no STP and Render Scale 1. The middle third shows no STP and Render Scale 0.25, resulting in a blurry, low-fidelity image. The right third enables STP while keeping the Render Scale at 0.25, rendering 1/16 of the pixels yet with STP up scaling appearing sharp. STP is a spatio-temporal anti-aliasing upscaling solution that should work on any device that supports shader model 5.0. It is designed with mobile in mind, aiming at delivering visual quality that’s comparable to DLSS2, FSR2, or XeSS, with a lower performance cost. Enable STP via the active URP Asset using Quality > Upscaling Filter. Then set the Render Scale. Enabling Spatial-Temporal Post-Processing © 2024 Unity Technologies158 of 188 | unity.com | Additional tools compatible with URP | More Unity 6 features for URP | Performance | High Dynamic Range display output for PC and consoles Rendering Debugger > Lighting > HDR Debug Mode > Gamut View High Dynamic Range (HDR) displays are display devices capable of reproducing images in the higher range of difference in luminance closer to natural lighting conditions. HDR Output allows for better preservation of the contrast and quality of the linear lighting renders and HDR images displayed on these devices. You enable HDR in two places: 1 . The URP Asset 2 . The Camera Inspector: Set Output > HDR Rendering to Use settings from Render Pipeline Asset . © 2024 Unity Technologies159 of 188 | unity.com | Additional tools compatible with URP | More Unity 6 features for URP | Performance | With HDR you can turn on the option to take advantage of better quality image render outputs from URP on HDR displays. As a result, you can present final images with colors and contrasts that mimic natural lighting conditions better on these devices. In addition to the existing desktop and console support that became available in Unity 2022, mobile support is introduced in Unity 6 for the following platforms: —iOS players (iOS 16+, iPadOS 16+) —Android players using Vulkan and GLES (Android 9+, depending on device capabilities) Some common mobile devices that provide HDR display support include iPhone X and newer, Samsung Galaxy S10 and newer, Galaxy Note 10 and newer, and Galaxy Tab S6 and newer. Using a Pipeline State Object Unity 6 introduces a new and powerful Pipeline State Object (PSO) tracing and precooking workflow, unlocking a smoother and stutter-less player experience, when targeting modern platforms. This set of APIs provides a significant upgrade from the “shader warmup” API, previously introduced in older Unity versions. While traditional shader warmup is sufficient for older graphics APIs (e.g. OpenGL, DirectX11), the new PSO workflow allows developers to better utilize modern graphics APIs, such as Vulkan, DirectX12 and Metal. PSO creation and caching When targeting modern graphics APIs, the GPU vendor’s graphics drivers will perform runtime shader compilation (and other rendering state translation) as part of the PSO creation process. As a result, PSO creation is a lengthy process, which may lead to noticeable stutters in the runtime application. This overhead can be exacerbated for more complex projects, which require the application to compile a large amount of PSOs on the fly. You can identify PSO creation stutters in the Unity Profiler, using the GraphicsPipelineImpl markers: © 2024 Unity Technologies160 of 188 | unity.com | Additional tools compatible with URP | More Unity 6 features for URP | Performance | Profiling PSO creation In many cases, the GPU vendor’s graphics drivers will automatically cache any compiled PSO to disk, in order to accelerate PSO creation for subsequent application runs. However, the application may still need to compile PSOs for newly encountered shader variants and materials. Furthermore, OS and driver updates will often invalidate the driver-managed PSO cache . The ideal way to warm PSOs may vary depending on your application and use case. For example, you may choose to synchronously precook PSOs during level transitions and scene loading. This can be done progressively (time-sliced) in order to increase application responsiveness, creating a fixed amount of PSOs per frame. Alternatively, you can choose to asynchronously precook PSOs in the application’s background. This will not block the application, but may temporarily regress CPU performance for the duration of the warm up. © 2024 Unity Technologies161 of 188 | unity.com | Additional tools compatible with URP | More Unity 6 features for URP | Performance | Tracing a new PSO collection You should begin by tracing the PSOs created by the application during rendering: 1 . In a C# script, create a new GraphicsStateCollection. This collection corresponds to your application’s or scene’s PSOs. 2 . To begin tracing PSOs into your collection, call the GraphicsStateCollection.BeginTrace method. Any new graphics pipelines created by the application will be added to the collection. In most cases, you should begin tracing during scene or application start up. 3 . To finalize the tracing process, call the GraphicsStateCollection.EndTrace method . In most cases, you should end tracing during scene or application end. Once tracing is complete, you can save the PSO collection to disk, using GraphicsStateCollection.SaveToFile . For additional control, you can inspect the recorded PSOs and variant data, and modify the collection as needed. GraphicsStateCollection.GetVariants can be used to retrieve all shader variants recorded in a PSO collection. You can then read the graphics states used by each variant via GraphicsStateCollection.GetGraphicsStatesForVariant. Lastly, you can modify the graphics states associated with each variant using AddGraphicsStateForVariant / RemoveGraphicsStatesForVariant . Note: GPU representation of the PSO may vary across platforms. It is highly recommended to perform tracing in the Player, targeting the relevant graphics API, and to maintain separate collections per target. When tracing on a target device using Player Connection, you can send the PSO collection to the Editor and save to disk, via GraphicsStateCollection.SendToEditor. You can also query the platform used when tracing the PSO collection via GraphicsStateCollection.runtimePlatform . Precooking a PSO collection Once tracing is completed, you can request Unity to precook PSO collection, ideally well ahead of drawing time. In most cases, the ideal time to perform warmup is during application or scene loading sequences. You can perform PSO precooking using two warm up methods: —GraphicsStateCollection.WarmUp will schedule the creation of all PSOs in the collection. —GraphicsStateCollection.WarmUpProgressively will schedule the creation of a set number of PSOs in the collection. © 2024 Unity Technologies162 of 188 | unity.com | Additional tools compatible with URP | More Unity 6 features for URP | Performance | Both methods will return a job handle, which can be used to determine whether PSO Warmup is performed synchronously or asynchronously. Once the PSOs are created, the drivers will often cache those to disk. Next time the PSOs are precooked, they could be loaded directly from cache. Platform support The new PSO workflow is available as of Unity 6, for Players targeting Metal, Vulkan, and Direct3D 12. In coming versions, we will also provide compatibility for older graphics APIs such as OpenGLES and Direct3D 11, in the form of an implicit shader-warmup fallback. © 2024 Unity Technologies163 of 188 | unity.com Get tips for using Unity’s profiling tools, programming and code architecture, project configuration and assets, and more. Learn how to enhance your mobile game’s performance. Download Pick up great tips for extensive profiling of your console and PC projects, programming code and architecture, optimizing assets and graphics, UI, physics, and animation optimizations. Download Performance © 2024 Unity Technologies164 of 188 | unity.com | More Unity 6 features for URP | Performance | Optimizing lighting and rendering in URP | Performance is highly dependent on the project you’re working on. Always profile and test your game throughout the development cycle. Open the Profiler via Window > Analysis > Profiler, and follow the suggestions in this chapter. The Profiler window This section looks at seven ways to improve the performance of your games: —Managing your lighting —Light probes —Reflection probes —Camera settings —Pipeline settings —Frame Debugger —Profiler These optimizations are also covered in this tutorial . And see the following video tutorials for profiling tips: Watch itWatch itWatch it © 2024 Unity Technologies165 of 188 | unity.com Optimizing lighting and rendering in URP URP is built with optimized real-time lighting in mind. The URP Forward Renderer supports up to eight real-time lights per object and up to 256 real-time lights per camera for desktop games, plus 32 real-time lights per camera for mobile and untethered hardware. URP also allows for configurable per-object Light settings inside the Pipeline Asset for refined control over lighting. As explained in the Lighting chapter, baked lighting is one of the best ways to improve the performance of your scene. Real-time lighting can be expensive, whereas baking lights can help you gain back performance, assuming the lights in your scene are static. The baked lighting textures are batched into a single draw call, without needing to be continuously calculated. This is especially useful if your scene uses multiple lights. Another great reason to bake your lighting is that it allows you to render bounced or indirect lighting in your scene and improve the visual quality of the render. Global Illumination is similarly covered in the Lighting section. This process simulates rays of light bouncing around the environment and illuminating other nearby objects with the bounced light. The figure below shows three lighting setups for the same scene: with no baked light data, with baked lighting, and with post-processing applied. © 2024 Unity Technologies166 of 188 | unity.com | Performance | Optimizing lighting and rendering in URP | The URP 3D Sample | From left to right: no lighting data, baked lighting, post-processing added When baked, areas of shadow in a scene receive the bounced light and are illuminated. It can be subtle, but this technique spreads the light around a scene more realistically and improves its overall appearance. In the previous image, you can see that the specular highlights on the ground are lost when baking. Baked lights only contain diffuse lighting. Whenever possible, compute the direct lighting contribution from real-time, and have Global Illumination come from Image Based Lighting (IBL)/shadow maps/Probes. The effect of light baking on shadows: before baking on the left, and after baking on the right Use the lowest possible Lightmap Resolution and Lightmap Size when baking your lights; Go to Window > Rendering > Lighting > Scene. This helps to lower the texture memory requirement. Setting the Lightmap Resolution and Max Lightmap Size © 2024 Unity Technologies167 of 188 | unity.com | Performance | Optimizing lighting and rendering in URP | The URP 3D Sample | Light probes As explained in the Lighting section, light probes sample the lighting data in the scene during baking and allow the bounced light information to be used by dynamic objects as they move or change. This helps them blend into and feel more natural in the baked lighting environment. (The Unity engine now has an alternative to Light Probes, see the APV section). Light probes add naturalism to a render without increasing the processing time for a rendered frame. This makes them suitable for all hardware, even low-end mobile devices. The effect of using light probes when rendering a dynamic object: with light probe on the left, and without on the right Reflection probes You can also use reflection probes to optimize your scene. Reflection probes project parts of the environment onto nearby geometry to create more realistic reflections. By default, Unity uses the Skybox as the reflection map. But by using one or more reflection probes, the reflections will match their surroundings more closely. The effect of using reflection probes on smooth surfaces: with reflection probes on the left and without on the right The size of the cubemap generated when baking the reflection probes depends on how close the camera gets to a reflective object. Always make sure to use the smallest map size that suits your needs to optimize your scene. © 2024 Unity Technologies168 of 188 | unity.com | Performance | Optimizing lighting and rendering in URP | The URP 3D Sample | Adjusting the size of the reflection probe cubemap Camera settings The URP enables you to disable unwanted renderer processes on your cameras for performance optimization. This is useful if you’re targeting both high- and low-end devices in your project. Disabling expensive processes, such as post-processing, shadow rendering, or depth texture can reduce visual fidelity but improve performance on low-end devices. Occlusion culling Another great way to optimize your Camera is with occlusion culling. By default, the Camera in Unity will always draw everything in the Camera’s frustum, including geometry that might be hidden behind walls or other objects. There’s no point in drawing geometry that the player can’t see, and that takes up precious milliseconds. This is where occlusion culling comes in. Occlusion culling is best suited to a scene where significant numbers of objects might be masked when another item appears between them and the Camera. A cellular corridor maze- type game is an ideal candidate for using occlusion culling, as seen in the images below. Frustum culling in the image on left, and occlusion culling in the image on right © 2024 Unity Technologies169 of 188 | unity.com | Performance | Optimizing lighting and rendering in URP | The URP 3D Sample | By baking occlusion data, Unity ignores the parts of your scene that are blocked. Reducing the geometry being drawn per frame provides a significant performance boost. To enable occlusion culling in your scene, mark any geometry as either Occluder Static or Occludee Static. Occluders are medium to large objects that can occlude objects marked as Occludees. To be an Occulder, an object must be opaque, have a Terrain or Mesh Renderer component, and not move at runtime. Occludees can be any object with a Renderer component, including small and transparent objects that similarly do not move at runtime. You set the static properties using the usual drop-down. Settings for an object included in occlusion data Open Window > Rendering > Occlusion Culling, and select the Bake tab. In the bottom-right corner of the Inspector, press Bake. Unity generates occlusion data, saving the data as an asset in your project and linking the asset to the current scene. Occlusion culling Bake tab You can see occlusion culling in action using the Visualization tab. Select the Camera in the scene and use the Occlusion Culling pop-up window in the Scene view to configure the visualization. The pop-up might be hidden behind the small Camera view window. Right-click the double-line icon and choose Collapse if this is the case. Move the pop-up, then restore the Camera view using right-click expand. © 2024 Unity Technologies170 of 188 | unity.com | Performance | Optimizing lighting and rendering in URP | The URP 3D Sample | Visualization tab and Occlusion Culling pop-up As you move the Camera, you should see objects popping on and off. The effect of occlusion culling off in the left image, and on in the right image If you are using GPU Resident Drawer in Unity 6, then you can use GPU Occlusion Culling. Pipeline settings While the effects of changing the settings for the URP Asset and using different Quality tiers were previously covered, here are some additional tips for experimenting with Quality tiers to get the best results for your project: —Reduce Shadow Resolution and distance for performance gains. —Disable features that your project does not require, such as depth texture and opaque texture . —Enable the SRP Batcher to use the new batching method. The SRP Batcher will automatically batch together meshes that use the same shader variant, thereby reducing draw calls. If you have numerous dynamic objects in your scene, this can be a useful way to gain performance. If the SRP Batcher checkbox is not visible, then click the three vertical dots icon (⁝) and select Show Additional Properties . © 2024 Unity Technologies171 of 188 | unity.com | Performance | Optimizing lighting and rendering in URP | The URP 3D Sample | Enabling additional properties for the URP Asset Inspector Frame Debugger Use the Frame Debugger to gain a better understanding of what’s happening during rendering. To view additional information in the Frame Debugger window, adjust the Debug Level using the URP Asset. As with the SRP Batcher checkbox, this is only visible in the Inspector with Show Additional Properties enabled. Setting the Debug Level Adjusting the Debug Level can affect performance. Always turn it off when the Frame Debugger is not in use . The Frame Debugger shows a list of all the draw calls made before rendering the final image and can help you pinpoint why certain frames are taking a long time to render. It can also identify why your scene’s draw call count is so high. Open the Frame Debugger by going to Window > Analysis > Frame Debugger . When your game is playing, select the Enable button. This will pause the game and let you examine the draw calls. Frame Debugger detail © 2024 Unity Technologies172 of 188 | unity.com | Performance | Optimizing lighting and rendering in URP | The URP 3D Sample | Clicking a stage in the render pipeline (left pane) will show a preview of this stage in Game view . The Frame Debugger shows every step of the rendering process in the Game View – in this case, the SSAO generation step. Unity Profiler Like the Frame Debugger, the Profiler is a great way to determine how long it takes to complete a frame cycle in your project. It provides an overview of rendering, memory, and scripting. You can identify scripts that take a long time to complete, helping you to pinpoint potential bottlenecks in your code. Open the Profiler via Window > Analysis > Profiler . When in Play Mode, the window provides an overview of the overall performance of your game. You can also pause the live view and use the Hierarchy Mode to get a breakdown of the time taken to complete a single frame. The Profiler will show you each call Unity has made during the frame. For an even more detailed analysis, use the low-level native plug-in Profiler API. You can use this Profiler API to extend the Profiler, and profile the performance of native plug-in code, or to prepare profiling data to send to third-party profiling tools such as Razor for Sony Playstation, PIX for Microsoft (Windows and Xbox), as well as Chrome Tracing, ETW, ITT, VTune, or Telemetry. © 2024 Unity Technologies173 of 188 | unity.com | Performance | Optimizing lighting and rendering in URP | The URP 3D Sample | The Profiler window using the low-level native plug-in Profiler API Here’s an example of using the low-level native plug-in Profiler API: #include #include static IUnityProfiler\* s\_UnityProfiler = NULL; static const UnityProfilerMarkerDesc\* s\_MyPluginMarker = NULL; static bool s\_IsDevelopmentBuild = false; static void MyPluginWorkMethod() { if (s\_IsDevelopmentBuild) s\_UnityProfiler->BeginSample(s\_MyPluginMarker); // Code I want to see in Unity Profiler as “MyPluginMethod”. // ... if (s\_IsDevelopmentBuild) s\_UnityProfiler->EndSample(s\_MyPluginMarker); } extern “C” void UNITY\_INTERFACE\_EXPORT UNITY\_INTERFACE\_API UnityPluginLoad(IUnityInterfaces\* unityInterfaces) { s\_UnityProfiler = unityInterfaces->Get(); if (s\_UnityProfiler == NULL) return; s\_IsDevelopmentBuild = s\_UnityProfiler->IsAvailable() != 0; © 2024 Unity Technologies174 of 188 | unity.com | Performance | Optimizing lighting and rendering in URP | The URP 3D Sample | s\_UnityProfiler->CreateMarker(&s\_MyPluginMarker, “MyPluginMethod”, kUnityProfilerCategoryOther, kUnityProfilerMarkerFlagDefault, 0); } extern “C” void UNITY\_INTERFACE\_EXPORT UNITY\_INTERFACE\_API UnityPluginUnload() { s\_UnityProfiler = NULL; } Additional resources If you’re interested in building advanced profiling skills in Unity, start by downloading the free e-book Ultimate guide to profiling Unity games. This guide brings together advanced advice and knowledge on how to profile an application in Unity, manage its memory, and optimize its power consumption from start to finish. A couple of other useful resources include Measuring Performance by Catlike Coding, and Unity Draw Call Batching by The Gamedev Guru. © 2024 Unity Technologies175 of 188 | unity.com The URP 3D sample The URP 3D sample is available in the Unity Hub and features four environments, each with its own art style, rendering path, and scene complexity, to represent the variety of 3D projects built with URP. The URP 3D sample replaces the construction scene that will be familiar to many developers who have been using URP for a few years. The new sample project contains several mini- scenes that illustrate the capabilities of URP. Let’s go through each scene. © 2024 Unity Technologies176 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion The garden This scene illustrates how you can efficiently scale your content with URP to suit multiple platforms, from mobile and console to high-end gaming desktops. It features stylized PBR rendering, customizable vegetation, and rendering numerous lights with the new Forward+ renderer that surpasses previous light count limits. The oasis This is a photorealistic scene with highly detailed textures, VFX Graph effects, SpeedTree, and a custom water solution. It targets devices that support compute shaders. © 2024 Unity Technologies177 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion The cockpit This scene uses custom lighting code with Shader Graph. It’s designed for untethered VR devices such as Meta Quest 2. The terminal This scene is the link between the other sample scenes, providing a transition effect to move from one scene to the next . © 2024 Unity Technologies178 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion Moving between the scenes The sample project uses a transition effect to move between scenes. The transition effect uses an off-screen render target to render the incoming scene before the transition is complete. The incoming scene is then rendered to large monitors placed in the outgoing scene using a custom shader created with Shader Graph, and the full-screen swap is handled using a stencil via a Render Objects Renderer Feature. Screen Stencil Renderer Feature © 2024 Unity Technologies179 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion To see the effect in action, walk toward the pedestal until the Unity logo is displayed, then keep the logo in the center of the screen. This will trigger the transition. All scene assets are loaded at load time, but only a single scene is enabled. The cameras used at runtime, when starting from The Terminal scene, are the same as those found in the FPS\_ Controller GameObject. MainCamera renders the active scene, and ScreenCamera the scene displayed on the monitors. FPS\_Controller for The Terminal Scene During a transition, the incoming scene camera is rendered to the render target. This creates a potential problem since URP only supports one main directional light. A script called Scripts > SceneManagement > SceneTransitionManager.cs runs before rendering, enabling the active scene’s main light and disabling the other to keep to this restriction. Take a look at the script below. In the OnBeginCameraRendering method, we first check whether we’re rendering the main camera . If isMainCamera is true, then the ToggleMainLight calls activate the main directional light for the currentScene and disable the main directional light for the screenScene, the incoming scene. However, if isMainCamera is false, then the reverse will be the case. The same script handles switching the fog, reflection, and skybox to suit the scene being rendered by adjusting the settings of the RenderSettings object. © 2024 Unity Technologies180 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion The transition between the incoming and outgoing scenes is handled using a Render Objects Renderer Feature. By writing a value to the stencil buffer, this can be checked in a subsequent pass. If the pixel being rendered has a certain stencil value, then you keep what is already in the color buffer; otherwise, you can freely overwrite it. Renderer Features are a highly flexible way to build a final render using combinations of passes. © 2024 Unity Technologies181 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion Renderer Features for the Mobile Foward+ Renderer To match camera positions during a transition, the project has a SceneMetaData script for each scene that stores an offset Transform, while a SceneTransitionManager script handles the incoming and outgoing scenes during the transition. The Update method tracks the progress of the transition. When ElapsedTimeInTransition is greater than m\_TransitionTime, then TriggerTeleport is called, which in turn calls the Teleport method. This repositions and orientates the player to create a seamless switch from the outgoing scene to the incoming scene . © 2024 Unity Technologies182 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion ScreenTransitionManager.cs Update method Scalability URP supports a wide range of hardware, and there are several ways the new sample scenes illustrate how to work with different devices. You’ll notice the different options in Project Settings > Quality . Quality levels © 2024 Unity Technologies183 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion Each option uses a different Render Pipeline Asset. As explained in the Quality section, URP handles Quality using a combination of this panel together with the settings of the Render Pipeline Asset. Standalone VR headsets present a significant challenge when displaying real-time 3D graphics. They have high-resolution screens, and each eye must be handled separately, resulting in each rendered frame requiring twice the work. Additionally, with a minimum target fps of 72, you’ll need a lot of pixels per second. A workaround for this challenge is to use stylized lighting. The Cockpit scene below uses a Toon Shaded lighting model. The cockpit environment from the URP 3D sample © 2024 Unity Technologies184 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion The custom lighting is handled using Shader Graph, with minimal coding. As usual for a Toon shader, it combines the normal vector and the Main light direction using a dot product to determine the lighting level. It then uses a ramp to set staged levels of light rather than smoothly changing values. The lighting model used in The Cockpit scene also uses Baked Global Illumination in the calculation and does some edge detection to add a subtle outline effect. Custom lighting is handled using Shader Graph. See The Universal Render Pipeline cookbook for a tutorial about creating Toon Shaders. © 2024 Unity Technologies185 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion Running the sample project on a mobile device A common problem for game developers is getting a game running smoothly on a mobile device. The new sample project includes a Mobile Forward+ URP Asset in the Settings folder. Remember that the URP Asset is the principal way you can adjust quality settings. Forward+ relies on the CPU to do significant culling operations per frame and so is not necessarily the best option for a low-end mobile device. The best option for such devices is the Deferred renderer, which is used by a URP asset in the sample project. The image to the left shows the settings for the Mobile Forward+ asset. The Mobile Forward+ URP Asset © 2024 Unity Technologies186 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion The Renderer List has two Universal Renderer Data assets: one for the active scene, Mobile Forward+\_Renderer, and the other for rendering the screen scene, Forward+\_Screen\_ Renderer. The Depth Texture is enabled. Note that Additional Lights do not cast shadows. This is a very expensive option and for mobile devices can often be mimicked using light cookies. The Garden scene in particular has lots of lights, and many use cookies to give a suggestion of shadows. Notice the lighting on the rocks in the bottom left of the image below with and without cookies . Garden environment point light with and without cookies Here are three top tips when targeting mobile platforms. —Reduce the number of pixels rendered. Most modern mobiles have a high DPI or dots- per-inch count. For most games, a DPI of 96 is sufficient. If Screen.DPI is 300, for example, then a render scale of 96/300 on a 2400 x 1200 screen would mean rendering 768 x 384 pixels, almost a tenth of the pixels, which is a massive performance boost. You can set the render scale in the URP Asset or adjust the value at runtime. —Notice that the Mobile Forward+\_Renderer asset has a Decal renderer feature with its Technique option set to Automatic. This will switch to Screen Space on GPUs with hidden surface removal. This provides a performance boost by avoiding a depth prepass, which is a waste of resources on these devices. —Use Deferred rendering on devices where the CPU overhead of Forward+ is too expensive. —To enable more aggressive render pass merging by the Render Graph system, consider the following: —If not needed in your project, disable the Depth Texture and Opaque Texture setting in the URP Asset settings . —If using Opaque Texture, set Opaque Downsampling to “None”. Downsampling the opaque texture will introduce a resolution change in the URP intermediate textures, preventing pass merging. © 2024 Unity Technologies187 of 188 | unity.com | Optimizing lighting and rendering in URP | The URP 3D Sample | Conclusion —If using Depth Texture, set Depth Texture Mode to “After Transparents”. Doing so will avoid injecting a CopyDepth pass between the main render passes (Opaque, Sky, Transparents), and allow Render Graph to successfully merge those passes. A careful study of these four scenes alongside their URP Asset settings and documentation will help you learn how to use the techniques on display in your own projects. © 2024 Unity Technologies188 of 188 | unity.com Conclusion For developers and artists looking to switch to URP, be sure to check out the full Unity Documentation, as well as Unity Learn, the Unity Blog, and Discussions . The Unity Product Board provides an overview of current URP features being developed, in addition to what’s coming up next. You can even add your own feature requests. Good luck with your game development. unity .com
---
# Unknown
Mobile gaming trends What you need to know for 2022 and beyond © 2021 Unity Technologies 2 Making mobile games is hard, but finding success is even harder. It means knowing how best to realize your game vision, how to ensure a quality experience across a fragmented device ecosystem, how to stand out from innumerable other mobile games, and how to do so within a growing team. Even if you already know how to make a great game, you might still be missing some answers on how to build a successful game business. Understanding the latest trends in mobile gaming will help you make the right decisions about what types of games to develop, the audiences you’ll target, and which marketing and monetization strategies to adopt. The market for mobile games keeps getting bigger – but the development challenges you’ll face there are growing more complex. This guide integrates the Unity team’s years of experience helping our customers launch thousands of successful games. Introduction Paired with the latest market research, it provides a snapshot of the mobile gaming market. We created it to give you a sense of the latest trends, the opportunities these changes create, and how Unity solutions can help you meet development challenges and expand your user base. We’ll dig into the top six trends that are shaping the mobile game market, now and into the future: • Mobile is the fastest-growing segment in gaming. • Players expect AAA-quality experiences on all their devices. • Players want a more connected experience. • Studios are refining genre strategies and monetization practices. • Crossplay and spin-offs are driving stronger branding. • Privacy concerns are complicating monetization tactics. Learn about the biggest changes in mobile game development – and how you can use them to help your game win. Low Poly Gems And Rocks by A3D – Unity Asset Store © 2021 Unity Technologies 3 Mobile is the fastest- growing segment in gaming. 1 POLYGON Dungeon Realms by Synty Studios – Unity Asset Store © 2021 Unity Technologies 4 Mobile devices have enabled 24/7 gaming anywhere, and gamification now permeates every online experience, from marketing and sales to education. The rate of growth for mobile gaming is constrained only by the distribution of devices and bandwidth, with people of all demographics playing mobile games at surprisingly similar rates.1 If you’re developing mobile games, rest assured you’ll be busy in a growing market for some time. And regardless of how many developers are scrambling for a piece of the pie, there will be plenty of dessert for all. Nearly four billion smartphones will be in people’s pockets in 2021,2 and nearly 1.8B people have downloaded games for these smartphones.3 By 2025, it’s estimated that this number will have exploded to more than 2.2B.4 Critical factors that studios should account for in their strategic planning include: • Worldwide, mobile gaming (smartphones and tablets) will generate revenues of over $85B in 2021 and over $100B in 2023, with an overall compound annual growth rate (CAGR) of more than 18%.5 • The majority of gaming revenues will be from mobile by 2023.6 • Asia/Pacific is, by far, the largest and fastest- growing regional market.7 TREND 1 1 AdColony Report 2 Bankmycell/Statista 3 Statista 4 Statista 5 Newzoo 2020 Global Games Market Report The opportunity: Reach a larger audience by developing for all devices The practical takeaway from these statistics is that regardless of which demographic, genre, or geographical region you’re targeting, cross- platform development is obvious low-hanging fruit. What can make cross-platform development challenging is not so much the different code bases, but rather the need to optimize your game for an ever-increasing number of different devices, all with different hardware capabilities. While there’ve been fewer than 10 primary iPhone models, there are thousands of different Android- based smartphones with varying performance capabilities. Sunny Land by Ansimuz – Unity Asset Store © 2021 Unity Technologies 5 How Unity can help 71% of the top 1,000 mobile games in 2020 were created using the Unity platform. The studios that developed them chose Unity for its robust ecosystem of tools to help make beautiful games that run well across any mobile platform, as well as services to help developers grow, engage, and monetize their player base to run a sustainable business. of the top 1,000 mobile games in 2020 were created using the Unity platform Low Poly Nature Gradient Pack by JustCreate – Unity Asset Store 5 Newzoo 2020 Global Games Market Report 6 Gaming Market – Growth, Trends, Forecasts (2020–2025) 7 Newzoo 2020 Global Games Market Report 8 Unity Shareholder Letter, February 2021 © 2021 Unity Technologies 6 Players expect AAA- quality experiences on all their devices. 2 CBU: Apocalypse Edition by ReversedInt – Unity Asset Store © 2021 Unity Technologies 7 As smartphone capabilities have expanded, mobile games’ production values have more than kept pace. Better mobile chipsets provide greater performance with less battery drain, powering higher screen resolutions on display sizes that now average 6 inches. And 5G’s unprecedented speed (20x 4G) and low latency (20 ms to 5 ms)9 is making PC-quality experiences sparkle on smartphones and AR headsets. As a result, players increasingly expect mobile gaming experiences to rival consoles and PCs. They want to play sophisticated, graphically intense games on any device. They want to find their friends, get matched with competitors, and they want to do so on any device, in any corner of the world. They want transparent content updates frequently, if not constantly. These expectations generate enormous pressure for developers to keep up with production standards while trying to innovate unique gameplay. A polished, high-quality experience will keep players more engaged and playing longer, but hardware-intensive games with rich worlds or complex gameplay require specialized low-level programming knowledge to work efficiently on different chipsets. TREND 2 Mountain Environment - Dynamic Nature by NatureManufacture – Unity Asset Store 9 Ericsson, “5G and gaming: 5 things to know about 5G if you’re a gamer” © 2021 Unity Technologies 8 The opportunity: Drive engagement through better art and gameplay The same technological advancements that have raised player expectations so dramatically have also boosted developers’ ability to meet them. It can be tempting to think that there’s no longer need to worry about cross-device performance or porting to different platforms. Success means being strategic when considering a game’s art style and design, then choosing development tools that will make it easier to deploy to many platforms and meet the highest player expectations. The right tools enable you to apply even more creativity to your art and gameplay. Increasingly, the “how” of your game is taken care of, relatively transparently, by your development platform, giving you greater freedom to focus on creative factors. 2D Hand Painted – Grassland Tileset by Daniel Thomas – Unity Asset Store © 2021 Unity Technologies 9 How Unity can help A number of Unity capabilities simplify creating and distributing best-in-class gaming experiences across diverse mobile devices: • The Unity Universal Render Pipeline provides open and flexible rendering to deliver maximum-quality graphics for high-end devices, as well as optimized performance for lower-end devices – all customizable using C# scripts. • The C# Jobs System lets you take advantage of multithreaded code for enhanced game performance. The Unity Burst Compiler is a new LLVM-based backend compiler technology you can harness to run your games faster than ever. • Unity offers numerous optimization tools to help you make sure your game will run well across different mobile devices, including the Memory Profiler, Frame Debugger, Profiler, Roslyn analyzer, and the Device Simulator. • To easily deploy game content, Unity Cloud Content Delivery is an end-to-end service for pushing live game updates with a content delivery network (CDN) and back-end-as-a- service (BAAS) built for game development. Fantasy Forest Environment by Triforge Assets – Unity Asset Store © 2021 Unity Technologies 10 Players want a more connected experience. 3 3D Game Kit by Unity Technologies – Made with Unity © 2021 Unity Technologies 11 10 Entertainment Software Association The social element is an important way to drive a successful and long-lasting gaming experience. The ability to play with others and enjoy full communications without network lags can make any game more immersive and sticky. The proliferation of 5G promises to bring the kinds of immersive and highly-competitive multiplayer game experiences that people expect from consoles and PCs to mobile gaming as well. And because a 5G network enables more CPU- intensive processing in the cloud rather than on devices, even lower-end units will be able to join in. According to a recent industry report, more than half of frequent gamers play online with others an average of seven hours a week, and 55% reported using social gaming to stay connected during the pandemic. The growth of sophistication in multiplayer gaming has been a continuous trend for years, and multiplayer games can be astonishingly complex social environments. For some, it’s all about winning and accomplishing goals. For others, simple human interaction is ample reward. But everyone is there because engaging multiplayer environments have turned gaming into an interpersonal playground. TREND 3 Low Poly Animated People by polyperfect – Unity Asset Store © 2021 Unity Technologies 12 The opportunity: Stay focused on gameplay Developing a multiplayer game isn’t easy. Nailing server orchestration with highly volatile bandwidth requirements and complex technology stacks is a tremendous challenge. Offering a seamless, reliable environment with good matchmaking – balancing player skills, attributes, and network considerations – is also key. Outsourcing backend tasks like server orchestration and matchmaking frees up your team to create thoughtful and tailored approaches to the multiplayer experience. For example, creative developers can optimize asynchronous turn-based, real-time PVE/PVP gameplay, integrate share-to-social features, and find new ways to use ghost objects and characters. You can focus on designing delightful gameplay rather than troubleshooting esoteric networking issues. Low Poly Animated People by polyperfect – Unity Asset Store © 2021 Unity Technologies 13 How Unity can help Unity provides key game-server hosting solutions for operating and optimizing multiplayer games: • Unity Multiplay is a resilient multicloud server hosting and matchmaking platform that removes the complexity of creating and operating backend technology and infrastructure. This lets you concentrate on gameplay while Multiplay keeps game launches and live operations running smoothly. • Implementing voice communications is another complex backend challenge, and Vivox is Unity’s answer. Vivox is a hosted, managed solution for voice and text chat that helps your game to consistently deliver the best player experience possible. You can integrate Vivox for free for up to 5,000 concurrent users. Low Poly Animated People by polyperfect – Unity Asset Store © 2021 Unity Technologies 14 Studios are refining genre strategies and monetization practices. 4 Puzzle Match Kit by Gamevanilla – Unity Asset Store © 2021 Unity Technologies 15 Here’s the headline: Gamers are playing longer and spending more than ever. For mobile gaming from 2016 through 2020, 75th-percentile player retention at day 30 grew by 7.1%. In- app purchase conversion rates rose by 7.7%. Mobile gamers spent more money, more often. And since 2020, mobile ad revenues are up more than 8%. But the competition is also thicker than ever, and the studios that profit most from these improvements are the ones that plan and take a disciplined approach to monitoring genre trends and monetization techniques. The hyper-casual genre continues to dominate download charts, and it’s likely to continue growing to a nearly $100B market by 2022. 11 Traditionally, hyper-casual gaming is defined by puzzle, word, and card games, plus a seemingly infinite number of variants that are lightweight and instantly understood for easy play. However, many define hyper- casual as any game that’s free to play (F2P) and that makes most of its money from ad monetization rather than conversions. TREND 4 The top downloads in 2020 are a good clue to how genres are likely to shake out in the next few years: mostly hyper-casual, but with clear inroads from mid-cores, especially as bandwidth and device performance improve. The #1 and #3 top downloads were battle royales, while the rest were hyper-casual, with the exception of a virtual pet app. Any F2P game requires skillful follow-up for monetization, and in-app purchases (IAP) and rewarded ads will continue to be the primary approaches. Ads will also generate consistent monetization results for nearly all mobile gaming categories. Rewarded ads, content that gamers have chosen to watch in exchange for a game advantage of some sort, have the highest effective cost per thousand impressions (eCPM) and return significantly better click-through rates (CTRs) than banner ads. Puzzle Match Kit by Gamevanilla – Unity Asset Store 11 Adjust’s Hyper Casual Gaming Report, 2020 © 2021 Unity Technologies 16 The opportunity: Take advantage of monetization tools The gaming industry is like any other: Developing robust plans and aligning your tech stack accordingly are the keys to success. Gaming is a mature industry, relatively speaking, and you can leverage a wealth of best practices to keep your key performance indicators on the uptick. These best practices include using AI-enabled analytics that provide player insights quickly, so your team can more deeply understand trends and rapidly iterate and update. Optimizing ad placements and in-app purchase configurations, preferably with a tool tightly integrated into the development platform, is another essential best practice for driving revenue. Low Poly Cars by Broken Vector – Unity Asset Store City 3D Low Poly 6 Industrial by NOT\_BROWN\_PUBLISHER – Unity Asset Store How Unity can help Unity provides integrated and in-depth analytics capabilities for key insights into gameplay, monetization, and more to help you hone your games’ player experience. Unity Analytics are a built-in feature of the Editor, while deltaDNA is an add-on Unity product that provides deeper insights with greater customizability. Unity’s monetization suite gives you comprehensive tools and analytics to grow your game and drive the most revenue. Working within the Unity Editor, you can integrate powerful Unity Ads mediation. You can also quickly set up IAP with a single, unified API that saves you significant engineering hours. © 2021 Unity Technologies 17 Crossplay and spin-offs are driving stronger branding. 5 Asian Style Village by Larolei Lowpoly – Unity Asset Store © 2021 Unity Technologies 18 The combination of advancing technologies and more sophisticated development platforms has made it much easier to port the same game – even midcore and hardcore – to any device, from the most powerful PCs to hybrid consoles. This crossplay trend is essential to growing multiplayer gaming. Players may have different preferences in devices, but at least they can play the same game and be part of a wider user base. Of course, any game played with a gamepad, multiple buttons, and a 75” screen won’t generate the same experience on a smartphone. That’s why studios are increasingly creating spin-offs, using their primary brand IP from console or PC versions in variations optimized for mobile experiences. This trend started years ago with games like Pokémon GO and Hitman GO, but it’s picked up with games such as Monster Park AR and Crash Bandicoot: On the Run! Spin-offs are brand-enhancing smartphone companion apps for console and PC games. These appeal to more dedicated players, ranging from character configurators to chat programs. For example, Destiny 2 has spawned ten companion apps from the Bungie studio that let players track stats, inspect weapons, manage items, and even research opponents. TREND 5 The opportunity: Expand your user base Developing for diverse platforms with crossplay adds costs, but this can throw open the doors for a substantially larger user base. It involves greater risks, but these can be justified by the potential rewards. Plus, extending an existing IP to mobile devices increases the overall brand value and enables greater cross-promotion for other games and companion apps. Another benefit of porting games to mobile is simply extending your mindshare. In addition to whatever game time a user is racking up on a console or PC, they’re spending additional time with the brand’s mobile spinoffs or companion apps when they’re out and about. SurrounDead – Survival Game Assets by Justwo – Unity Asset Store © 2021 Unity Technologies 19 How Unity can help Unity is renowned for its ability to quickly port game versions to any mobile platform, from Nintendo Switch to iOS and the myriad configurations of Android smartphones. • Get details about how Unity helps you quickly port projects between platforms. • The Unity Distribution Portal (UDP) is a one- stop-shop for mobile game developers to tap into the Android ecosystem beyond the Play Store – particularly within heavily regulated Chinese app stores. • Unity MARS enables the integration of augmented reality experiences into games, so your team can create AR spin-off experiences like Pokémon GO and Angry Birds: FPS. The Lost Lands by Beffio – Unity Asset Store © 2021 Unity Technologies 20 Privacy concerns are complicating monetization tactics. 6 City Adventure by Beffio – Unity Asset Store © 2021 Unity Technologies 21 Ad tracking has been a fundamental part of the mobile advertising ecosystem for some time, and historically Apple enabled this with a device identifier called the Identifier for Advertisers (IDFA). In 2020, Apple announced that in iOS 14, the rules and system for how IDFA could be shared and used by publishers and advertisers would change. Users would now be required to actively opt in to ad tracking, creating a major shift in how monetization and user acquisition strategies were executed. As of the spring of 2021, these new rules have started to be enforced, and the long-term impact on revenue and growth is yet to be seen. While this was not the first time a major shakeup has happened in the mobile advertising ecosystem, it was a significant one since studios rely on expected ad performance to drive their business and growth plans. For more details on ad tracking changes, our iOS 14 resource center includes content such as our app-readiness guide that breaks down the frameworks and processes that now govern how IDFA is shared and used. TREND 6 Utopia (HDRP )by KitBash3D – Unity Asset Store © 2021 Unity Technologies 22 The opportunity: Keep on keepin’ on Regardless of how predictably ads will perform, studios always benefit from knowing as much about their monetization strategies as possible. But no monetization strategy will mean much without a great game that engages and retains users by performing optimally across diverse platforms. The best strategy is to remain focused on monitoring your monetization strategies’ performance, pivoting when necessary, and diversifying the distribution of your games across multiple stores to ensure a healthy revenue as you figure out what works best in this new environment. Lich by Meshtint Studio – Unity Asset Store Dungeon Cute Series by Meshtint Studio – Unity Asset Store © 2021 Unity Technologies 23 How Unity can help Since its founding, Unity has responded quickly to technological and cultural shifts in the gaming industry, particularly in the areas of security and privacy. • Unity has comprehensive iOS 14 Resources to help studios work with the tracking changes in iOS 14. Resources include features and content to help publishers and advertisers transition smoothly to a privacy- focused ad environment. • Unity Ads helps studios comply with privacy- related regulations in such standards as the Childrens’ Online Privacy and Protection Act (COPPA) and the GDPR. Dungeon Builder Starter Set by BitGem – Unity Asset Store © 2021 Unity Technologies 24 Set your studio up for long-term success on mobile Understanding technology and market trends can inform how you assess your current practices and look for better ways to run your studio. How do we sum up these insights and trends? Mobile gaming is growing faster than ever, technologies are improving device performance across the board, and the Unity development platform is providing the most complete solution for making beautiful, highly performant mobile games. Most importantly, players are having more fun than ever. We hope this e-book has left you inspired. Unity is the preferred platform of successful mobile game developers, powering more than 70% of the top 1,000 mobile games worldwide. Our team is always here to help you take on the right tools and services to make sure you’re supported throughout your game development journey, from concept to commercialization. If you’re ready to get going, you can gain access to Unity Pro today or talk to one of our experts to learn how we can help you take your game to the next level. Talk to our experts The Lost Temple by TRIPOLYGON, Inc. – Unity Asset Store Get Unity Pro © 2021 Unity Technologies 25
---
# Unknown
UNITY FOR GAMESE-BOOK 2020 LTS EDITION UNITY GAMEDEV FIELD GUIDE Contents First steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 Key feature overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Visual Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Component-based architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Prefab workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Unity Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Render pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Multiplatform development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Packages and extensibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Worldbuilding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Active community . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Unity Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Sample projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Learn projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Unity Asset Store assets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Unity GitHub repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Editor interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 The main windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Editor Play mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Version control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Plastic SCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Perforce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Project organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 The Project view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Folder structure and naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 Scenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 The Hierarchy window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 General tips for scenes and hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Naming standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 GameObjects and components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 The Inspector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 The Transform component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Tips for working with transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Built-in components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 Custom components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 Prefabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Prefab usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Creating Prefab assets and instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Prefab mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Prefab Variants and Nested Prefabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 Package Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37 Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Custom components and Monobehaviours . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Initializing objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Monobehaviour lifecycle and structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 More scripting tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 Common classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 Memory management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44 Value versus reference types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44 Garbage collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44 Multithreading: C# Job System and Burst compiler . . . . . . . . . . . . . . . . . . . . .46 Scripting backends in Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Editor scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Odin Inspector and Serializer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48 Integrated development environment (IDE) support . . . . . . . . . . . . . . . . . . . . .50 Script templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50 Building and publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 Device Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Input System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Built-in Input class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 User interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56 Unity GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56 Immediate Mode GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57 Profiling and optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58 Unity Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58 Memory Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 Profile Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Debugging and playtesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 Debugging gameplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 Additional debugging tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62 Unity Test Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 Particle effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Physics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 3D physics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 2D physics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69 Render pipelines and graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 3D pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 2D pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 Worldbuilding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 ProBuilder and Polybrush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 Terrain tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 2D Tilemap and Sprite Shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 Unity Asset Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76 Importing an asset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76 Become a publisher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76 Learning resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Unity Learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Unity Blog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Professional training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Next steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 5 of 79 | unity .com© 2021 Unity Technologies First steps Shipping a game on a new platform and engine may seem like a journey of a thousand miles, but, like all worthwhile pursuits, it begins with a single step . And like every other journey, it helps to have a map to guide you . As an industry veteran, you’ve faced the kinds of obstacles we’ll cover here before: design and planning, development and testing, then launch and maintenance . We’ve created this guide for experienced developers making the transition to Unity or returning from a long hiatus . Whether you’re a solo indie developer or an established game studio, the Unity core platform can do the heavy lifting for you . This lets you focus on what you do best: building immersive and interactive real-time experiences . Unity is better than ever, and we’d like to invite you to discover a host of new features, designed to make game development faster, more efficient, and more fun than ever before . Over 1 .5 million monthly active creators choose Unity to make amazing games and publish them to a wide range of devices . Our highly extensible platform brings artists, designers, and developers together . This guide will help you jump-start your familiarity with Unity’s rich feature set and intuitive workflows . Whether you’re developing an action RPG for PC and console or the latest physics puzzler for mobile, Unity is here to help . 6 of 79 | unity .com© 2021 Unity Technologies Key feature overview Visual Editor The Unity Editor includes a comprehensive interface that will help you iterate rapidly through cycles of prototyping and testing to quickly transform your proof of concept into a working build . Component-based architecture Everything in a Unity Scene is a GameObject . You’ll combine these with components, modular and reusable parts that you can mix and match for functionality . A camera in Unity is simply a GameObject with a Camera Component . A light is a GameObject with a Light Component . This component- based system is simple, flexible, and highly scalable . C# Unity uses C#, an industry standard and one of the most widely used programming languages in the world . C# is an object-oriented and type-safe language with an extensive community and enterprise support . If you’re already familiar with C-based languages or Java, you’ll have a low learning curve to get started in Unity scripting . If the Unity Editor doesn’t fit your project requirements out-of-the-box, you can write your own scripted components that will work seamlessly with their built-in counterparts . Unity includes support for a number of IDEs, including Visual Studio, VS Code, and JetBrains Rider . See Integrated development environment (IDE) support below for details . Prefab workflow Don’t build something twice if you can build it once and reuse it – this will save you time and get better runtime performance . With Prefabs, you can set up GameObjects as assets in a library, then instance them at runtime . This workflow includes Variants, where you can “subclass” and override part of your “template” Prefab . You can also build complex Nested Prefabs out of smaller Prefabs, enabling you to propagate changes into your scene as soon as you make them . Unity Hub The Unity Hub is a front-end application that helps you install Unity and manage your engine versions, licensing, and projects . It ties your projects to specific versions of Unity, so that an engine update won’t impede production or create local conflicts . The Hub also gives you easy access to valuable training materials and a vibrant Unity community . 7 of 79 | unity .com© 2021 Unity Technologies The HDRP is designed to create high-fidelity visuals . Render pipelines In Unity, you can choose between different prebuilt render pipelines to help you draw your graphics onscreen . The Universal Render Pipeline (URP) focuses on wide platform compatibility and maximum performance, while the High Definition Render Pipeline (HDRP) adds high-fidelity visuals for PCs and consoles . You can also create shaders either with HLSL or using the node- based Shader Graph tool, which doesn’t require coding . Multiplatform development Unity is guided by the ideal of helping developers build once, deploy anywhere . Our goal is to help your work reach the widest possible audience as you evolve your IP with the industry . We’ve enabled thousands of studios to achieve this, including Unknown Worlds, creators of the Subnautica series . After developing your content in the Editor, you can deploy it across over 20 platforms, including PlayStation, Xbox, Nintendo Switch, PC, and mobile . With Unity, you can even create builds for WebGL and XR platforms like Oculus Quest . Packages and extensibility The Package Manager offers the ability to discover and update features independently of the Editor . Unity maintains a content repository of packages that extend its core functionality . Keep your project lean and only import what you need . Packages allow you to explore Preview or Experimental features before they become production-ready, so you can plan ahead for new technologies that you might want to incorporate into future projects . 8 of 79 | unity .com© 2021 Unity Technologies Worldbuilding Unity includes a suite of tools for constructing environments . ProBuilder, a unique hybrid of 3D modeling and level-design tools, lets you model simple geometry and whitebox your game levels . If you’re working in 2D, Unity includes tools such as SpriteShape and Tilemap to help you layout your 2D environments . Environment artists can generate natural landscapes using terrains, which you can paint using the included brush tools . Active community Unity has a broad reach and active user base . Developers used the Unity core platform to create and monetize over half of the top 1,000 mobile games on the Apple App Store and Google Play . With over a million active monthly creators, you can tap into an extensive knowledge base about development issues on the official Unity forums and other online communities . ProBuilder helps you prototype your levels . 9 of 79 | unity .com© 2021 Unity Technologies Unity Hub Begin exploring Unity with the Unity Hub, a tool that manages all of your Unity projects and installations . Use the Hub to install one or more versions of the Unity Editor, create new projects, or open existing ones . To get the Hub, visit the Unity website and select Download Hub . Use the interface to install Unity, and activate an individual or team license before launching the engine . Unity Plus and Pro licenses also require a valid serial number . The Unity Hub helps you manage projects and installed versions . In the Unity Hub, navigate through the Projects, Installs, Learn, and Community screens . The Installs screen lets you selectively install various versions of Unity, including both pre-releases and official releases . Add only the modules you need for fine- level control of platform-specific support or dev tools . 10 of 79 | unity .com© 2021 Unity Technologies We recommend that you use the current Long Term Support, or LTS, version of Unity for production work . Unity 2020 .3 LTS provides: —a stable foundation for projects that are about to ship —biweekly updates until mid-2022 with monthly updates thereafter until March 2023 (two years after the initial release date) Updates to LTS versions only cover usability fixes aimed at improving the engine’s stability . Active projects appear in the Projects screen . Associate a specific target platform with each project and lock development to a specific Unity version to prevent an update from introducing work-stopping bugs . The Learn screen gives you access to numerous educational resources and tutorials to help you get acclimated to the engine . Follow the Community screen for other commonly available resources, such as the Unity Blog and Unite Now talks . If you have a technical question, you can ask a question or read a discussion on the Answers or Forums pages . The Community screen links to several online resources . 11 of 79 | unity .com© 2021 Unity Technologies Sample projects Probably the best way to familiarize yourself with the development environment is to peek into a vertical slice of a game prototype . You can find these in a number of places to kickstart your exploration of Unity . Learn projects The Learn screen on the Hub gives you access to a variety of tutorials and learning resources, including numerous example projects that you can download and import directly into Unity . Explore starter projects on the Learn screen . Think of the Creator Kits and Microgames as mini-templates with documented code samples . While many of these projects are “code-free” for beginners, more experienced developers can dissect their scripts and assets to learn . Exploring and modifying Learn projects is a good way to get familiar with common production techniques in Unity development . Unity gives you the option to save the modified project, then find it in Unity Hub to continue working on it later . The original, unmodified projects will remain available from the Learn screen . 12 of 79 | unity .com© 2021 Unity Technologies Unity Asset Store assets The Unity Asset Store is a community marketplace filled with free and premium assets . You can find third-party tools and art assets for almost anything your team doesn’t want to develop in-house . Assets range from production and prototyping art to Editor extensions and scripting tools to whole projects nearly ready to ship . Many asset packages include extensive templates that illustrate essential aspects of Unity development and can save days or weeks of dev work . The Asset Store includes tens of thousands of assets, with more packages added each day . These packages from Unity offer a good entry point if you’re just getting started: —The Starter Assets package includes free and lightweight first- and third-person character base controllers that demonstrate how to control the camera using the Cinemachine and the Input System packages . Starter Assets – First Person Controller and Starter Assets – Third Person Controller show you how to prototype a character controller on a playground scene . Starter Assets – Third Person Controller 13 of 79 | unity .com© 2021 Unity Technologies —The Lost Crypt – 2D Sample Project is a 2D side-scrolling demo that showcases Unity’s 2D-specific tools working in unison . The project walks you through features such as 2D Animation, 2D Sprite Shape, 2D Tilemaps, 2D Lights, Shader Graph for 2D, Secondary Textures, and Volume post- processing . See this blog post to learn more about the project . If you’re new to Unity, also check out the Asset Store team’s top picks for new users . Unity GitHub repository The Unity Technologies GitHub repository has a number of projects demonstrating specific features or topics . Not all projects run with the latest version of Unity, but you can use the Hub to install the matching Unity version . Many repositories are still Experimental or in Preview, so you can evaluate new features for your next production . Lost Crypt demonstrates Unity’s 2D features . 14 of 79 | unity .com© 2021 Unity Technologies Here are few notable projects: —Boss Room is a small-scale cooperative game sample project built on top of the new experimental netcode library and the MLAPI . It’s designed to help you explore the concepts and patterns behind a multiplayer game flow with access to one dungeon level with four character classes to work on gameplay battling stylized enemies and the eponymous boss . Boss Room —The Unity Machine Learning Agents Toolkit (ML-Agents) is an open source project that enables games and simulations to train intelligent agents for 2D, 3D, and VR/AR applications . Researchers can also use the provided Python API to apply reinforcement learning, imitation learning, or other machine learning methods to in-game actors . ML-Agents toolkit 15 of 79 | unity .com© 2021 Unity Technologies Editor interface Unity has a flexible, modular user interface . If you’ve never used the Unity Editor before, refer to this quick overview of the main windows . Aspect ratioRendering statistics The Editor’s main windows The main windows Game view: This previews the game’s main camera and how a player will interact with the game . This includes the Rendering statistics window in the top right, which shows graphics and audio stats to help you optimize your application . In the top left, Aspect Ratio allows you to preview multiple screen resolutions or define your own target resolution . 16 of 79 | unity .com© 2021 Unity Technologies Scene view: This view shows the objects that comprise each scene . You will primarily work here in the Editor to place models, lights, physics bodies, and so on . Use the control bar to change the Draw Mode, useful for troubleshooting and quick diagnostics . The Gizmos menu controls icons and overlay graphics for certain GameObjects . Draw Mode and Gizmos menus Scene visibility and pickability overrides Scene view Hierarchy window: This window shows objects in the currently active scene and how they relate to one another in parent-child relationships . The Hierarchy includes a useful interface to override the visibility and pickability of objects in the Scene view . This UI does not affect the Game view . It’s designed to help you navigate complex scenes with a large number of GameObjects . 17 of 79 | unity .com© 2021 Unity Technologies Editor Play mode The Game view is rendered from the Camera(s) in your application . It represents your final, published application . In Play mode, any changes you make are temporary, and they are reset when you exit Play mode . The Editor UI darkens to remind you that any changes you make in Play mode are not saved . Remember that you will need to use one or more Cameras to control what the player sees at runtime . For more information, see the Camera component page . Inspector window: This shows properties and settings for the selected objects and offers powerful options for customization . Focused Inspectors can help you open an Inspector window for any specific GameObject, asset, or component to simplify comparison of gameplay variables or scene objects . Inspectors allow you to adjust them at runtime without needing to go into the code each time, making playtesting more interactive and facilitating a faster workflow . Project window: Unity stores all assets that create the game (Prefabs, Textures, models, animations, scripts) as files on disk . The Project window gives you easy access to these files – think of this as a content directory or library where your in- game resources reside . Use the Search bar to locate specific assets or types . Toolbar: This appears at the top of the Editor, locked to the Application window’s title bar . Use the buttons here to control the Editor Play mode and see how your published application plays . The Hand tool pans the scene, while the Move/Rotate/Scale/Rect Transform/Transform tools allow you to manipulate GameObjects . The Console window: The Console window is used for debugging and shows errors, warnings, and other messages generated by Unity (see the Debug class) . Everything written to the Console window, either by Unity or by your own code, also outputs to a Log File . For more specific information about each part of the interface, Unity Learn also includes an overview . 18 of 79 | unity .com© 2021 Unity Technologies PlasticSCM makes version control simple with its streamlined interface . Version control Whether it’s Plastic, Git, Perforce, or another system, Unity allows you to choose which source control solution works best for you and your team . Unity has in-Editor integrations with two industry-leading version control systems, Perforce and Plastic SCM . You must have either a Perforce or Plastic SCM server set up for your project to use with Unity . Before using source control, navigate to Project Settings > Editor . Confirm that Asset Serialization Mode is set to Force Text . Unity uses serialization to load and save Assets to and from disk . Force Text means that Unity will store the scene files in a text-based format to help with version control merges . Version Control in the Project Settings Navigate to Project Settings > Editor > Version Control . According to your version control system, switch to the mode Plastic SCM, Perforce, or Visible Meta Files (for external source control like Git) . 19 of 79 | unity .com© 2021 Unity Technologies Plastic SCM Plastic SCM is our recommended version control system for Unity game development . This solution offers the best experience when dealing with large binary files (>500 MB), so your art assets can have the same level of management as you would expect for your code . Plastic SCM allows you to work knowing that both your art and programming assets are securely backed up . In addition, the intuitive visual interface simplifies branching and versioning . Here are some of the key benefits of Plastic SCM: —Speed: Creating branches in a large codebase is significantly faster in Plastic than in Perforce or Git . —Simplicity for non-coders: Artists on your team can work in Gluon mode . This simplified workflow allows them to check out their part of the project, work, and commit their changes, while removing irrelevant parts of the interface . —Cloud hosting: Plastic offers a native solution called Plastic Cloud Edition, designed with fully distributed teams in mind . If your team doesn’t want to consider running its own servers and prefers hosting everything online, try Plastic Cloud Edition . —Distributed Version Control: Set up different repositories in remote offices so teams always work “locally .” This is a Git-like workflow at a larger scale . Use the graphical interface to push and pull changes as well as solve remote conflicts . —Diff window: Plastic features a complete interface to view changed, added, or deleted files . The GUI also includes a separate image diff tool to help you compare two revisions of a texture asset . When using Plastic SCM, open the Plastic SCM window (Window > Plastic SCM) to view the files in your changelist . Plastic SCM 20 of 79 | unity .com© 2021 Unity Technologies PlasticSCM window The Pending changes tab lists all of the local changes that are pending a commit into version control . The Incoming changes tab allows you to view all incoming changes and conflicts and update your local project . Any changes made to your project prompts an “Incoming changes” notification at the top right of the Plastic SCM window . Refer to the Version control integrations documentation for more information about the Version Control Window . To learn more, watch the Version Control for games with Plastic SCM video from Unite Now, or check out the Plastic SCM Book to get started . Git Unity developers can also use external source control solutions such as Git . This, however, requires some initial manual setup of the project . To use Git with Unity, create an empty repository on your local machine and optionally sync this to the cloud via GitHub . Be sure to include Git LFS (Large File Support) for more efficient version control of your larger assets, like graphics and sound resources . Unity maintains a .gitignore file that can help you decide what should and shouldn’t go into the Git repository . For the added convenience of working with the GitHub hosting service, install the GitHub for Unity plug-in . This open source extension allows you to view your project history, experiment in branches, commit your changes, and push your code to GitHub without leaving Unity . 21 of 79 | unity .com© 2021 Unity Technologies Also, consider any of the capable visual clients like GitKraken, SourceTree, or GitHub Desktop . For a walkthrough of setting up Unity with Git, watch the Introduction to Version Control video, which covers the basics of using a visual GitHub client with a sample project . Perforce If Perforce is your source control of choice, use Helix Core to manage your code, artwork, and game engine assets . Helix Core is free for up to five users and 20 workspaces . Perforce has good performance, even with remote teams distributed around the world . Many AAA or indie game dev studios use Perforce as their primary source control . To use it: —Follow the setup process described in the Unity Version Control documentation . —Read how to set up Perforce Helix Core with Unity . —Consult the Perforce documentation for more detail about Perforce Helix Core . The GitHub for Unity extension Create a repository using GitHub . 22 of 79 | unity .com© 2021 Unity Technologies Project organization As your project grows, you will need to maintain a level of organization so that it can scale with your team and application requirements . These general tips will help you to establish your basic project and scene structure . The Project view The Project window displays all of the files related to your project . This is the content directory where you will find assets and other project files in your application . Unity stores the source files directly in the project, alongside individual .meta files . Meta files contain engine- and Editor-specific data for the associated asset . Unity also imports each asset into an optimized format which the engine uses at runtime . These processed assets appear in the Library folder, which serves as a cache and does not need to be added to source control . The project window has a few UI features to assist with navigation: —Right-click to reveal the context menu for frequently used commands (creating/importing assets, revealing full path on disk, etc .) . —Use the Search field to locate assets as your project grows in size . If you’re looking for a particular type of asset, filter by type using the t: syntax (e .g ., t:Material will filter for all material assets in the project) . This can help you to navigate large projects . —Drag a frequently used folder into the Favorites field at the top of the interface . You can also save a search to the Favorites with the Save Search button . —You can also change the layout of the window itself . Select the More Items ( ) menu in the top right of the window, and choose from either One Column Layout or Two Column Layout . The two-column layout has an extra pane with a visual preview of each file . One-column vs two-column layout 23 of 79 | unity .com© 2021 Unity Technologies AnimationsThis folder contains animated motion clips and their controller files, as well as Timeline assets for in-game cinematics or rigging information for procedural animation . AudioSound assets include audio clips as well as the mixers used for blending effects and music . EditorThis folder contains scripted tools made for use with the Unity Editor but not appearing in a target build . FontsThe fonts used in the game . GizmosHaving a Gizmo icon can help visualize a GameObject in the Scene or Game view, especially if it does not have a mesh . Store the image files for these icons in the Gizmos folder . MaterialsThese assets describe surface shading properties . MeshesStore models created in an external DCC application here . ParticlesManage particle simulations in Unity, created either with the ParticleSystem or Visual Effect Graph . PrefabsThese are reusable GameObjects with prebuilt components . Add them to a scene to build your levels and gameplay . ScriptsAll user-developed code for gameplay appears here . ScenesUnity stores small, functional portions of your project in scene assets . They often correspond to game levels or part of a level . SettingsAssets store render pipeline settings for both HDRP and URP . ShadersThese programs run on the GPU as part of the graphics pipeline . TexturesImage files can consist of texture files for materials and surfacing, UI overlay elements for user interface, and lightmaps to store lighting information . ThirdPartyIf you have assets from an external source like the Asset Store, keep them separated from the rest of your project here . This makes updating your third-party assets and scripts easier . Third-party assets may have a set structure that cannot be altered . Inside of the Project window is the Assets folder . This contains the assets used to build your game . If you’ve started your project with a template, you should see subfolders that represent several common assets . While most of these are user- defined, Unity does reserve a few folder names for specific purposes . Make sure you are aware of this list of Special folder names . The following are some common subdirectories that you might use to organize your project, although these vary by team and project according to preferences . Above all, stay consistent – create a style guide and follow it . 24 of 79 | unity .com© 2021 Unity Technologies The Supported Asset Types manual page describes the most common assets in more detail . You can use the Template or Learn projects as an example of how to organize your folders effectively . While you’re not limited to these folder names, this list should give you a good starting point that you can expand upon as your project scales up . You are of course free to adapt the folder structure to your specific project’s needs and team preferences, as in the image below . The Sample Scene with the HDRP template includes several asset folders . Organize folders for your project needs, but stay consistent once you decide on a structure . 25 of 79 | unity .com© 2021 Unity Technologies Folder structure and naming While there’s no single way to organize your project, we recommend that you follow these best practices in general: —Document your naming conventions and folder structure . A style guide and/or project template makes your files easier to find and organize . —Whatever naming convention you choose, make sure you remain consistent . Don’t deviate from your chosen style guide or template . If you do need to amend your naming rules, parse and rename your affected assets all at once with a script . —Don’t use spaces in file and folder names . Unity’s command line tools have issues with path names that have spaces . —Separate your testing or sandbox areas . Create a separate folder for non-production scenes and experimentation . Subfolders with usernames can divide your work area by team member . —Avoid extra folders at the root level . In general, store your content files within the Assets folder . Don’t create additional folders at the project’s root level unless absolutely necessary . Scenes Scenes are where you work with content in Unity . They contain the objects of your game and can be used to create a main menu, individual levels, and anything else . In each unique scene, you will place the environments, obstacles, and decorations that roughly translate into one level of your game . This enables you to design and build your application piece by piece, keeping it modular . The scene files themselves are assets that are stored on disk . If you use Force Text Mode for Asset Serialization, they appear as text files; otherwise, they default to binaries . Scenes often represent a level of your game or a portion of a level . While demos and simple games might occupy just a single scene, most commercial games might use one scene per level, each with its own environments, characters, UI, etc . 26 of 79 | unity .com© 2021 Unity Technologies Scene templates in HDRP Unity provides a SceneManagement API for loading or managing scenes from scripts . See this Learn tutorial on scene flow for more information . You can create any number of scenes in a project, but be aware that how you structure your scenes can have a significant performance impact . For more info on scene organization and performance, check out our mobile performance optimization guide . You’ll need to create, create, load, and save scenes to represent different portions of your game and flesh out your application . A typical “scene flow” involves triggering the loading of another scene with an event . For example, you may have a menu scene that loads up a main gameplay scene when the user clicks the interface . Note that you can load scenes one at a time, or separate elements and load the scenes additively . When creating a new scene, Unity allows you to select from a set of Scene Templates . For example, the HDRP 3D Sample Scene comes with several templates . You can define your own scene templates to streamline your workflow and start everyone on your team with the same assets and configuration . 27 of 79 | unity .com© 2021 Unity Technologies General tips for scenes and hierarchies —Use named, empty GameObjects as spacers . Carefully organize your scenes to make it easy to find objects . Keep these to a minimum, as every GameObject matters . Balance your organizational needs with performance . Avoid unnecessary parenting for organization (see Use proper parenting below) . —Put maintenance Prefabs and empty GameObjects at world origin . If a transform is not specifically used to position an object, it should be at (0,0,0) . This simplifies code and reduces issues converting between local and world space . —Put your world floor at y = 0 . This makes it easier to put objects on the floor . Treat the world as a 2D space along the xz-plane for game logic, AI, and physics . —Separate dynamic and static objects . If you generate moving objects at runtime, consider keeping them organized under an empty placeholder object . Likewise, store non-moving level geometry in a different part of the hierarchy . This can help you apply the appropriate lighting techniques to your geometry (e .g ., lightmapping versus probe lighting) . —Use proper parenting . Group related objects by function . Use common sense when creating hierarchies (e .g ., parent the tires so that they are children of the car body) . Avoid unnecessary parenting when possible, as a flatter hierarchy is more performant . Follow these guidelines for scene hierarchies . Caption: Empty game objects serve as spacers . The Hierarchy window The Hierarchy window displays every GameObject in the currently loaded scene’s assets . These include your models, Cameras, and Prefabs . Simply drag a GameObject to change its parenting . Adding or removing objects in the Scene view also adds or removes them from the Hierarchy window (and vice versa) . The Hierarchy window can show more than one loaded scene at runtime, with each scene containing its own GameObjects . The Sample Scene with the HDRP template includes several asset folders . 28 of 79 | unity .com© 2021 Unity Technologies Naming standards While there is no definitive naming standard for GameObjects, consider the following standards and practices for your project . StandardExample Use descriptive names . Don’t abbreviate . Use names that you will remember several months from now . Consider whether another person will understand your notation, and choose names that you can pronounce and remember . Be aware that abbreviations can create confusion . largeButton, LargeButton, or leftButton NOT: lButton Use Camel case/Pascal case . Avoid spaces in your object names . Camel case or Pascal case improve readability (and typing accuracy, according to this study) . OutOfMemoryException, dateTimeFormat, NOT: Outofmemoryexception, datetimeformat Use underscores (or hyphens) sparingly . Avoid underscores and hyphens in general . However, they can be useful in certain circumstances . Prefixing a name with an underscore puts it alphabetically first . You can also use underscores to denote variants of a specific object . Active states: EnterButton\_Active, EnterButton\_Inactive maps: Foliage\_Diffuse, Foliage\_ Normalmap Level of detail: Building\_LOD1, Building\_LOD0 Use number suffixes to denote a sequence . Don’t suffix with a number if it’s not part of a list . For a path, name the nodes: Node0, Node1, Node2, etc . Follow the design document naming .If your design document names locations like HighSpellTower or RedDragonLair, use those exact spellings . As with all naming standards, decide on what works for your team and apply it consistently . 29 of 79 | unity .com© 2021 Unity Technologies GameObjects and components Gameplay and interactivity in Unity is constructed from GameObjects and components . These are the fundamental building blocks for your Unity project . Create them in the interface or using script . Everything in your game hierarchy is a GameObject . GameObjects are essentially empty containers that don’t do anything on their own . They can represent a wide range of things in your game, from a character to an environment to a particle effect . You need to add special components to a GameObject before they can become a functional part of your game . Each GameObject can hold more than one component . Often components work together in concert or by communicating with components on other GameObjects . Depending on what functionality you want to create, you will add different combinations of components to the GameObject . You can also make your own components using Scripts . Adding a component changes its functionality . 30 of 79 | unity .com© 2021 Unity Technologies The Inspector Components have any number of editable properties, or variables, that can be changed using the Inspector window . You can also modify these variables with your custom scripts . Use the Help, Preset, and More Items menus to manage your components Modify an example light’s range, color, and intensity in the Inspector window . Use the Inspector to enter or reset values . The Help icon also gives you quick access to documentation, while the Presets feature lets you quickly save or load values . You can use the More Items ( ) menu to reorder components or to copy and paste values . 31 of 79 | unity .com© 2021 Unity Technologies Tips for working with transforms —Clear transformation values before adding the child . Set the parent’s Transform position and/or rotations to (0,0,0) when adding a transform as a child . Unity compensates for any existing values to keep the child object in the same world space position when reparenting . If the parent is untransformed, the local coordinates for the child will be the same as its global coordinates . This keeps the setup simple . —Use the correct Tool/Pivot mode . When moving, rotating, and scaling, be aware of your tool settings in the Toolbar . Unity includes a toggle between Pivot and Center mode; this switches the Gizmo handle between the model pivot and the center of the selection, respectively . Likewise, be aware of toggling between Local and Global coordinate systems . —If an object needs to sit or stand on the floor, put its pivot at the base, not in the center . This makes it easy to put characters and objects on the floor precisely . In a 3D project, you can work in a top-down view on the xz-plane more easily . —Make all meshes face in the same direction . This applies to meshes such as characters and other objects that have the concept of facing a direction . Consistency makes many calculations at runtime much simpler . Tool settings The Transform component Every GameObject in Unity has a Transform component for its position, rotation, and scale . You cannot remove this component . Transform values in the Inspector for any child GameObject are displayed relative to its parent’s transform in local coordinates . Transform scale determines the size of a mesh in Unity compared to the mesh size in your modeling application . This is important for the physics engine, which assumes one unit in world space is one meter . Like many 3D applications, Unity represents rotations as Quaternions internally, but it shows values of the equivalent Euler angles in the Inspector for easier editing . 32 of 79 | unity .com© 2021 Unity Technologies Add native components for greater functionality (Rigidbody in this example) . —Get the scale right from the beginning . Make art assets so that they can all be imported at a scale factor of 1 with their x, y, and z scale axes at 1 . Use a reference object (GameObject > 3D Object > Cube) to make quick scale comparisons . Avoid non-uniform scales on the root transform if you do need to scale . Otherwise, this can lead to unexpected results when adding child transforms . —If you are using Rigidbody components for physics simulation, then model at 1 unit = 1 meter . Otherwise, compensate using the Mesh Scale Factor in the model’s Import Settings . Large objects appear to fall in slow motion because we perceive speed relatively (e .g ., a mouse and an elephant traveling the same speed in world units appear differently to the human eye because of how they move relative to their own body sizes) . A physics simulation may be correct, even if the perceived speed does not appear to be . See the Rigidbody component reference page for more about how mesh scale affects physics Built-in components Add components to the selected GameObject using the Components menu . For example, if you add a Rigidbody (Add Component > Physics > Rigidbody) to a 3D cube, you will see the Rigidbody’s properties appear in the Inspector . 33 of 79 | unity .com© 2021 Unity Technologies An example of a custom scripted component Custom components While built-in components add many abilities to your GameObjects, you will inevitably need to add your own behaviors using Unity’s Scripting API . Custom scripted components can trigger game events, check for collisions, apply physics, respond to user input, and much, much more . When you create a script and attach it to a GameObject, the script appears in the GameObject’s Inspector, just like a built-in component, and you can tweak its values as you test your game design in the Editor . Scripts become components once they save and compile in your project . Press Play while the empty GameObject is still selected, and the physics engine in Unity causes the GameObject to fall under gravity . The Rigidbody has added functionality to the otherwise empty GameObject . You’ll use combinations of components to create unique gameplay . Built-in components give you access to sounds, rendering, AI navigation, and more . You’ll uncover more features as you continue on your journey into the Editor . Scripts attached to GameObjects inherit from a built-in class called MonoBehaviour . Making MonoBehaviours interact with one another is core to creating gameplay in Unity . The Unity Scripting API details every class available to the UnityEngine and UnityEditor . We recommend that you first familiarize yourself with the manual, then dive deeper as you begin to explore . 34 of 79 | unity .com© 2021 Unity Technologies Prefabs Unity’s Prefab system allows you to create, configure, and store a GameObject as a reusable asset . This keeps all of its components, property values, and child GameObjects intact . The Prefab asset in a project acts as a template to create new Prefab instances in the scene . When you want to reuse a GameObject configured in a particular way, convert it to a Prefab . Prefab usage You can use Prefab instances for many of the GameObjects in your hierarchy . A Prefab can be anything you want to replicate; it could be a character (either player or NPC), a prop, or part of the level geometry . Some common examples of Prefab use include: —Environmental assets: If you want to reuse the same tree or building several times in a level, convert those meshes into Prefabs . —Non-player characters (NPCs): A certain type of character may appear in your game several times, across multiple levels . Use overrides to make them differ by behavior, visuals, or sounds . —Projectiles or power-ups: Use Prefabs when you want to instantiate GameObjects at runtime that did not exist in your scene at the start . For example, your laser gun might instantiate a particle effect each time it fires . —The player’s main character: The player Prefab might be placed at the starting point for each level of your game (or in a separate scene loaded additively) . Changes can automatically sync to the Prefabs, simplifying the process of modifying your assets and propagating changes to your scene . Creating Prefab assets and instances To create a Prefab asset, drag a GameObject from the Hierarchy window into the Project window . The GameObject, including its components and child GameObjects, becomes a new asset in your Project window . Prefabs assets appear either with a blue cube Prefab icon or thumbnail view of the GameObject, depending on whether your Project view uses a one-column or- two column layout . 35 of 79 | unity .com© 2021 Unity Technologies Likewise, drag the Prefab asset from the Project view to the hierarchy or scene view to create a Prefab instance . Prefab Mode in isolation (left) or in context (right) Creating a Prefab asset and instance Any changes made to the Prefab asset on disk update automatically on the instances in the scene . This way you don’t need to make the same edit to every copy of the asset . This does not mean all Prefab instances have to be identical . You can override settings on individual prefab instances to make them differ from other instances or from the original asset . Prefab mode To edit a Prefab asset, you can open it in a special Prefab Mode . Prefab Mode allows you to view and edit the contents of the Prefab asset either separately in isolation or in the context of the other GameObjects in your scene . Changes that you make in Prefab Mode affect all instances of that Prefab . 36 of 79 | unity .com© 2021 Unity Technologies Nested Prefabs, with the “outer” Prefab denoted by the plus badge Prefab Variants and Nested Prefabs You can create variants of Prefabs which allow you to design a meaningful modification of a Prefab . Think of it like inheriting from an archetypal asset and then overriding just the parts you want to change . Variants of the same base Prefab Nest Prefabs inside other Prefabs to create complex hierarchies of objects that are easy to edit at multiple levels . A Nested Prefab instance has a plus badge overlayed on its icon in the hierarchy . That indicates it overrides that specific instance of the outer Prefab . Edit the source Prefab assets independently, propagating changes into the Nested Prefabs . 37 of 79 | unity .com© 2021 Unity Technologies Package Manager To make development more flexible, Unity offers some features as optional add-on packages . These exist outside of the core Editor so that they can follow a more rapid release cycle . The package management system keeps your build small, as it allows you to only install the tools that you need for your specific project requirements . Packages themselves can vary in functionality . They can contain any combination of assets, shaders, textures, plug-ins, icons, and scripts to enhance various parts of your project . Manage available packages using the Package Manager window (Window > Package Manager) . In addition to Unity-provided packages that are built-in or part of the Unity registry, you can also install custom packages from disk, GitHub URL, or the Asset Store: —Click the button to install a package directly from git URL or a local path . —The Packages drop-down menu changes what appears in the list (Unity Registry/In project/My Assets/Built-in) . Meanwhile, the Sort menu organizes packages by name or date . —Asset Store packages from My Assets feature additional filtering options . —The Search field allows you to locate a package by name . Use the Download, Import, and/or Update buttons to manage the packages in use by your project . The Package Manager Experienced developers can also leverage the PackageManager API to build their own shared libraries . Watch Creating Custom Packages in Unity for a quick introduction . 38 of 79 | unity .com© 2021 Unity Technologies Programming In Unity, you can use code to customize and control just about any part of your game, create visual tools for your team, and even change the way Unity itself works . Unity uses C#, a modern object-oriented language adopted widely in software industries . Custom components and MonoBehaviours Every type of GameObject comes with a set of default components . For example, an empty GameObject starts with the Transform component . But you can extend this default collection with custom components that can tie your own game logic directly to objects your team uses in game scenes . You can even empower your designers to tweak values and behavior through values in your components . To do this, create scripts, then add those scripts as components to GameObjects . Each script derives from the built-in class called MonoBehaviour . Think of the MonoBehaviour class as a kind of blueprint for creating a new component type . Each time you attach a script component to a GameObject, the blueprint defines a new instance of that particular component . Scripts are created directly within Unity . If you use the Assets menu (or right- click) > Create > C# Script, this generates a new C# script on disk . Name the filename to match your desired class name . Drag this onto an object in the hierarchy, and the inspector shows the ExampleScript appears as a component . A new C# script Note: If you change the name of the class inside the file but not the filename, it can cause the script to not function properly when attached as a custom component . Unity will automatically set up a class named ExampleScript that inherits from MonoBehaviour . 39 of 79 | unity .com© 2021 Unity Technologies Unity’s current script template starts the class with two functions, Start and Update . Initializing objects Experienced programmers may be surprised that initializing an object is not done using a constructor . The Editor handles object construction, which does not take place at the start of gameplay . Attempting to define a constructor for a script component will interfere with the normal operation of Unity and can cause problems . using System.Collections; using System.Collections.Generic; using UnityEngine; public class ExampleScript : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } } Unity calls the Start function before gameplay begins and before it calls the Update function for the first time . Thus, the Start function is an ideal place to set up variables, read preferences, and make connections with other GameObjects . The Update function handles code that runs every frame . For example, this might include movement, triggering actions, and responding to user input . Update and Start are only two of MonoBehaviour’s event functions . These built-in methods run on a set order of execution . Overriding MonoBehaviour’s event functions is how you will construct gameplay and build the main game loop . To familiarize yourself with the basics of coding in Unity, check out our documentation here . 40 of 79 | unity .com© 2021 Unity Technologies MonoBehaviour lifecycle and structure Game engines rely on an endless loop responsible for processing user input, updating game state, and rendering to the screen . In Unity, this PlayerLoop is a low-level class at the heart of the game engine . It controls a number of subsystems that handle initialization and per-frame updates . To interface with the PlayerLoop, your scripts derive from the MonoBehaviour base class, and learning how this operates is key to creating gameplay . This flowchart shows MonoBehaviour’s event functions and how they execute over a script’s lifetime . Here are some essential parts of the game loop when working with MonoBehaviours: —First scene load —Editor —Before the first frame update —In between frames —Update order —Animation update loop —Rendering —Coroutines —When the object is destroyed —When quitting Experienced users can even build their own PlayerLoop and PlayerLoopSystems . However, we recommend that you begin by familiarizing yourself with the Monobehaviour class and the most common classes below . 41 of 79 | unity .com© 2021 Unity Technologies MonoBehaviour lifecycle 42 of 79 | unity .com© 2021 Unity Technologies More scripting tips Unity’s scripting backend is based on the .NET Framework . Take advantage of these C# features when scripting for Unity development: —Namespaces: Classes in Unity must have unique names . When several programmers check their work into the same project, common names like “Controller” can create conflicts . Use namespaces to avoid this, and organize your data types . Apply the using directive to shorten the namespace prefix if desired . For example, you could create a namespace for the Player as well as for an Enemy . Then Player .Controller and Enemy .Controller could safely live in the same project . See the Namespaces manual page for more information . —Coroutines: Sometimes you may want to trigger an action and have it take place over multiple frames . For example, imagine moving an object from A to B over a duration or slowly fading its color . Normally a function runs to completion and returns on the same frame, making it more difficult to perform logic over a timeframe . A coroutine has the ability to pause execution and return control to Unity, then continue where it left off on the following frame . You can use coroutines to apply game logic for a specified time . For example, pausing execution for a set time is often done via coroutine . You can even use coroutines to wait for other coroutines or combine it with a while loop to wait for a condition . Coroutines can behave like MonoBehaviour’s Update event functions but with the added benefit of controlling the update interval . Refer to the Coroutine manual page for more information . —Attributes: These are markers that can be placed above a class, property, or function to indicate special behaviour . For example, you can turn a numeric field into a slider in the Inspector using the Range attribute or add a floating Tooltip over a field in the Inspector . C# contains attribute names within square brackets . You can find a complete list of Attributes in the Scripting API . 43 of 79 | unity .com© 2021 Unity Technologies Common classes Once you start scripting in Unity, you should review some of the most important built-in classes . While this list is not exhaustive, it should help you start exploring Unity . See the Scripting API for a complete list of classes for more information . ClassDescription GameObjectRepresents the type of objects which can exist in a scene MonoBehaviourThe base class from which every Unity script derives ObjectThe base class for all objects that Unity can reference in the Editor TransformProvides you with a variety of ways to work with a GameObject’s position, rotation, and scale via script, as well as its hierarchical relationship to parent and child GameObjects VectorsClasses for expressing and manipulating 2D, 3D, and 4D points, lines, and directions QuaternionA class which represents an absolute or relative rotation, and provides methods for creating and manipulating them ScriptableObjectA data container that you can use to save large amounts of data TimeThis class allows you to measure and control time, and manage the frame rate of your project MathfA collection of common math utilities, including trigonometric, logarithmic, and other functions RandomProvides you with easy ways of generating various commonly required types of random values DebugAllows you to visualize information in the Editor that may help you understand or investigate what is going on in your project while it is running Gizmos and Handles Allows you to draw lines and shapes in the Scene view and Game view, as well as interactive handles and controls 44 of 79 | unity .com© 2021 Unity Technologies Memory management Unity supports C#, an industry-standard language with some similarities to Java or C++ . C# is a “managed language .” It automatically handles memory management for you: allocating and deallocating memory, covering memory leaks, and so on . In some languages like C++, the programmer is responsible for allocating and releasing these blocks of heap memory with the appropriate function calls . By contrast, automatic memory management in C# requires less coding effort than explicit allocation/release, while greatly reducing the potential for memory leakage (where memory is allocated but never subsequently released) . Value versus reference types When you call a function, Unity reserves an area of memory for it and copies the values of the function’s parameters as well . Value types, like integers, floats, and booleans, only occupy a few bytes . Unity stores value types directly and copies them during parameter passing . Other data types (like objects, strings, and arrays) are reference types . They occupy more space and would be inefficient to copy on a regular basis . Instead, Unity stores their data in heap memory and accesses them via pointers . Thus, if you only need a struct (value type), using that can be more efficient than if you use a class (reference type) to hold the same data . Although you won’t need to allocate and release memory explicitly, you will need to understand managed heap memory and how it affects the performance of your game application . Garbage collection Blocks of heap memory are “live” if they are still in use and have active references . The Managed Memory Allocator automatically allocates heap memory . As your game runs, references to a block of memory may disappear (GameObjects get destroyed, variables get reassigned, etc .) . Once all references to a memory block are gone, the Managed Memory Allocator can safely reuse the memory . Periodically, the allocator searches the empty spaces between live blocks of memory . Locating and freeing up unused memory is known as garbage collection, or GC for short . When the game application requests new blocks of memory, the allocator draws from these unused blocks . 45 of 79 | unity .com© 2021 Unity Technologies Unity implements the Boehm–Demers–Weiser garbage collector . During garbage collection, Unity stops running your program code, and it only resumes normal execution when the garbage collector finishes . This interruption can cause delays in the execution of your application, which depend on how much memory the garbage collector needs to process and the game’s target platform . These can vary, anywhere from less than one millisecond to hundreds of milliseconds . For real-time applications like games, this can become quite a big issue . Interruptions from garbage collection, called GC spikes, can cause game play to stutter . Even though garbage collection is invisible for the most part, the collection process actually requires significant CPU time behind the scenes . Also, be aware that the Boehm GC algorithm is non-compacting . It does not move existing objects in memory to close the gaps between objects, which can lead to memory fragmentation . If you try to allocate a new object that does not fit within the existing gaps, the allocator may need to expand the size of the heap to accommodate it . Heap expansion can impact performance . Be aware that the heap can expand . Garbage collection frees up unused memory but pauses execution of your script code . 46 of 79 | unity .com© 2021 Unity Technologies In Unity, you need to avoid triggering the garbage collector more often than necessary . Otherwise, your application could freeze or stutter at runtime . Check out this blog post for optimization tips and tricks that can help reduce the impact of garbage collection . Unity also offers an optional Incremental Garbage Collector that splits GC over multiple frames . This feature is currently Experimental and detailed in this blog post . See Understanding Automatic Memory Management and Understanding the managed heap in the Unity documentation for more information about memory management and garbage collection . You can also read the Memory Management in Unity guide from the Learn site . Multithreading: C# Job System and Burst compiler Modern CPUs have multiple cores, but your application needs multithreaded code to take advantage of them . Unity’s Job System allows you to split large tasks into smaller chunks that run in parallel on those extra CPU cores . This can significantly improve performance . Often in multithreaded programming, one CPU thread of execution, the main thread, creates other threads to handle tasks . These additional worker threads then synchronize with the main thread once their work completes . In traditional multithreaded programming, threads are created and destroyed . In the C# Job System, small jobs run on a pool of threads . 47 of 79 | unity .com© 2021 Unity Technologies If you have a few tasks that run for a long time, this approach to multithreading works well . However, it’s less efficient for a game application, which typically must process many short tasks at 30–60 frames per second . Thus, Unity uses a slightly different approach to multithreading called the C# Job System . Rather than generate many threads with a short lifetime, it breaks your work into smaller units called jobs . These jobs go into a queue, which schedules them to run on a shared pool of worker threads . JobHandles help you create dependencies, ensuring the jobs run in the correct order . In order for a safety system to prevent race conditions, jobs work on a copy of the data . Then, Native Containers send the results back to the main thread . Complementing the Job System is the Burst compiler . Burst translates IL/ .NET bytecode into optimized native code using LLVM . To access it, simply add the Burst package from the Package Manager . Burst allows Unity developers to continue using a subset of C# for convenience while improving on performance . Scripting backends in Unity Unity has two scripting backends: Mono and IL2CPP (Intermediate Language To C++) . Each uses a different compilation technique: —Mono uses just-in-time (JIT) compilation and compiles code on demand at runtime . —IL2CPP uses ahead-of-time (AOT) compilation and compiles your entire application before it is run . IL2CPP is a Unity-developed scripting backend which you can use as an alternative to Mono when building projects for some platforms . It can improve performance and reduce build sizes, but this often comes with slower build time . When you choose to build a project using IL2CPP, Unity converts IL code from scripts and assemblies into C++ code, before creating a native binary file ( .exe, apk, .xap, for example) for your chosen platform . Note that IL2CPP is the only scripting backend available when building for iOS and WebGL . For more information about using IL2CPP, refer to the The Unity IL2CPP blog series and the Building a project using IL2CPP page . Editor scripting You may want to tailor your development environment to the specific needs of your team and project to work more efficiently . 48 of 79 | unity .com© 2021 Unity Technologies If you require a specialized workflow, you can extend the Editor with your own custom inspectors and windows . These can behave just like the Inspector, Scene, or other built-in windows . You can also define how properties appear with custom Property Drawers . Odin Inspector and Serializer You can reduce the time you spend in the EditorWindow API using Odin Inspector and Serializer, a third-party Unity Verified Solutions Partner tool that you can purchase on the Unity Asset Store . Odin provides over 100 building- block attributes that let you create custom editors without manually writing and maintaining custom GUI code . To create a custom editor window with Odin, simply inherit from the OdinEditor Window class, and populate your fields, properties, and methods with attributes . These are just a few of the processes you can define with Odin: —Customize layouts with group attributes such as TabGroup and ToggleGroup —Serialize fields like dictionaries that are normally unavailable with the native Unity Inspector —Easily create buttons in the Inspector window by adding button attributes to your methods —Modify static members for testing and debugging; for example, invoke a static method with any arguments directly from the Inspector A custom Editor window 49 of 79 | unity .com© 2021 Unity Technologies —Create custom editors for the Inspector window using attributes —Write snippets of C# code with attribute expressions directly inside the attributes to reduce boilerplate —Validate user input with attributes such as Required, ValidateInput, ChildGameObjectsOnly For example, you can generate an Inspector that looks like this, using a script: Example created in Odin Inspector Here is an example of an editor window that was made using Odin: RPG editor window created in Odin The Odin Inspector is available in both Personal and Enterprise editions from the Unity Asset Store . 50 of 79 | unity .com© 2021 Unity Technologies Integrated development environment (IDE) support Unity supports several IDEs so that you can work in your preferred development environment . Visual Studio is installed by default with Unity on Windows and macOS . Select your script editor in Preferences (Unity > Preferences > External Tools > External Script Editor) . Unity supports the following IDEs out of the box: —Visual Studio is the default IDE for Unity on Windows and macOS . On Windows, Unity also includes Visual Studio 2019 Community . On macOS, Unity includes Visual Studio for Mac . —Visual Studio Code (Windows, macOS, Linux) is a free, lightweight, and customizable open source code editor known for speed and customizability . For information on using VS Code with Unity, see Unity Development with VS Code . —JetBrains Rider (Windows, macOS, Linux) is built on top of ReSharper and includes most of its features . For more information, see the JetBrains documentation on Rider for Unity . If your text editor of choice is not one of the above with built-in support, you may need to customize your text editor for Unity development . For example, many community members have created packages (plug-ins, extensions, and add-ons) to use Sublime Text with Unity . Script templates As you start creating your custom components, you may find that you make the same changes every time you create a new C# script . For example, you might want to delete the Update event function automatically or add a default namespace . Save yourself a few keystrokes and set up the script template so it fits the task at hand . Unity uses templates stored in the ScriptTemplates resources: —Windows: C:\\Program Files\\Unity\\Editor\\Data\\Resources\\ScriptTemplates —Mac: /Applications/Hub/Editor/\[version\]/Unity/Unity.app/Contents/Resources/ ScriptTemplates Open and edit these template files as needed, then relaunch the Unity Editor to apply your changes . Be sure to back up both your original template files and the modified ones . 51 of 79 | unity .com© 2021 Unity Technologies Building and publishing One of Unity’s strengths is its ability to deploy on multiple platforms . To adjust the publishing settings for your application’s build, go to File > Build Settings . Add the relevant scenes to the Scenes in Build . The scene that acts as your entry point into the application will have an index of 0 . The available platforms appear at the lower left . Use the Install with Unity Hub option to install support for the other available target platforms . You can also go directly to the Installs screen of the Unity Hub and Add Module support for any version of Unity . Some consoles, such as PlayStation, Nintendo Switch, or Xbox, require additional modules from the relevant platform publisher . Note that you will need to appraise cross-platform considerations when building your application . For example, mobile devices have less storage, memory, and CPU power, so they are also more susceptible to spikes from garbage collection during automatic memory management . You won’t be able to port a graphically taxing console game to iOS or Android – at least, not without a great deal of platform-specific optimization . Build Settings 52 of 79 | unity .com© 2021 Unity Technologies Also, be aware of input requirements when building for more than one platform . Mobile devices with touchscreens and accelerometers need different settings than platforms with controller or keyboard/mouse input . You can use the new Input System to process user input for multiple devices . Platform-dependent compilation lets preprocessor directives partition your scripts to be specific to a target platform . Combine these with the #if compiler directive or ConditionalAttributeClass . If you wanted to add or remove a UI or object for a platform-specific release (e .g ., omit a Quit button from an iOS application), then platform-dependent compilation simplifies that logic . Building and publishing workflow 53 of 79 | unity .com© 2021 Unity Technologies Device Simulator If you are building for mobile, consider installing the Device Simulator using the Package Manager . This lets you view your application on a simulated mobile device to preview its screen shape, resolution, and orientation . To use the Device Simulator view: —In the Game view, in the top left corner, there is a drop-down menu . Use this to switch between the Game view and the Device Simulator view . —Using the top menu, choose Window > General > Device Simulator . The Device Simulator The Device Simulator is intended primarily for viewing the layout of your application and testing basic interactions . Note that the Device Simulator view does not simulate the performance or rendering characteristics of a device, such as processor speed or available RAM . Watch Simulate your Game with Device Simulator in Unity to get started . 54 of 79 | unity .com© 2021 Unity Technologies Input Unity has two main systems for handling input, the Input System from the Package Manager and the built-in Input class . Input System The Input System is focused on ease of use, flexibility, and consistency across devices and platforms . It replaces the built-in Input class . While you can still get input directly from a device, the Input System shines when you create a series of indirect actions to drive player interaction . Then you can create an actionMap, a collection of bindings and actions . The action map can then relate those actions to the actual devices . The Input System is available via the Package Manager . If you want to adapt the input to more devices, you create more action maps rather than hard coding specific device buttons, keyboard keys, etc . Set up your callbacks and actions just once, then add additional mappings later to support more devices . Action maps also assist with switching input depending on your in-game context . For example, your player input can behave differently when driving a vehicle versus walking or running . Be sure to check out the Input System Quick start guide, and install some of the samples available through the Package Manager . Built-in input class You can alternatively use the original built-in Input class . This lets you utilize the Input Manager (Edit > Project Settings > Input Manager) to set up virtual axes for your keys, buttons, and other input devices . It also supports multitouch and accelerometer data on mobile devices . Note that enabling the Input System package (above) disables this built-in Input Manager . 55 of 79 | unity .com© 2021 Unity Technologies Here are some useful classes and methods for input: InputUsed to read the axes set up in the Conventional Game Input and access multitouch/accelerometer data on mobile devices Input .GetAxisReturns the smoothed value for the virtual axis identified by axisName (value between -1 and 1 for keyboard/joystick devices); for a mouse device, returns the current mouse delta multiplied by the axis sensitivity Input .GetAxisRawLike Input .GetAxis without the smoothing filter Input .GetButtonReturns true while the virtual button identified by buttonName is held down Input .GetButtonDownReturns true during the frame the user pressed down the virtual button identified by buttonName Input .GetKeyReturns true while the user holds down the key identified by name Input .GetKeyDownReturns true during the frame the user starts pressing down the key identified by name Input .touchesA read-only list of objects representing status of all touches during the last frame TouchStructure describing the status of a finger touching the screen KeyCode Lists all of the key press, mouse and joystick options For an overview of the built-in Input system, see the Input Manual page . The built-in Input Manager 56 of 79 | unity .com© 2021 Unity Technologies Unity UI offers a GameObject-based approach for UI elements . User interface Unity implements several UI systems for either your in-game user interface or for Editor scripts . You may tap one or more of these, depending on your use case . Unity GUI Unity UI (sometimes referred to as UGUI) offers a GameObject-based approach for editing and positioning UI elements . Unity UI is a system for developing user interfaces for games and applications . It uses components and the Game view to arrange, position, and style user interfaces . You cannot use Unity UI to create or change user interfaces in the Unity Editor . The Unity UI guide covers how to lay out your UI elements and create interactions . 57 of 79 | unity .com© 2021 Unity Technologies Immediate Mode GUI Immediate Mode GUI (IMGUI) can help you build custom inspectors and Editor windows . To create IMGUI elements, you write code within a special MonoBehaviour function named OnGUI . This system is not generally intended for normal in-game user interfaces . The code displays the interface in “immediate mode,” executed every frame . There are no persistent GameObjects other than the object where your OnGUI code is attached . The code produces GUI controls that are drawn and handled with a single function call . Follow this scripting guide for when you need IMGUI . An Editor UI created with Immediate Mode GUI 58 of 79 | unity .com© 2021 Unity Technologies Profiling and optimization Once you’ve designed a great game, your next task is to make it fast . Unity includes a suite of profiling and optimization tools to help you maximize the available resources for your target platform . Unity Profiler The Unity Profiler gives you performance information about the application . For best results, run it on the end platform where you intend to publish your build . This gives you accurate timings about what impacts the performance of your application . The Profiler can also work directly from the Editor in Play mode . Just be aware that this setup sacrifices accuracy, so it’s useful as a quick check but not for a final assessment . The Profiler can help you identify areas for potential improvement in your application: the CPU, GPU, memory, renderer, physics, and audio . Iterate on those areas . You can pinpoint things like how your code, assets, scene settings, camera rendering, and build settings affect how well your application runs . The Profiler displays the results in a series of graphs so you can visualize where spikes happen . The Unity Profiler 59 of 79 | unity .com© 2021 Unity Technologies Unity provides a number of Profiler markers to give you insight into what is taking up time in your application . The ProfilerRecorder can also use these markers to get useful timings for your frame . Here are some of the most common markers: Profiler markerSummary Main thread base markersMarkers on the main thread containing samples from the main game loop, PlayerLoop, as well as the EditorLoop (present when you profile inside of the Editor) Script update markersContain samples of MonoBehaviour.Update methods (Update/FixedUpdate/LateUpdate) and coroutines Rendering and VSync markers Contain the samples where the CPU spends time processing data for the GPU, or where it might be waiting for the GPU to finish Back end scripting markersHighlight Mono or IL2CPP scripting backend activities and can be useful for troubleshooting issues with garbage collection and allocation Multithreading markersContain samples that do not measure the CPU cycles consumed, instead highlighting information that relates to thread synchronization and the Job System Physics markersInclude high-level physics Profiler markers that sample Physics.Contacts, Physics. TriggerEnterExits, Physics.UpdateBodies, etc. Performance warningsDisplayed when the Profiler detects some specific calls that you should avoid in performance-critical contexts To access the Profiler window, navigate to the menu: Window > Analysis > Profiler . For a detailed overview of the window, see the Profiler window documentation . Memory Profiler The Memory Profiler is a tool you can use to identify areas in your Unity project and the Unity Editor where you can reduce memory usage . It gives you an overview of native and managed memory allocations, as well as the references between them that keep them in memory . 60 of 79 | unity .com© 2021 Unity Technologies Use the Memory Profiler to capture, inspect, and compare memory snapshots to detect memory leaks and fragmentation . The Memory Profiler main view in tree map view The Profile Analyzer Profile Analyzer The Profile Analyzer aggregates and visualizes frame and marker data from a set of Unity Profiler frames to help you understand their behavior . You can use the Profile Analyzer to compare two sets of data side-by-side, complementing the single-frame analysis already available in the Unity Profiler . For information on how to use the Profile Analyzer, see the window’s documentation . For a better understanding on optimization in Unity for mobile platforms, see this blog post, Optimize your mobile game performance . You can also download the full e-book outlining Unity experts’ optimization tips for mobile games . 61 of 79 | unity .com© 2021 Unity Technologies Debugging and playtesting Unity is an excellent tool for tweaking and debugging . At any time, you can enter Editor Play mode and see all of the gameplay variables while the application runs in the Editor . In Play mode, the Game view gives you a preview of your final, published application . You can alter the Unity scene on the fly and experiment, pausing any time or stepping through the code one statement at a time . To assist with playtesting, you’ll likely create cheats that will allow you to: —Unlock levels, characters, items, etc . —Disable enemies and/or gameplay —Toggle GUIs —Grant invincibility —Add/subtract time, money, collectibles, etc . Debugging gameplay Playtesting isn’t an exact science, but consider these suggestions: —Implement shortcuts for printing the player’s world position . This helps you determine whether specific bugs happen at a particular place in the level . —For small teams, make a test Prefab for each team member, and read settings and debug options from an uncommitted file . This way, team members won’t accidentally commit testing options or change the production scene . —Maintain a test/sandbox scene with all gameplay elements . For instance, create a scene with all enemies, all objects you can interact with, etc . This makes it easy to test functionality without having to play through the entire game . —Write a set of in-Editor cheats . Attach a MenuItem attribute to a static method that can check if the Application .isPlaying, and then run some logic . 62 of 79 | unity .com© 2021 Unity Technologies Log messages, warnings, and errors in the Console Debug .DrawLine Additional debugging tips Unity also includes a Debug class to help you visualize information in the Editor while it’s running . Use this to print messages or warnings into the Console window, which shows errors, warnings, and other messages generated by Unity . You can also use Debug to draw visualization lines in the Scene view and Game view, as well as to pause Editor Play mode from a script . —Pausing execution with Debug .Break is useful if you want to check certain values in the Inspector when the application is difficult to pause manually . —You can format your Console messages with different degrees of severity using Debug .Log, Debug .LogWarning, and Debug .LogError . —When using Debug .Log, you can pass in an object as the context . If you click on the message in the Console, Unity highlights the GameObject in the Hierarchy window . —Use Rich Text to mark up your Debug .Log statements . This can help you enhance error reports in the Console . —Troubleshooting physics? Debug .DrawLine and Debug .DrawRay can help you visualize ray casting . 63 of 79 | unity .com© 2021 Unity Technologies Unity Test Framework (UTF) The Unity Test Framework (formerly known as the Unity Test Runner) allows you to create automated tests to make sure your code runs as intended . Create unit tests for any logical snippet of code and apply test-driven development while you develop the project . UTF enables you to test your code in both Edit mode and Play mode . You can also run your tests on target builds such as Standalone, Android, iOS, and more . UTF extends the NUnit library, an open-source unit testing library for .NET languages . To open the Test Framework, go to Window > General > Test Runner . Follow the instructions to set up a work folder and assembly definition, then add unit tests to your Test Assembly . This process can help you to isolate bugs faster and learn to write a testable way . For more information about the Test Framework, see the Performance Benchmarking in Unity blog post and the Unity Test Framework documentation . Unity Test Framework 64 of 79 | unity .com© 2021 Unity Technologies Particle effects Unity includes two particle simulation solutions for your effects needs (smoke, liquids, flames): —The Particle System can simulate thousands of particles on the CPU . Use the modules of the Particle System component to represent predefined behaviors . To create each effect, you will often layer several GameObjects with ParticleSystems together . ParticleSystem supports the Built-in Render Pipeline and URP . You can access the ParticleSystem class to define a system and its individual particles via script . Particle Systems can interact with Unity’s underlying physics system and any Colliders in your scene, but cannot access frame buffers . For examples of the built-in ParticleSystem, download the Particle Pack from the Asset Store . A simple effects simulation using the Particle System 65 of 79 | unity .com© 2021 Unity Technologies —The Visual Effect Graph moves calculations on the GPU using compute shaders . This can simulate millions of particles that can also interact with the color and depth buffer . The workflow includes a highly customizable graph view . While it does not have access to the underlying physics system, a Visual Effect Graph can interact with complex assets such as Point Caches, Vector Fields, and Signed Distance Fields . Visual Effect Graph only works on platforms that support compute shaders and HDRP (support for URP is currently in Preview) . You can use the event interface to send custom events and pass in attached data that the graph can process . The Visual Effect component also provides a playback control API . Unity maintains two GitHub projects that demonstrate production examples of the Visual Effect Graph, the Visual Effect Graph Samples project and the Spaceship Demo . These both illustrate how the Visual Effect Graph can create a myriad of high-quality effects . Millions of particles onscreen created with the Visual Effect Graph When selecting one of the two systems, keep device compatibility in mind . Most PCs and consoles support compute shaders, but many mobile devices do not . We currently recommend the built-in ParticleSystem if your intended platform is mobile . If your target platform does support compute shaders, Unity allows you to use both types of particle simulation in your project . 66 of 79 | unity .com© 2021 Unity Technologies Physics Unity implements the NVIDIA PhysX engine for 3D projects and a 2D engine for 2D projects . The built-in physics engine in Unity provides industry standard solutions for Rigidbody interactions, joints, and forces . Use the Physics API for methods to ray cast or shape cast, test overlaps, and handle triggers/collisions . 3D physics Unity’s built-in physics engine includes several useful components: —Rigidbody allows the physics engine to control movement of the object . A Rigidbody will fall with gravity, and you can apply force or torque to it using the supplied methods . If a Collider component is active, the underlying GameObject will respond to physics collisions . —Colliders (Box Collider, Sphere Collider, Capsule Collider, Mesh Collider) represent primitive or mesh volumes that define the boundaries for physics collisions . —Joints (Fixed Joint, Hinge Joint, Spring Joint, Character Joint) allows you to connect two Rigidbody components to model a variety of motion constraints (e .g ., breakable joint, one axis of rotation, elastic joint, ball and socket, etc .) . —CharacterController allows you to handle movement constrained by collisions without requiring a Rigidbody . The Rigidbody component features speculative and sweep-based continuous collision detection for fast-moving objects . Use multiphysics scenes to manage or work around complex physics contexts . For example, you could simulate multiple physics scenes in order to predict GameObject collisions and trajectories . Use multiple scenes to predict collisions or trajectories . 67 of 79 | unity .com© 2021 Unity Technologies Unity also provides a Debug Visualization window (Window > Analysis > Physics Debugger), an interface that allows you to color and toggle physics components by category . This helps quickly troubleshoot Colliders or other physics-based scenarios in your scene . Classes/MethodsDescription Monobehaviour .FixedUpdateMessage for physics calculations updates on a fixed frame-rate determined by Edit > Settings > Time > Fixed Timestep Physics .Raycast, Physics .Linecast, Physics .BoxCast, Physics .CapsuleCast, Physics .SphereCast Methods for determining if a collider falls within a ray, line, or shape Physics .OverlapBox, Physics OverlapSphere, Physics OverlapCapsule Methods for testing whether a collider falls within a given shape Collider .OnCollisionEnter, Collider .OnCollisionStay, Collider .OnCollisionExit Messages sent when an incoming collider makes contact/stays in contact/leaves contact with this object’s collider Collider .OnTriggerEnter, Collider .OnTriggerStay, Collider .OnTriggerExit Messages sent when an incoming trigger makes contact/stays in contact/leaves contact with this object’s collider (a trigger does not register an actual collision but sends messages) The Physics Debugger window Apply physics updates inside of MonoBehaviour’s FixedUpdate method, which is called on a fixed time step .The Physics class includes several static methods that you will use for physics interactions . Unity also provides several physics events on the Collider class to handle collisions and triggers . The following are some of the methods that you will use for common physics interactions . 68 of 79 | unity .com© 2021 Unity Technologies 2D physics Unity has a separate physics engine optimized for handling 2D physics . Most 2D physics components are simply “flattened” versions of the 3D equivalents . The corresponding components have “2D” appended to the name, e .g ., Physics2D, Rigidbody2D, Collider2D, Joint2D, etc . Otherwise, they behave like their analogous 3D classes . Be sure to download the PhysicsExamples2D project for some example use cases, and watch this accompanying introductory video . Read more about the built-in 3D and 2D physics implementations in the Physics documentation . For tips about optimizing 3D physics and its settings, watch Physics Performance Optimization . 69 of 79 | unity .com© 2021 Unity Technologies Audio Unity’s audio system has sophisticated features for playing sounds in 3D space . Unity can also record audio with any available microphone for use during gameplay or for storage and transmission . Audio components mimic their real-life counterparts . Attach AudioSources to your GameObjects so they can play back an audio file called an AudioClip . An AudioListener somewhere else in the scene (usually attached to your main Camera) then hears this clip . In this way, the audio system can replicate the Doppler effect if the source and listener move relative to one another . Simulate other effects, like echoes, using Audio Filters . An AudioMixer blends various audio sources, applies effects to them, and performs mastering . These are the most common audio component classes . ClassDescription AudioClipAny Audio file imported into Unity is available from scripts as an AudioClip . This provides a way for the audio system to access the encoded audio data at runtime . Meta-information from the AudioClip may load even before the actual audio data does . AudioSourceAn AudioSource attached to a GameObject plays back sounds in a 3D environment . AudioListenerAn AudioListener represents a microphone-like device that hears all sounds around it . You have one listener per scene . AudioMixerAn Audio Mixer group is essentially a signal chain which allows you to apply volume attenuation and pitch correction; it allows you process the audio signal with effects and perform mastering . Caption: The AudioMixer 70 of 79 | unity .com© 2021 Unity Technologies Render pipelines and graphics No game is complete without graphics . Before you begin lighting your scenes, you will need to choose between one of the different render pipelines . A render pipeline performs a series of operations that take the contents of a scene to display them on-screen . 3D pipelines Unity provides three prebuilt render pipelines with different capabilities and performance characteristics . You can also create your own . —The Built-in Render Pipeline is a general purpose render pipeline with limited customization . This is the default . —The Universal Render Pipeline (URP) is a prebuilt Scriptable Render Pipeline (SRP) . URP provides artist-friendly workflows to create optimized graphics . Consider URP if you want to target multiple platforms – from mobile to desktop to consoles – with a single Unity project . URP adds graphics and rendering features unavailable to the Built-in Render Pipeline . In order to maintain performance, it makes tradeoffs to reduce the computational cost of lighting and shading . URP supports and scales to all Unity supported platforms . Choose URP if you want to build for mobile, Nintendo Switch, or Oculus Quest . —The High Definition Render Pipeline (HDRP) is another prebuilt Scriptable Render Pipeline, designed for high-end hardware such as PC, Xbox, and PlayStation . HDRP supports the highest-quality physically based lighting and rendering available in Unity . Choose HDRP if photorealism is your goal . HDRP features different light types (Spotlight Pyramid/Box, Realtime Tube, and Realtime Rectangular) and more advanced Reflections (Probes with blending, Planar reflections, Screen space reflections) . Fine-tune your materials with high-end shaders and effects, and use the pipeline debugging tools to troubleshoot renders . 71 of 79 | unity .com© 2021 Unity Technologies Choose a render pipeline early when planning your project . Both HDRP and URP include: —Shader Graph, a tool that allows you to create shaders using a visual node editor instead of writing code in HLSL . This allows developers to offload some shader work to artists or technical artists . —Sample scenes, which show examples of how to set up lighting settings, materials, and shaders . Several preconfigured Render Pipeline Assets let you quickly swap between graphics quality levels with settings that are already optimized for their respective pipeline . —The latest Post Processing Stack – both URP and HDRP include their own post-processing systems optimized for their respective pipelines . These enable you to apply full-screen filters using an artist- friendly interface . 72 of 79 | unity .com© 2021 Unity Technologies —A Render Pipeline Debug utility with visualization tools that you can use to solve issues with lighting, shading, shadows, etc . URP and HDRP work on top of the Scriptable Render Pipeline, a thin API layer that lets you schedule and configure rendering commands using C# scripts . This flexibility allows you to customize virtually every part of the pipeline . You can also create your own custom render pipeline based on SRP . While the Built-in Render Pipeline is not as customizable as URP or HDRP, it does support a wide number of platforms . To use it, you’ll need to configure the different rendering paths and extend its functionality with command buffers and callbacks . The Heretic short film showcases HDRP’s high-end graphical capabilities . See Render pipelines in Unity for a more detailed comparison of the available pipelines . 73 of 79 | unity .com© 2021 Unity Technologies 2D Shader Graph 2D pipeline The URP also includes a 2D Renderer . If you’re building a sprite-based game, this includes tools specifically designed to help you create a 2D experience: —2D Lights can take a variety of shapes (Freeform, Sprite, Parametric, Point, and Global) . These can interact with normal map and mask Textures when applied as a Secondary Texture in the Sprite Editor . This helps to create advanced lighting effects . 2D Lights in the Lost Crypt sample project —Shader Graph includes Lit and Unlit Sprite Masternodes . These streamline the node input, so you can pass in the appropriate Sample Texture2D nodes in order to render in 2D . —The 2D Pixel Perfect package contains the Pixel Perfect Camera component, which ensures your pixel art remains crisp and clear at different resolutions, and stable in motion . We recommend that you start with one of the available 2D demos, such as the Lost Crypt and Dragon Crashers 2D sample projects . These should inspire you on how to assemble the 2D tools into a real-time experience . 74 of 79 | unity .com© 2021 Unity Technologies Worldbuilding Your games will need some levels . These tools can help . ProBuilder and Polybrush Unity includes an add-on package called ProBuilder, a streamlined 3D modeling and level design tool . Use ProBuilder to quickly prototype structures or to make custom collision geometry, trigger zones, or nav meshes . This is optimized for building simple geometry and greyboxing your game levels . Polybrush gives you the ability to sculpt meshes, blend textures, paint vertex colors, and scatter objects over your levels . Together with ProBuilder, you have a complete suite of tools for level design . Roundtrip with your DCC package of choice (Maya, Blender, etc .) to further refine your models . Terrain tools For complex natural 3D environments, the Unity Editor includes a built-in set of Terrain tools (available as a package in Unity 2021 .2 and above) that allow you to add landscapes to your game . In the Editor, you can create multiple Terrain tiles, adjust the height or appearance of your landscape using brush based tools, and add trees or grass to it . Unity Terrain tools 75 of 79 | unity .com© 2021 Unity Technologies 2D Tilemap and Sprite Shape Working in 2D? Create large grid-based worlds, including hexagonal and isometric environments, with Tilemap . This system stores and handles Tile Assets for creating 2D levels . Then, you can set up a Tile Palette and use a variety of Brushes to paint your 2D Tilemaps . Sprite Shape gives you the freedom to create rich free-form and organic 2D environments with a visual and intuitive workflow . The tool works by dynamically tiling sprites along spline paths based on a given set of angle ranges . Sprites tiling on the spline automatically deform, and the tool swaps sprites based on the outline angle . The SpriteShape tool lets you create organic 2D environments . 76 of 79 | unity .com© 2021 Unity Technologies Unity Asset Store The Unity Asset Store offers a variety of assets, from textures, animations, and models to entire project examples, tutorials, and Editor extensions . Both Unity Technologies and members of the community create assets and publish them to this active marketplace . You can download asset packages directly into your Unity project with the Package Manager . To access the Asset Store online, log into your Unity account, then shop a variety of 2D, 3D, and scripting assets: —The Templates section enables you to download various tutorials and starter packs . —Audio has a library of sound files that you can use to enrich the user experience of your project, including ambient, music, voice, and sound effects . —The 2D and 3D sections feature plenty of environments, props, and characters in all art styles and genres to fill out your game levels . —Browse for Tools and Editors if you’re short on development time . —Discover systems for enhanced functions, from AI to Visual Scripting . Importing an asset Once you purchase a free or paid asset, it should appear on your Unity account . In the Package Manager (Window > Package Manager), filter for My Assets, then download and import any assets associated with your account into the current project . Become a publisher You can become a publisher on the Asset Store to sell your creations (3D models, Editor extensions, audio, and more) and add a new stream of revenue while you’re working on your game . To get started, create an Asset Store Publisher account, check out the Submission Guidelines, and follow the Asset Store Provider Agreement . Submit your content using the Sell Assets page . The Asset Store third-party asset marketplace 77 of 79 | unity .com© 2021 Unity Technologies Learning resources Take advantage of Unity’s extensive documentation and learning resources to help you dive deeper into development . Documentation The Unity Manual and Scripting API are the most complete guides to Unity . The Manual documentation covers virtually every feature and tool, and we’re constantly updating . Packages have their own documentation microsites . You can always access the latest version from the Unity Manual or access a specific package version’s documentation using the Package Manager window . Unity Learn Everyone has access to over 750 hours of free on-demand and live learning resources at Unity Learn . There, you can ask questions, get tips, and work through real-world projects with help from Unity experts and fellow creators . Unity Blog The Unity Blog is a source for timely news, updates, and software releases, with short, readable articles covering everything from emergent technology to community events to intimate chats with Unity game creators . Whether you’re an artist, programmer, technical artist, or designer, the blog offers tips and insights from the community to help you upskill . Professional training Unity Professional Training now offers access to over 200 hours of training content with On-Demand Training . An annual subscription unlocks full access to curated courses, bite-sized video content, assessments, course challenges, and certificates . Our experienced instructional designers created these materials in partnership with our engineers and product teams . This means that your team is always receiving the most up-to-date training on the latest Unity tech . See the course catalog to get started . Unity Professional Training 78 of 79 | unity .com© 2021 Unity Technologies Next steps We hope this guide is useful in your discovery of how Unity can help you reach your creative destination . Don’t forget that getting there is half the fun . Unity offers tools and services to make sure you are supported throughout your game development journey, from big idea to big success . If you’re ready to dive in deeper, you can get started with Unity Pro today or talk to one of our experts to learn how we can assist you . unity .com
---
# Unknown
© 2025 Unity Technologies ⟶ E-BOOK Create modular game architecture in Unity with ScriptableObjects Contents Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 What are ScriptableObjects? . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 ScriptableObjects versus MonoBehaviours . . . . . . . . . . . . . . .10 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Callbacks and messages . . . . . . . . . . . . . . . . . . . . . . . . . .12 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 YAML ain’t markup language . . . . . . . . . . . . . . . . . . . . . . .14 Creation and lifecycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Destroying ScriptableObjects . . . . . . . . . . . . . . . . . . .16 Data containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 ScriptableObject data versus persistent data . . . . . . . . .20 Reducing duplicate data . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Design patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Refactoring example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 Code conventions in this guide . . . . . . . . . . . . . . . . .24 Custom Inspectors . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 Architectural benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 ScriptableObject variables . . . . . . . . . . . . . . . . . . . . .29 Dual serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Protect your data . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 The Extendable enums pattern . . . . . . . . . . . . . . . . . . . . . . . .34 Enum-like categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Extending behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 Pattern: Delegate objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Delegates versus events . . . . . . . . . . . . . . . . . . . . . . .39 ScriptableObjects methods . . . . . . . . . . . . . . . . . . . . . . . .40 Modifying ScriptableObject data . . . . . . . . . . . . . . . .41 Pluggable behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 Gameplay AI with ScriptableObjects . . . . . . . . . . . . . . . . .43 Example: Audio delegates . . . . . . . . . . . . . . . . . . . . . . . . .43 The glorious ScriptableObject revolution . . . . . . . . . . . . .44 The Observer pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 Avoiding singletons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 ScriptableObject-based events . . . . . . . . . . . . . . . . . . . . .47 Example: Event channels . . . . . . . . . . . . . . . . . . . . . . . . . .49 System .Action or UnityAction . . . . . . . . . . . . . . . . . . . . . .49 Debugging event channels . . . . . . . . . . . . . . . . . . . . . . . . .54 Example: InputReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 Static versus non-static events . . . . . . . . . . . . . . . . . . . . .58 The Command pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 ScriptableObjects or C# classes? . . . . . . . . . . . . . . . . . . .63 The Runtime Set pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Basic Runtime Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Generic version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67 Fun facts about foo and bar . . . . . . . . . . . . . . . . . . . . . . . .69 Explore the sample project . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 More resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 Technical e-books from Unity . . . . . . . . . . . . . . . . . . . . . .73 From Unite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 More project examples . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 For game designers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 Professional training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 © 2025 Unity Technologies5 of 75 | unity.com Introduction You will often hear ScriptableObjects described as “data containers.” That label, however, doesn’t quite do them justice. Applied correctly, ScriptableObjects can also help you speed up your Unity workflow, reduce memory usage, and simplify your code architecture. This guide assembles tips and tricks from professional developers for deploying ScriptableObjects in production. These include examples of how to apply them to specific design patterns and how to avoid common pitfalls. ScriptableObjects can help promote clean coding practices by separating data from logic. They make it easier to make changes without causing unintended side effects, improving testability and modularity . Because you can work with them interactively in the Editor, you’ll discover that ScriptableObjects are especially useful for collaboration between programmers and non- programmers, such as artists and designers. In this guide we will cover several techniques and ways to leverage Scriptable Objects. We hope that some of these can complement your existing workflow and streamline your project setup. Let’s explore the unsung hero of game architecture, the humble ScriptableObject. © 2025 Unity Technologies6 of 75 | unity.com What are ScriptableObjects? A ScriptableObject is a Unity object that’s not part of a GameObject instance. You can use it to create a custom class with its own variables and methods, but with less overhead than a MonoBehaviour. A ScriptableObject does not have a Transform and exists outside of the Scene Hierarchy. Instead, it lives at the project level as an asset, much like a material or 3D model. You can declare a ScriptableObject like this: \[CreateAssetMenu(fileName="MyScriptableObject")\] public class MyScriptableObject: ScriptableObject { public int someVariable; } As you can see in the code above rather than deriving from MonoBehaviour, you inherit from ScriptableObject . You can’t use this directly on a GameObject. Instead, the CreateAssetMenu attribute gives you an extra action in your menus . © 2025 Unity Technologies7 of 75 | unity.com Introduction | What are ScriptableObjects? | ScriptableObjects versus MonoBehaviours | Navigate to Assets > Create > MyScriptableObject (or right-click in the Project window), and you can instantiate a custom asset from your ScriptableObject class. Creating a ScriptableObject Any other script can then reference this ScriptableObject asset from any scene, using a field: public class MyMonoBehaviour : MonoBehaviour { public ScriptableObject soInstance; } ScriptableObjects are especially useful for anything that doesn’t need to change at runtime. © 2025 Unity Technologies8 of 75 | unity.com Introduction | What are ScriptableObjects? | ScriptableObjects versus MonoBehaviours | Because Unity treats ScriptableObjects as first-class objects, you can: —Store them in variables —Dynamically create or destroy them at runtime —Pass them as arguments —Return them from a method —Include them in data structures —Serialize/deserialize them This last bullet point highlights one of ScriptableObjects’s key features: the ability to appear in the Inspector. This means that its fields are easy to read and modify in the Editor. Change values in a ScriptableObject at runtime, and your game application updates immediately. Exit Play mode, and those values remain in place. This makes them useful for game designers who need to balance game settings without having to write code. As a plus, ScriptableObjects can often store changes while the application is running. This offers a few advantages over using MonoBehaviours alone. Serialization Serialization is the automatic process of transforming data structures or object states into a format that’s easier to store and reconstruct later. Unity’s serialization backend takes data that’s scattered over memory and then lays it out sequentially. This reorganized data stream then can be stored in a database, a file, or memory. “Deserialization” is the reverse process. Serialization is the process of converting an object into a stream of bytes to store the object or transmit it to memory, a database, or a file . © 2025 Unity Technologies9 of 75 | unity.com Introduction | What are ScriptableObjects? | ScriptableObjects versus MonoBehaviours | Although memory layout is easy to overlook in C# development, we should be aware of several built-in Unity features that use serialization: —Saving and loading: If you open a .unity scene file with a text editor and have set unity to “force text serialization,” the serializer is run with a YAML backend . —The Inspector window: This interface doesn’t talk to the C# API to figure out the values of whatever it’s inspecting. Instead, it asks the object to serialize itself and displays the serialized data. —Prefabs: Internally, a prefab is the serialized data stream of GameObjects and components. A prefab instance is a list of modifications that should be made on top of the serialized data. —Instantiation: When you instantiate a prefab (or a GameObject that lives in the scene), you serialize the object, create a new object, and then deserialize the data onto the new object. For more information about serialization in Unity, see this blog post or watch “How Unity’s Serialization system works .” © 2025 Unity Technologies10 of 75 | unity.com ScriptableObjects versus MonoBehaviours On the surface, ScriptableObjects are simple. The API sports only a few methods. In this case, that’s a good thing. Simplicity means less can go wrong. Unity Object UML Like MonoBehaviour, the ScriptableObject class derives from UnityEngine.Object class . © 2025 Unity Technologies11 of 75 | unity.com | What are ScriptableObjects? | ScriptableObjects versus MonoBehaviours | Data containers | Comparison Probably the best way to understand ScriptableObjects is to compare them with their siblings, MonoBehaviours. This chart breaks down their similarities and differences. MonoBehaviourScriptableObject MonoBehaviours and ScriptableObjects are both scripts . MonoBehaviour and ScriptableObject classes derive from UnityEngine.Object. MonoBehaviours receive callbacks from Unity. Connect your methods to the game engine’s player loop by naming them according to MonoBehaviour’s event functions like Update(). e.g., Start, Awake, Update, OnEnable, OnDisable, OnCollisonEnter ScriptableObjects do not receive most Unity lifecycle callbacks from Unity like Update, Start or FixedUpdate . ScriptableObjects support a limited number of event functions, including Awake, OnEnable, OnDestroy, and OnDisable at runtime. The Editor also calls OnValidate and Reset from the Inspector. You can create other methods on a ScriptableObject, but the player loop does not invoke them automatically. MonoBehaviours must be attached to GameObjects at runtime . If you create one at runtime, use the AddComponent API . ScriptableObjects are not attached to any specific GameObject . Save ScriptableObjects into their own asset files at the Project level. Then, reference the ScriptableObject asset from a Monobehaviour or other script. When we do save them, we save MonoBehaviours data into Scenes and prefabs . Each ScriptableObject instance can be saved into its own file at the Project level . In the Editor, changes to MonoBehaviour values reset when exiting Play mode. In the Editor, changes to ScriptableObject values do not reset when exiting Play mode. In a standalone build, changes to ScriptableObject values at runtime are not saved . MonoBehaviours and ScriptableObjects are both serializable and can be viewed in the Inspector . © 2025 Unity Technologies12 of 75 | unity.com | What are ScriptableObjects? | ScriptableObjects versus MonoBehaviours | Data containers | Callbacks and messages ScriptableObjects have a subset of the event functions available to MonoBehaviours. You can create your own methods in your ScriptableObjects too, but you need to call them yourself. The table below shows only the methods that will be called automatically in the PlayerLoop . Event function (runtime) When it executes AwakeThis is called as the ScriptableObject script starts, similar to MonoBehaviour’s Awake callback . This also executes when the game is launched or if a scene loads with a reference to the ScriptableObject asset. OnEnableThis is called when the ScriptableObject is loaded or instantiated, immediately after the Awake callback. OnEnable executes during the ScriptableObject.CreateInstance or after successful script recompilation . OnDisableThis is called when the ScriptableObject goes out of scope. This happens if you load a Scene without references to the ScriptableObject asset or right before the ScriptableObject’s OnDestroy. Unity also executes OnDisable before script recompilations. When entering Play mode, OnDisable runs right before OnEnable. OnDestroyThis is called when something destroys the ScriptableObject, either deleting it in the Editor or from code. If you’ve created the ScriptableObject at runtime, OnDestroy also invokes when the application quits or if the Editor exits Play mode. Note: This only destroys the native C++ part of the object. See Lifecycle and Creation for more information. Editor-only functio ns When it executes OnValidateOnValidate executes when the script is loaded or a value changes in the Inspector. This can be used to ensure that your data stays within a certain range. ResetReset invokes when you hit the Reset button in the Inspector context menu. To destroy a ScriptableObject, remove it from the Editor or call Destroy/DestroyImmediate at runtime . Here’s a brief overview of a ScriptableObject’s event functions and life cycle. Compare this with the order of execution of MonoBehaviour event functions, starting from the top. © 2025 Unity Technologies13 of 75 | unity.com | What are ScriptableObjects? | ScriptableObjects versus MonoBehaviours | Data containers | ScriptableObject event functions and execution order Files One of their biggest differences between MonoBehaviours and ScriptableObjects is how they save their data. Unity serializes MonoBehaviours within either a Scene or a prefab file. The saved data contains: —The MonoBehaviour itself —The attached GameObject —Its Transform —Any other components and MonoBehaviours on the attached GameObject ScriptableObject versus MonoBehaviour In contrast, Unity saves ScriptableObjects into their own asset files. These files are smaller and more compartmentalized than MonoBehaviours. © 2025 Unity Technologies14 of 75 | unity.com | What are ScriptableObjects? | ScriptableObjects versus MonoBehaviours | Data containers | If you choose to use Mode: Force Text in the Project Settings > Asset Serialization window, you can open a ScriptableObject asset in a text editor. It might look something like this: A ScriptableObject instance, serialized as text YAML ain’t markup language Unity uses a high performance serialization library that implements a subset of the YAML specification. This is a lightweight, easy-to-read language related to XML and JSON. In YAML, data is organized as a hierarchy of nested elements. Each object has a Class ID, File ID, and object type. Note that ScriptableObjects use “MonoBehaviour” as their object type, instead of defining their own. An object header in YAML Under each object are its serialized properties, represented by key-value pairs. For more information, read the blog post “Understanding Unity’s serialization language, YAML”. © 2025 Unity Technologies15 of 75 | unity.com | What are ScriptableObjects? | ScriptableObjects versus MonoBehaviours | Data containers | Creation and lifecycle The lifecycle of a ScriptableObject is similar to that of any other asset (materials, textures, and so on) in your project. As in the previous example, apply the \[CreateAssetMenu\] attribute to your script in order to add a custom menu action to the Editor. You can optionally specify the default fileName or menu item order. The following code is the most common way to create a ScriptableObject asset . If you need to make a ScriptableObject instance at runtime, you can call the static CreateInstance method: \[CreateAssetMenu(fileName="MyScriptableObject"\] public class MyScriptableObject: ScriptableObject { public int SomeVar; } ScriptableObject.CreateInstance(); © 2025 Unity Technologies16 of 75 | unity.com | What are ScriptableObjects? | ScriptableObjects versus MonoBehaviours | Data containers | Once you have the knack of creating and destroying your own ScriptableObjects, it’s time to explore some creative ways to use them in your game application. Destroying ScriptableObjects Like other Unity objects, a ScriptableObject consists of a native C++ portion, as well as a C# managed portion. You can destroy the native C++ directly, but the managed part remains until the asset garbage collector (GC) clears it. The GC cleanup occurs if you change scenes or call Resources .UnloadUnusedAssets . ScriptableObjects have both a native and managed side. Explicitly set any references to the ScriptableObject asset to null to avoid delaying garbage collection . Note: It’s important to do this before calling Destroy or DestroyImmediate. Otherwise, the reference to the object may be nominally marked “null” in the Editor, even if it isn’t really null. GC cleanup only happens once there are no more references to the ScriptableObject . © 2025 Unity Technologies17 of 75 | unity.com Data containers The most common use for ScriptableObjects is as data containers for shared static data, particularly for game configuration data that doesn’t change at runtime. Typical use cases of ScriptableObjects may include: —Inventories like item type, icon, rarity, effects —Enemy, player, or item statistics like health, damage, speed, AI parameters —Audio collections like audio clip groups for footsteps, UI sounds, or ambient loops —Config Files like difficulty settings, progression curves, spawn tables —Dialogue data At runtime, you could store this data on MonoBehaviours, but doing so can be inefficient. As you saw in the previous comparison, MonoBehaviours carry extra overhead since they require a GameObject – and by default a Transform – to act as a host. That means that you need to create a lot of unused data before storing a single value. © 2025 Unity Technologies18 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | To see for yourself, generate a new GameObject with an otherwise empty MonoBehaviour. Then, open the serialized object in a text editor and it will look something like this: A new GameObject with a barebones MonoBehaviour © 2025 Unity Technologies19 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | Compare that with an empty ScriptableObject and you see its notably leaner: A ScriptableObject reduces overhead for storing data. The ScriptableObject slims down this memory footprint and drops the GameObject and Transform which can have a significance at large scale commercial projects. It also stores the data at the project level. That can be helpful, especially if you need to access the same data from multiple scenes . The extra data from a MonoBehaviour might not impact your application’s performance at first, but as your game grows to commercial scale, with many more objects, it will become noticeable . © 2025 Unity Technologies20 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | ScriptableObject data versus persistent data When ScriptableObjects are referred to as data containers, this usually refers to static or shared configuration data that does not need to change at runtime in a permanent way. While changes to ScriptableObject data do persist within the Editor (much like modifying a material or a prefab), these changes won’t save at runtime in an application build. Any changes made to a ScriptableObject instance during gameplay exist only in memory and are lost when the session ends. Persistent data that needs to be saved from one session and then loaded into another is typically stored in a different file format (e.g., JSON, XML, MessagePack, Protocol Buffers, and so on). See Dual Serialization below for more details. It’s possible to change ScriptableObject data at runtime (e.g., ScriptableObject variables and Runtime Sets) in the game build, but these changes are temporary. Starting a new game session will revert the ScriptableObject data back to its original state at build time. Think of ScriptableObject data as “read-only” for persistent data purposes. Persistent data should be “read-write” and stored externally. Reducing duplicate data Imagine you have a thousand GameObjects with custom MonoBehaviours, each with several fields . If each component holds its own copy of these values, you’re duplicating a lot of data in memory. This is inefficient, especially when the data is identical across instances and doesn’t change at runtime. Many objects with duplicate, local data leads to performance inefficiencies. © 2025 Unity Technologies21 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | Instead of duplicating this static data, you can funnel it into a ScriptableObject. Then, each of the thousand objects can point to this shared data asset. Each object stores a reference to the data rather than copying the data itself. Many objects sharing data via a ScriptableObject In software design, this is an optimization known as the flyweight pattern . Restructuring your code in this way avoids copying a lot of values and reduces your memory footprint. Design patterns Design patterns can help developers create more maintainable and flexible code, which can be useful in the often-changing world of game development. Download the free e-book Level up your code with design patterns and SOLID for more about SOLID principles and design patterns . A reference to the ScriptableObject (instead of a full copy of the data) is comparatively small. As you scale up, the memory savings from not duplicating data can become significant. © 2025 Unity Technologies22 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | The Memory Profiler compares memory usage of duplicate (A) versus shared data (B). You can store large quantities of shared data in this manner. Consider ScriptableObjects for: —Saving and storing data during an Editor session —Saving data as an Asset for use at runtime Unlike MonoBehaviours, ScriptableObjects can’t be attached to a GameObject. Instead, you save them as assets in your project. This is especially useful if you have a prefab that uses unchanging data in its MonoBehaviours. © 2025 Unity Technologies23 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | Refactoring example Consider a MonoBehaviour that controls an NPC’s health. You might define its class like this: public class NPCHealthUnrefactored : MonoBehaviour { \[Range(10, 100)\] public int MaxHealth; \[Range(10, 100)\] public int HealthThreshold; public int CurrentHealth; } This works, but you have data that you won’t expect to change at runtime. If you have many objects with NPCHealthUnrefactored attached, this can lead to a lot of unnecessarily duplicated data . An NPCHealth MonoBehaviour before refactoring © 2025 Unity Technologies24 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | Any data that does not need to change can move it into a ScriptableObject: \[CreateAssetMenu(fileName="NPCConfig")\] public class NPCConfigSO : ScriptableObject { \[Range(10, 100)\] public int maxHealth; \[Range(10, 100)\] public int healthThreshold; } Use the CreateAssetMenu attribute to configure the menu action. You can optionally specify the default fileName or menu item order . Code conventions in this guide Many of the code samples in this guide are simplified for illustrative purposes and easier readability (e.g., public fields). In production, use private fields and public properties for additional encapsulation and flexibility. Apply the SerializeField attribute to private fields to make them appear in the Editor’s Inspector. A naming convention can also help differentiate scripts for ScriptableObjects from MonoBehaviours. One way to achieve this is to add a “Data” or “SO” suffix at the end of the class name. While this isn’t necessary, it can help keep your project organized and reduce ambiguity . It’s recommended that you maintain and follow a code style guide as your codebase grows . See Create a C# style guide (Unity 6 edition) for more information . Then the refactored NPCHealth component simplifies to this: public class NPCHealth: MonoBehaviour { // Reference to our ScriptableObject public NPCConfigSO Config; public int CurrentHealth; } © 2025 Unity Technologies25 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | The MonoBehaviour now contains a reference to this new ScriptableObject. In the Inspector, everything after refactoring looks similar, except the data is split. Refactoring splits data between a MonoBehaviour and ScriptableObject Custom Inspectors When separating data into a ScriptableObject, you have data contained in two places, the ScriptableObject asset and the MonoBehaviour referencing it. To make your MonoBehaviours easier to navigate, consider creating a custom editor. Below is an example for the NPCHealth. A custom Inspector shows the ScriptableObject’s variables in the MonoBehaviour. © 2025 Unity Technologies26 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | This allows you to inspect the NPCConfig’s variables alongside the other properties in the MonoBehaviour. If you select the original NPCHealth prefab, you can easily edit values in both objects. A custom editor requires only a few lines of code: —Derive a new class from Editor, and store this in a folder named “Editor.” Apply the CustomEditor attribute with the NPCHealth type . —Reserve a temporary editor for the NPCConfig ScriptableObject. —In OnInspectorGUI, create the editor for the NPCHealth component. —Draw the inspectors from the base class and new custom Inspector. using UnityEditor; \[CustomEditor(typeof(NPCHealth))\] public class NPCHealthEditor : Editor { private Editor editorInstance; private void OnEnable() { // Reset the editor instance editorInstance = null; } public override void OnInspectorGUI() { // The inspected target component NPCHealth npcHealth = (NPCHealth)target; if (editorInstance == null) editorInstance = Editor.CreateEditor(npcHealth.config); // Show the variables from the MonoBehaviour base.OnInspectorGUI(); © 2025 Unity Technologies27 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | You can expand on this example with custom property drawers and editor attributes. This can even make for a better user experience when working with ScriptableObjects. // Draw the ScriptableObjects inspector editorInstance.DrawDefaultInspector(); } } Architectural benefits With ScriptableObjects, you can cleanly separate shared and unshared data. Anything unique and dynamic to the GameObject instance remains inside the MonoBehaviour, while the shared data is stored in the ScriptableObject. Architecture with ScriptableObjects, however, goes beyond just saving memory. There are a few benefits to restructuring the code architecture: —Designers can work more independently from software developers: Storing data and logic on a single MonoBehaviour creates the potential for developers and game designers to step over each other’s work. If two people change different parts of the same prefab or scene, this results in a time-wasting merge conflict. Breaking off shared data into smaller files and assets reduces these problems. Architecting with ScriptableObjects also enables designers to build gameplay without always relying on a programmer. © 2025 Unity Technologies28 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | Just be prepared to define a clear workflow between your teams when sharing data. Good communication and establishing some boundaries can help prevent issues here. Some extra error checking or data validation may be necessary as well (e.g., use a Range attribute or OnValidate to prevent bad values). —Editing shared data is faster and less error-prone: Changes to the shared data now happen all at once. If you need to modify a setting for your NPCs, for example, you could adjust it in just one location, and have it propagate the changes for every affected component in every scene. This reduces any potential errors from mass editing a large number of individual GameObjects by hand. Offloading data into ScriptableObjects can also help with version control and prevent merge conflicts when teammates work on the same scene or prefab. —Save gameplay tweaks in Play mode: Play mode in the Editor is an opportunity for designers to experiment with gameplay and settings. However, any modifications made to MonoBehaviours are lost when exiting Play mode because Unity discards the temporary copy of the scene. Because the ScriptableObjects are assets, changes to their values are saved regardless of whether Unity is in Play mode. This can be useful if you want to make adjustments at runtime . This can, however, also be a liability if you want to revert those changes. Just remember to rely on Unity Version Control or another version control system, so you can always restore your work if necessary. See the guide Version control and project organization best practices (Unity 6 edition) for more information . —Improve scene loading times: When saving a scene or prefab, Unity serializes everything inside of them. That includes every GameObject, every component attached to those GameObjects, and every public field. Unity does this without checking for duplicate data . Moving data to ScriptableObjects can reduce your scene and prefab sizes which can noticeably impact loading and saving. © 2025 Unity Technologies29 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | ScriptableObject variables You can make your shared data containers even more granular with a ScriptableObject representing just one value. For instance, you could create a ScriptableObject class called IntVariable that holds one public field called value: Then, you could use the IntVariable in a MonoBehaviour. Structuring a PlayerHealth class would then look like this: Though we normally think of ScriptableObjects as holding unchanging values, you can give them methods that update this data at runtime (and reset to an initial value when exiting Play mode). In this way, you can make ScriptableObjects that essentially function as variables – containing integers, floats, booleans, and so on. Your designers can then reserve data for game logic without needing a software developer each time they want to do it. However, this requires planning to be successful. Decide with your designers how to divide authoring gameplay data. The key is to set some boundaries on how to collaborate. For example, the programming team might do the initial setup of ScriptableObjects for use with an inventory system. Then, the design team could use those to fill in each item’s in-game stats or behaviors. With some extra Editor scripting, this can become a near-seamless experience. Another possibility is making the fields in the Inspector toggle between using a shared value from a ScriptableObject and a constant. This can allow the game design team greater freedom to override the ScriptableObject data per instance. using UnityEngine; \[CreateAssetMenu(menuName = "Variables/Int", order = 1)\] public class IntVariableSO : ScriptableObject { public int value; } public class PlayerHealth : MonoBehaviour { public IntVariableSO health; } © 2025 Unity Technologies30 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | Example of a ScriptableObject-based IntVariable from the open source Unity Atoms project See the Game architecture with ScriptableObjects presentation from Unite Austin for how to implement this behavior in your own projects. You can also download the open source Unity Atoms project to see a working implementation of ScriptableObject variables. Dual serialization You can mix how to serialize data within Unity. This allows you to work with ScriptableObjects in the Editor, but then store their data in another location, such as a JSON or XML file. This allows you to take advantage of each format’s strengths. File formats like JSON and XML are suitable for storing persistent data, such as save game data or settings, but can be difficult to work with in the Editor; however, they’re easy to modify outside of Unity with any text editor. In contrast, ScriptableObjects work well in the Editor and can be swapped with a quick drag- and-drop operation. However, they aren’t easy to modify outside of Unity or share within your community of players . Mixing serialized formats could open up new possibilities for your game, such as level editing or modding. At build time, a script can convert the other files into ScriptableObjects, which is faster to load than plain text. While you’ll want to keep some sensitive data safely tucked away on your servers (e.g., virtual currency, account information), exposing part of your game data to the community may enhance gameplay by allowing sandbox levels for user experimentation. © 2025 Unity Technologies31 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | Imagine a ScriptableObject that defines your game level layout. It may simply contain a number of Transforms that define placement of prefabs, starting configurations, and so on. Your game scripts will use this data to assemble each level. Imagine the walls and starting positions of a game, stored within a ScriptableObject: \[CreateAssetMenu(fileName ="LevelLayout")\] public class LevelLayout : ScriptableObject { public Vector3\[\] wallPositions = new Vector3\[2\]; public Vector3\[\] playerPositions = new Vector3\[2\]; public Vector3\[\] goalPositions = new Vector3\[2\]; public Vector3 ballPosition; } This defines how you set up the level. Your level management scripts can read the data from the LevelLayout object, then instantiate your prefabs in their correct positions. A custom script can use JsonUtility to export this same data to disk. This results in a text file outside of the Editor that your users can modify with external tools. To load a custom modded level, ScriptableObject.CreateInstance can generate a ScriptableObject at runtime. Then, read the text from the JSON file to populate the ScriptableObject. This LoadLevelFromJson example method shows that in action: using System.IO; public class LevelManager : MonoBehaviour { public ScriptableObject levelLayout; public void LoadLevelFromJson(string jsonFile) { if (levelLayout == null) { levelLayout = ScriptableObject. CreateInstance(); } var importedFile = File.ReadAllText(jsonFile); JsonUtility.FromJsonOverwrite(importedFile, levelLayout); } } © 2025 Unity Technologies32 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | Your custom data replaces the contents of the ScriptableObject and allows you to use this externally modded level like any other in your game. The application is none the wiser. Be sure to see this work for yourself in the sample project. If we load a modified JSON file, this customized level overrides the default level data on the ScriptableObject. Mix serialized formats for more flexibility Note: When deserializing JSON into ScriptableObjects with JsonUtility, you must use the FromJsonOverwrite method. Instead of creating a new object and loading the JSON data into it, JsonUtility loads the JSON data into an existing object. This updates the values stored in classes or objects without any allocations . © 2025 Unity Technologies33 of 75 | unity.com | ScriptableObjects versus MonoBehaviours | Data containers | The Extendable enums pattern | Protect your data The simple mod example described above demonstrates one possible application of ScriptableObjects. However, when exposing game data for modification, you should exercise caution to avoid players tampering with the rest of your application. Here are common ways to protect anything that you don’t want modded: —Encryption: Use encryption to protect data files from being easily read or modified . This can make it more difficult for users to alter critical data. —Digital signatures: You can use a fingerprint algorithm to verify that your data files have not been tampered with. —Server-side validation: If your game relies on data that is stored on a server, check the data on the server before it is used in the game, and reject any data that appears to have been manipulated. No single approach is foolproof, and it’s generally a good idea to use a combination of these techniques so your players don’t introduce any bugs or vulnerabilities into your game . © 2025 Unity Technologies34 of 75 | unity.com The Extendable enums pattern Game development often requires the task of solving recurring or similar problems. Fortunately, you can tap into the collective knowledge of software engineers who’ve already “been there and done that” with design patterns . Design patterns are general solutions that can help you build larger, scalable applications. They can improve code readability and make your codebase cleaner. Design patterns reduce refactoring and the time spent testing. Think of a design pattern as template for solving common issues like: —Storing a lot of data efficiently —Getting objects from different game systems to speak to each other —Swapping out behavior on the fly at runtime ScriptableObjects can help implement some of these patterns. You’ve already seen how they can function as data containers, but they can do more than simply save values or settings. The next few sections explore how you can go beyond using ScriptableObjects to save data. Enum-like categories In fact, ScriptableObjects actually don’t have to contain anything at all to be useful. If you create an empty ScriptableObject, you’ll discover that it still has utility, even if it’s only used for comparing against other ScriptableObjects. © 2025 Unity Technologies35 of 75 | unity.com | Data containers | The Extendable enums pattern | Pattern: Delegate objects | In your game application, suppose you make a number of assets from an empty GameItemSO ScriptableObject, like so: Using UnityEngine; \[CreateAssetMenu(fileName="GameItem")\] public class GameItemSO : ScriptableObject { } Empty ScriptableObjects work as enums. This allows you to generate any number of assets within the project. Even without containing any data, the ScriptableObject itself can represent a category or item type, similar to an enum. Do two variables refer to the same ScriptableObject? Then they’re the same item type. Otherwise, they’re not. So, you could have a ScriptableObject that defines special damage effects (e.g., cold, heat, electrical, magic, and so on) or rock-paper-scissors designations from your favorite zero-sum game . Comparing ScriptableObjects © 2025 Unity Technologies36 of 75 | unity.com | Data containers | The Extendable enums pattern | Pattern: Delegate objects | If your application requires an inventory system to equip gameplay items, ScriptableObjects can represent item types or weapon slots. The fields in the Inspector then function as a drag- and-drop interface for setting them up. Drag and drop ScriptableObject-based categories This artist-friendly UI allows your designers how to modify and extend gameplay data without extra support from a developer. Giving the design team the means and responsibility of maintaining gameplay data allows everyone to focus on what they do best. Extending behavior Using ScriptableObjects as enums becomes more interesting when you want to extend them by adding more data. Unlike normal enums, ScriptableObjects can have extra fields and methods. Here’s the adapted rock-paper-scissors GameItem. The ScriptableObject asset itself still defines the enum-like category, but this time it’s no longer empty. © 2025 Unity Technologies37 of 75 | unity.com | Data containers | The Extendable enums pattern | Pattern: Delegate objects | public class GameItem : ScriptableObject { public GameItem weakness; public bool IsWinner(GameItem other) { return other.weakness == this; } } The ScriptableObject now contains a weakness field that determines which other item wins in a potential interaction. In addition to storing data, each ScriptableObject also contains simple comparison logic in IsWinner . Each gameplay item then needs a MonoBehaviour that references a specific ScriptableObject asset. This example works as a controller script: public class GameItemController : MonoBehaviour { // rock, paper, scissors public GameItem gameItem; private void OnTriggerEnter(Collider other) { GameItemController otherController = other.GetComponent(); GameItem otherGameItem = otherController.gameItem; if (gameItem.IsWinner(otherGameItem)) { Debug.Log(gameItem.name + " beats " + otherGameItem.name); } } } © 2025 Unity Technologies38 of 75 | unity.com | Data containers | The Extendable enums pattern | Pattern: Delegate objects | It references a ScriptableObject as a field. In OnTriggerEnter, you can check the IsWinner method to see which emerges victorious when the gameItem comes in contact with another. This sets the stage for some Rochambeau-like conflict . Unlike enums, ScriptableObjects are easy to extend. There’s no need to have a separate lookup table or to correlate with a new array of data. Simply add an extra field and/or method to handle the logic. ScriptableObjects with comparison logic Source: Flatticon Compare that with maintaining a traditional enum. If you have a long list of enum values without explicit numbering, inserting or removing an enum can change their order. This reordering can introduce subtle bugs or unintended behavior. ScriptableObject-based enums have no such issues. Add more to your project (or delete existing ones), and everything just works. Suppose you wanted to make the item equippable in an RPG. You could append an extra boolean field to the ScriptableObject to do that. Are certain characters not allowed to hold certain items? Are some items magical or have special abilities? ScriptableObject-based enums can do that. Your gameplay data can thus evolve as you work to implement the game design. While you’ll need to coordinate how to set up fields initially, later the designers can fill out the details independently . © 2025 Unity Technologies39 of 75 | unity.com Pattern: Delegate objects ScriptableObjects in Unity aren’t just for storing data; you can also put methods in them, meaning they can hold both what to do (logic) and what to use (data). Delegates versus events Delegates and events are closely related concepts in C#, but they serve different purposes. A delegate is a type that defines a method signature. This allows you to pass methods as arguments to other methods. Think of it like a variable that holds a reference to a method, instead of a value. An event, on the other hand, is essentially a special type of delegate that allows classes to communicate with each other in a loosely coupled way. Events are explored in more detail in the Pattern: Observer chapter. For general information about the differences between delegates and events, see Distinguishing Delegates and Events in C# . The idea is that if you need to perform specific tasks, you encapsulate the algorithms for doing those tasks into their own objects. The original Gang of Four refers to this general design as the strategy pattern . Suppose you want a pathfinding object that calculates a route through a maze. The object itself wouldn’t actually contain any pathfinding logic. Instead, it just keeps a reference to another object that does. © 2025 Unity Technologies40 of 75 | unity.com | The Extendable enums pattern | Pattern: Delegate objects | The Observer pattern | If you want to solve the maze with a specific path search technique (e.g., A\*, Dijkstra, etc.), implement the correct solution within this separate “strategy” object. At runtime, you can then swap to a different algorithm by exchanging objects. ScriptableObjects methods In Unity, one way to implement this pattern is to have a MonoBehaviour reference a ScriptableObject containing the necessary logic. When the MonoBehaviour performs a task, it calls the external methods on the ScriptableObject rather than its own. However, there a few limitations to this: —Methods on a ScriptableObject won’t be called automatically from the MonoBehaviour’s player loop (like Start(), Update(), and OnCollisionEnter()). You need to call them yourself . —Like prefabs, ScriptableObjects can’t reference scene objects directly. If they need to perform work on a scene object, you’ll need to pass that object in as a parameter. When calling the ScriptableObject’s methods, a MonoBehaviour can often pass in itself as the argument or pass in any other dependencies. This gives you the flexibility to execute logic, run coroutines, etc. even though the ScriptableObject exists at the project level. © 2025 Unity Technologies41 of 75 | unity.com | The Extendable enums pattern | Pattern: Delegate objects | The Observer pattern | ScriptableObjects can contain pluggable implementations of behavior or logic. For example, you can define several enemy units in a game with different movement behavior. Let’s suppose some of them need to patrol, stand idle, or flee from the player. A single EnemyUnit MonoBehaviour can reference a EnemyAI ScriptableObject that contains a method called MoveUnit. The EnemyUnit script itself doesn’t contain any movement or behavior logic. It only executes the ScriptableObject’s MoveUnit at the appropriate time. If the method needs data from the scene, the EnemyUnit object can pass in a reference to itself as a parameter. Any other necessary dependencies in the scene can be passed in as well. Modifying ScriptableObject data At runtime, you actually can change ScriptableObject data, but be careful whenever doing so. Multiple Monobehaviour sharing the same ScriptableObject can cause problems if they modify the same data. Remember that you can create an instance of a ScriptableObject at runtime to avoid this issue. The initial ScriptableObject then acts like a template with all the logic and data. Each MonoBehaviour can then make its own instance of that ScriptableObject which can be modified freely . © 2025 Unity Technologies42 of 75 | unity.com | The Extendable enums pattern | Pattern: Delegate objects | The Observer pattern | Pluggable behavior You can make this pattern more useful by defining the EnemyAI ScriptableObject as an abstract class. This allows it to act as a template for a variety of ScriptableObjects that are compatible with the EnemyUnit MonoBehaviour, so the abstract ScriptableObject can stand in for more than one algorithm. Pluggable behaviors can change at runtime or in the Editor. Thus, you could have concrete ScriptableObject classes for behaviors like Patrol, Idle, or Flee that derive from the base EnemyAI. Even though they all implement the same MoveUnit method, each can produce very different results. In the Editor, each asset is interchangeable. You can just drag and drop the ScriptableObject of choice into the EnemyAI field. Any compatible ScriptableObject is “pluggable” in this fashion. © 2025 Unity Technologies43 of 75 | unity.com | The Extendable enums pattern | Pattern: Delegate objects | The Observer pattern | The EnemyUnit or another component can behave as the “brain” that monitors when to switch ScriptableObjects and also swap behavior at runtime. This is one way the EnemyUnit can react to gameplay events like transitioning from a patrolling to a fleeing state. Simply switch EnemyAI ScriptableObjects on each state change. In production, a second developer or designer can implement the actual movement or AI logic within the ScriptableObject. As additional movements or behaviors get added to the game (e.g., DuckAndCover, Chase, etc.), the original EnemyUnit script remains unchanged. This pattern can help keep your codebase more extensible, in keeping with the open-closed principle from SOLID programming. Because everything is already split into smaller objects, the resulting project is more scalable as you add team members or as game design changes. Gameplay AI with ScriptableObjects For a more detailed example of using ScriptableObjects to drive behavior, see the Pluggable AI With Scriptable Objects video series. These recorded live sessions demonstrate a finite state machine-based AI system that can be configured using ScriptableObjects for states, actions, and transitions between those states. Example: Audio delegates The behavior contained in the ScriptableObject does not necessarily need to be complex. It can be something as basic as playing back a customized sound. Here’s an example of a “sound delegate” ScriptableObject that can help add variations to your AudioClips. The AudioDelegateSO defines an abstract class with a Play method that takes an AudioSource as a parameter . using UnityEngine; using Random = UnityEngine.Random; using System; \[Serializable\] public struct RangedFloat { public float MinValue; public float MaxValue; } public abstract class AudioDelegateSO: ScriptableObject { public abstract void Play(AudioSource source); } © 2025 Unity Technologies44 of 75 | unity.com | The Extendable enums pattern | Pattern: Delegate objects | The Observer pattern | This concrete SimpleAudioDelegate ScriptableObject can then select a random clip from the available choices and vary its volume and pitch during playback. This reduces the monotony of repeating the same sound. \[CreateAssetMenu(fileName ="AudioDelegate")\] public class SimpleAudioDelegateSO : AudioDelegateSO { public AudioClip\[\] Clips; public RangedFloat Volume; public RangedFloat Pitch; public void Play(AudioSource source) { if (clips.Length == 0 || source == null) return; source.clip = clips\[Random.Range(0, Clips.Length)\]; source.volume = Random.Range(Volume.minValue, Volume.maxValue); source.pitch = Random.Range(Pitch.minValue, Pitch.maxValue); source.Play(); } } Any MonoBehaviour can then use a ScriptableObject instance derived from the AudioDelegateSO class. You can also make variations of the AudioDelegate for different audio effects . Having methods on a ScriptableObject opens up several possibilities. In addition to performing actions, its methods can send messages to any object in the scene. Next, let’s look at a ScriptableObject-based event system with the observer pattern. The glorious ScriptableObject revolution Richard Fine’s Overthrowing the MonoBehaviour tyranny in a glorious ScriptableObject revolution presentation at Unite 2016 lay the foundation for much of this e-book. Part of the demo (called AudioEvent in the original project) has been modified for this example. See the sample project for implementation details and an example using ScriptableObjects . © 2025 Unity Technologies45 of 75 | unity.com The Observer pattern When developing a game, it’s common to have multiple GameObjects that need to share data or states with each other. In a small game, you can make direct references between these objects, but this doesn’t scale very well. Managing these dependencies can require significant effort and is often a source of bugs . You’ll need a better solution as your application grows in size . Avoiding singletons Many developers opt to use singletons – one global instance of a class that survives scene loading. Singletons, however, introduce global states and make unit testing difficult. If you’re working with a prefab that references a singleton, you’ll end up importing all of its dependencies just to test an isolated function. This reduces modularity and makes your code harder to debug. As an alternate solution you can use ScriptableObject-based events to help your objects communicate . © 2025 Unity Technologies46 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | More on singletons The subject of singletons in Unity game development is often cause for debate. Singletons can be a suitable solution for smaller projects or prototyping. In large applications, the cons of using singletons often outweigh their advantages. Many developers consider the singleton to be an anti-pattern for this reason. Singletons are easy to learn and understand but can introduce issues when they’re used incorrectly. Most of the patterns described here will help you avoid relying on singletons. If you want easy access to shared data, consider a Runtime Set based on ScriptableObjects (see below). If you need a way to send messages between objects, try a ScriptableObject-based event channel. Restructuring your architecture away from singletons may improve scalability and testability. Read the e-book Level up your code with design patterns and SOLID to learn more about the pros and cons of singletons. © 2025 Unity Technologies47 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | ScriptableObject-based events As you’ve already seen, ScriptableObjects aren’t just for handling data. They can contain methods, just like any other script. These methods can serve as a means for objects to communicate . In the observer design pattern, a subject broadcasts a message to one or more loosely coupled observers. Each observing object can react independently of the subject but is unaware of the other observers. The subject can also be referred to as the “publisher” or “broadcaster.” The observers are also known as “subscribers” or “listeners.” An event-based architecture only executes when needed, rather than running each frame. For this reason, it’s often more optimized than adding logic to a MonoBehaviour’s update methods. The basic observer pattern You can implement the observer pattern with MonoBehaviours or C# objects. While this is already common practice in Unity development, a script-only approach means your designers will rely on the programming team for every event needed during gameplay. An alternative is to create ScriptableObject-based events. This is a designer-friendly way to set up the observer pattern. Here, the ScriptableObject works as an intermediary between subject and observer, providing a graphical interface in the Editor. © 2025 Unity Technologies48 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | The ScriptableObject-based event channel While at first glance it appears that you’ve only added a layer of overhead to the observer pattern, this structure offers some advantages. Because ScriptableObjects are assets, they are accessible to all objects in your Scene Hierarchy and don’t disappear on scene loading. This is why many developers use singletons in the first place: easy, persistent access to certain resources. ScriptableObjects can often provide the same benefits without introducing as many unnecessary dependencies . In ScriptableObject-based events, any object can serve as publisher (which broadcasts the event), and any object can serve as a subscriber (which listens for the event). The ScriptableObject sits in the middle and helps relay the signal, acting like a centralized intermediary between the two. One way to think about this is as an “event channel.” Imagine the ScriptableObject as a radio tower that has any number of objects listening for its signals. An interested Monobehaviour can simply subscribe to the event channel and respond when something happens. © 2025 Unity Technologies49 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | Example: Event channels Any ScriptableObject that includes the following can function as an event channel: —A delegate (UnityAction or System.Action): This notifies subscribers and passes the appropriate data as parameters. Use a UnityAction for a more artist-friendly experience; otherwise, the System.Action delegate works well here. The event keyword limits the delegate so that it can only be invoked from within the ScriptableObject class (or derived class where it’s declared). —An event-raising method: This public method invokes the delegate. And that’s it. You can set up any number of event channels to determine various aspects of gameplay. Because they exist at the project level, ScriptableObjects can raise events that are globally accessible. This can connect otherwise unrelated objects in the scene in a scalable way. System.Action or UnityAction System .Action is a general purpose delegate type defined in the .NET Framework’s System namespace. It can be used in your Unity projects without needing to declare a custom delegate. Adding the event keyword makes the delegate type read only; other objects can listen for the delegate’s registered methods, but they can’t invoke those methods directly. UnityAction is a delegate type that’s specifically defined within the UnityEngine.Events namespace. You will typically use it with the UnityEvent class, which is an alternative means of creating events in Unity. UnityEvents and UnityActions appear in the Inspector, so they often serve as a more user- or artist-friendly way to implement the observer pattern . In general, you can use either System.Action or UnityAction, depending on your specific needs. You have the option of deploying either or both in the same project. If you want a more general purpose delegate that is not tied to the Unity game engine, use System.Action. If you want a delegate specifically designed for UnityEvents, use UnityAction . © 2025 Unity Technologies50 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | Here, you can make a VoidEventChannelSO that raises an event without passing any parameters. This one contains a UnityAction named OnEventRaised . \[CreateAssetMenu(menuName = "Events/Void Event Channel")\] public class VoidEventChannelSO : ScriptableObject { public event UnityAction OnEventRaised; public void RaiseEvent() { if (OnEventRaised != null) OnEventRaised.Invoke(); } } Once you create a ScriptableObject of type VoidEventChannelSO, any MonoBehaviour can listen for OnEventRaised. For example, we can make a StartNewGame ScriptableObject that is of type VoidEventChannelSO . Another object can invoke the public RaiseEvent method to trigger the event. A ScriptableObject-based event, an example of an event channel Another MonoBehaviour can reference the event channel ScriptableObject in the Inspector, then subscribe/unsubscribe to OnEventRaised . © 2025 Unity Technologies51 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | This invokes StartNewGame as a response whenever the event channel calls OnEventRaised: public class StartGame : MonoBehaviour { \[SerializeField\] private VoidEventChannelSO m\_onNewGameButton = default; private void Start() { m\_onNewGameButton.OnEventRaised += StartNewGame; } private void OnDestroy() { m\_onNewGameButton.OnEventRaised -= StartNewGame; } private void StartNewGame() { // load level logic here... } } For more artist- or designer-friendly listening components, you could instead create a MonoBehaviour that doesn’t require any script setup. This VoidEventListener class doesn’t add extra functionality but has fields that are accessible in the Inspector: public class VoidEventListener : MonoBehaviour { \[SerializeField\] private VoidEventChannelSO m\_channel = default; public UnityEvent OnEventRaised; private void OnEnable() { if (m\_channel != null) m\_channel.OnEventRaised += Respond; } © 2025 Unity Technologies52 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | private void OnDisable() { if (m\_channel != null) m\_channel.OnEventRaised -= Respond; } private void Respond() { if (OnEventRaised != null) OnEventRaised.Invoke(); } } Simply add the VoidEventListener to a GameObject, then drag the event channel ScriptableObject into the \_channel field in the Inspector. Create UnityActions on the OnRaisedEvent in order to respond to the event. An Event Listener allows a nonprogrammer to set up event-driven actions. Regardless of which component you choose to listen for events, the event channels provide a means of communicating between your objects at runtime. Did the player complete a task or score a point? Is the game over? An event can notify any GameObject in the scene that needs that information. Because they are assets at the project level, ScriptableObject-based events can then drive much of the infrastructure of your application. This is especially useful for sending messages between the different systems that underpin the game architecture. © 2025 Unity Technologies53 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | Some common management systems include: —Audio management: Many things in your game can trigger sounds. This system can play AudioClips or adjust the AudioMixer in response to application events. —Scene management: This system handles loading and unloading of Unity scenes and game levels. —UI management: This is responsible for menu screens before, during, and/or after gameplay . —Save Data management: This handles saving and loading game data, as well as settings to your file system . These systems all specialize in different tasks, but they need to talk to one another. Events can form the glue that keeps them connected. Explore the accompanying sample project for more examples of how to implement your own ScriptableObject-based events. The sample project’s GameManager uses event channels. Note that you can send different types of data with each event, using different event payloads. For example, the ScriptableObject-based events include IntEventChannelSO, a Vector2EventChannelSO, a VoidEventChannelsSO, and so on. The event used will depend on the context. Customize additional event types according to gameplay. For instance, a damage event may need to pass along who inflicted the damage and how much was done. © 2025 Unity Technologies54 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | How you deploy these event channels is limited only by your creativity. In addition to the core systems above, events can often help join very different in-game systems so that they can interact: —Cameras: These are used to add dramatic or cinematic effects, such as shaking or cutting to a different perspective. —Quests: These are tasks or objectives that the player must complete in order to progress through the game or receive a reward. Quests often involve a variety of gameplay elements, such as fetching items, defeating enemies, or solving puzzles. —Health: This important aspect of many games connects the player, enemies, and any objects or actions that can cause damage to the player. —Achievements: Like quests, these are special rewards that players can unlock by completing certain tasks or objectives within the game. Achievements can span different gameplay elements, such as reaching a certain level or accumulating a certain number of points. These gameplay elements, in turn, will interact with other management systems, such as audio, UI, and save data, through the use of events. This approach promotes modularity and independence within each component of the architecture while still allowing for communication with other systems. Debugging event channels A custom Editor or property drawer can create a “Raise Event” button in the Inspector. This can help you manually invoke the event for debugging. For example, here’s a basic Editor script that creates a custom Inspector button for the VoidEventChannelSO: \[CustomEditor(typeof(VoidEventChannelSO))\] public class VoidEventChannelSOEditor : Editor { public override void OnInspectorGUI() { DrawDefaultInspector(); VoidEventChannelSO eventChannel = (VoidEventChannelSO)target; if (GUILayout.Button("Raise Event")) { eventChannel.RaiseEvent(); } } } © 2025 Unity Technologies55 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | This creates a button that allows you to raise the event at will, making it easier to diagnose issues at runtime . A custom Editor button can help test event channels. With a little more work, you can make buttons for event channels that carry data as well. Reserve a field for a debug value in the event channel itself, then pass this to the Editor script. You can find examples of how to implement this in the SOAP or Unity Atoms projects. As you continue using event channels for object decoupling, consider developing debugging tools, such as keeping a record of all listeners for each event. The event channel class can have methods to subscribe and unsubscribe objects, making it easier to identify which events are causing specific behaviors during runtime. Example: InputReader Objects that listen for user input need a specialized type of event channel. Unity’s Input System uses InputActions to represent raw input data as logical concepts (e.g., jump, walk, etc.). Each InputAction, in turn, includes its own started, performed, and canceled events. © 2025 Unity Technologies56 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | Setting up Actions and Action Maps in the Input System Editor In order to decipher the InputAction bindings, you can create a special InputReader ScriptableObject. Again, this acts as an intermediary between the subject and observers. In this case, however, MonoBehaviours won’t raise the events explicitly. Instead, the Input System takes the place of the subject or broadcaster: A ScriptableObject InputReader relays events from InputActions. Here, we set up Actions and ActionMaps in the Input System. Each InputAction describes a separate axis of input and binds to the keyboard, gamepad, or whatever input device you like to use . © 2025 Unity Technologies57 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | Rather than directly subscribing to the InputActions themselves, the paddle controllers listen for the OnMoveP1.performed event and OnMoveP2.performed events, respectively. The InputReader insulates objects from direct dependency on the inputs. The resulting InputReader standardizes how your GameObjects will process gamepad or keyboard actions. Any GameObject that needs input: —Maintains a reference to the InputReader ScriptableObject —Subscribes to the relevant events and connects its event-handling methods While this pattern may be overkill for a smaller game, we demonstrate this to make the concept easier to digest . The benefits won’t be apparent until your project grows and you add many more components. Decoupling the inputs from the GameObjects consuming them gives added flexibility and reusability . If you have to modify the InputActions during development, you only need to maintain the InputReader itself. The listening objects are unaffected if the events don’t need to change. Thus, maintaining the connection from input to observers becomes less work – especially when you have a lot of observers. © 2025 Unity Technologies58 of 75 | unity.com | Pattern: Delegate objects | The Observer pattern | The Command pattern | Static versus non-static events You can choose to use static events to ease the burden of locating the ScriptableObject on the listening objects. For example, a MonoBehaviour could subscribe to the InputReader’s static MoveP1Event and MoveP2Event events in its OnEnable method: InputReader.MoveP1Event += OnMoveP1; InputReader.MoveP2Event += OnMoveP2; When using static events, be extra diligent when managing subscriptions. Don’t forget to unsubscribe in OnDisable: InputReader.MoveP1Event -= OnMoveP1; InputReader.MoveP2Event -= OnMoveP2; Static events will always be reachable and won’t be collected by the garbage collector if they have active subscribers. Any dangling subscribers will prevent their cleanup for the duration of your application . Static events, however, aren’t serializable. If you want to work interactively in the Editor, choose non-static events and make sure you reference the appropriate ScriptableObject in the Inspector. © 2025 Unity Technologies59 of 75 | unity.com The Command pattern Instead of invoking a method directly, the command pattern allows you to encapsulate one or more method calls as a “command object.” © 2025 Unity Technologies60 of 75 | unity.com | The Observer pattern | The Command pattern | The Runtime Set pattern | Then, you store these command objects in a collection, like a queue or a stack, which works as a small buffer. This gives you extra flexibility to control each command object’s execution. Common applications include playing back a series of actions with specific timing or making those actions undoable. You’ve likely encountered this in some of your favorite game genres: —In a real-time strategy game, the command pattern could be used to queue up actions of units and buildings. The game would then execute each building command as resources became available or as a series of movement actions for the unit. —In a turn-based strategy game, the player could select a unit and then store its moves or actions in a queue or other collection. At the end of the turn, the game could execute all of the commands in the player’s queue. —In a puzzle game, the command pattern could allow the player to undo and redo actions. —In a fighting game, reading button presses or gamepad motions in a specific command list could perform combos and special moves. You can use ScriptableObjects to implement the command pattern. For example, you could create a command to define a Transform’s movement. Wrapping each action within a separate object results in extra control. You’ll define an interface ICommand an Execute method and an Undo method (you could also use an abstract class): public interface ICommand { public abstract void Execute(); public abstract void Undo(); } © 2025 Unity Technologies61 of 75 | unity.com | The Observer pattern | The Command pattern | The Runtime Set pattern | Then, have a ScriptableObject implement the ICommand interface. Each Command object fills out its own Execute and Undo methods with its own implementation details. Implementing the command pattern with a ScriptableObject A MonoBehaviour or ScriptableObject can then define a command buffer that will contain the command objects. This can be a collection, such as a list, stack, array, or queue. A CommandManager maintains a collection of ICommand objects. © 2025 Unity Technologies62 of 75 | unity.com | The Observer pattern | The Command pattern | The Runtime Set pattern | This simple structure lets you execute the commands in sequence. Imagine a tutorial or cutscene that moves a GameObject through a prescribed set of actions or animations. The command pattern is well suited for that. Because each command is a separate object, it’s easy to reorder them. Just decide how you want to maintain the CommandBuffer: —If creating it as a stack, you push commands to the stack when executing them. When undoing an action, you can pop it off and keep a separate redo stack. —If you’re using a list or array, track the current Command’s index, then increment or decrement the index as you need to undo or redo commands. See the MoveCommandSO and CommandManager classes in the sample project for one example of undoable movement. Here, a rudimentary tutorial scene labels parts of the game board to explain how to play. Click the Next button to advance through the explanatory text. Likewise, click the Back button to cycle in reverse through the instructions. A simple implementation of the command pattern. You can find out more about the command pattern in the e-book Level up your code with design patterns and SOLID. Also, see this community post, Command pattern with ScriptableObjects, which demonstrates this pattern with ScriptableObjects. © 2025 Unity Technologies63 of 75 | unity.com | The Observer pattern | The Command pattern | The Runtime Set pattern | ScriptableObjects or C# classes? When deciding on the right code architecture for your project, it’s important to consider the skills and preferences of your team, as well as your game’s performance requirements. While some designers may prefer to use the Unity Editor interactively, others may prefer to work entirely in C# code. Take these factors into account when creating a codebase that’s easy for everyone on your team to work with. Of course, no design pattern is a one-size-fits-all solution, and it’s important to carefully evaluate the pros and cons of each before implementing it. Remember that the “right” code architecture is just the one that works best for your team and your project. © 2025 Unity Technologies64 of 75 | unity.com The Runtime Set pattern At runtime, you’ll often need to track a list of GameObjects or components in your scene. For example, you may need to maintain a list of enemies or NPCs. Because a ScriptableObject instance appears at the project level, it can store data that’s available to any object from any scene. Again, this replicates much of the easy global access of a singleton without that pattern’s known drawbacks. Reading data directly from a ScriptableObject is also more optimal than searching the Scene Hierarchy with a find operation such as Object.FindObjectOfType or GameObject. FindWithTag. Depending on your use case and the size of your hierarchy, these are relatively expensive methods that can be inefficient for per-frame updates. Basic Runtime Set Instead, consider storing data on a ScriptableObject as a “Runtime Set.” This is a specialized data container that maintains a public collection of elements but also provides basic methods to add and remove to the collection. © 2025 Unity Technologies65 of 75 | unity.com | The Command pattern | The Runtime Set pattern | Explore the sample project | A Runtime Set provides global access to a collection of data. Here’s a basic Runtime Set that tracks a list of GameObjects: using System.Collections.Generic; using UnityEngine; \[CreateAssetMenu(menuName = "GameObject Runtime Set", fileName = “GORun- timeSet”)\] public class GameObjectRuntimeSetSO : ScriptableObject { private List items = new List(); public List Items => items; public void Add(GameObject thingToAdd) { if (!items.Contains(thingToAdd)) items.Add(thingToAdd); } © 2025 Unity Technologies66 of 75 | unity.com | The Command pattern | The Runtime Set pattern | Explore the sample project | public void Remove(GameObject thingToRemove) { if (items.Contains(thingToRemove)) items.Remove(thingToRemove); } } At runtime, any MonoBehaviour can reference the public Items property to obtain the full list. Another script or component must be responsible for managing how the GameObjects are added or removed from this list. A GameObject Runtime Set Reference the Runtime Set in a MonoBehaviour. Then, in the OnEnable and OnDisable event functions, add or remove the object from the Runtime Set’s Items list. Alternatively, use an event channel to send a GameObject as its payload (e.g., GameObjectEventChannel). © 2025 Unity Technologies67 of 75 | unity.com | The Command pattern | The Runtime Set pattern | Explore the sample project | Generic version You may want to use a Runtime Set with a specific type of MonoBehaviour. For instance, this could allow you to maintain a list of enemy or pickup items accessible to anything in your scene. In that case, you could create specific Runtime Sets for each type (e.g., EnemyRuntimeSet, PickupRuntimeSet, etc.). One way to streamline the creation of additional Runtime Sets is to use a generic abstract class: public abstract class RuntimeSetSO : ScriptableObject { \[HideInInspector\] public List Items = new List(); public void Add(T thing) { if (!Items.Contains(thing)) Items.Add(thing); } public void Remove(T thing) { if (Items.Contains(thing)) Items.Remove(thing); } } This works similarly to the original GameObjectRuntimeSet but with added flexibility. If you wanted to create a Runtime Set for a custom Foo component, you would create a concrete FooRuntimeSetSO like so: \[CreateAssetMenu(menuName = "Foo Runtime Set", fileName = "FooRuntime- Set")\] public class FooRuntimeSetSO : RuntimeSet { } © 2025 Unity Technologies68 of 75 | unity.com | The Command pattern | The Runtime Set pattern | Explore the sample project | Build as many concrete classes as needed for gameplay (e.g., enemies, NPCs, inventory items, quests, and more can all have their own Runtime Sets). You just need to declare a new empty class with the right type. As an alternative to using events, each Foo component can add or remove itself using its OnEnable or OnDisable methods. Then, if you set the FooRuntimeSet field in the Inspector, the Foo component will appear in the Runtime Set automatically. This is especially handy if you’re using the Foo component with prefabs. public class Foo : MonoBehaviour { public FooRuntimeSetSO RuntimeSet; private void OnEnable() { RuntimeSet.Add(this); } private void OnDisable() { RuntimeSet.Remove(this); } } Note: One limitation of this technique is that if you inspect the ScriptableObject at runtime, you won’t be able to see the contents of the Runtime Set list in the Inspector. If you try to publicly expose the list in the Inspector, you’ll see this: Runtime Sets won’t show scene objects or components in the Inspector. © 2025 Unity Technologies69 of 75 | unity.com | The Command pattern | The Runtime Set pattern | Explore the sample project | By default, a “Type mismatch” appears in each element field since a ScriptableObject won’t be able to serialize a scene object. The list works normally, but the data does not display correctly. Use a public property or the HideInInspector attribute if you want to avoid confusion and prevent the list from showing in the Inspector. You can also fix this issue with a custom Editor script and Inspector. For a good example of this, see SOAP (ScriptableObject Architectural Pattern) on the Asset Store. A custom Editor in SOAP shows the contents of a Runtime Set. Fun facts about foo and bar The terms foo and bar are common placeholder names in programming. These terms were likely chosen because they are short, easy to remember, and sound distinctive. While their exact origins are unclear, some people believe that the terms originated from radar operators in World War II. The nonsense word “foo” also appeared as a catchphrase in a 1930’s comic strip . In a programming context, their use is generally credited to the Tech Model Railroad Club at MIT circa the 1960s. The MIT train room had two general-purpose buttons by the door labeled “foo” and “bar.” MIT hackers often repurposed these names for their ideas, hence the adoption of foo and bar as general variable names.Today, the use of foo and bar as dummy variable names is a widespread convention in the programming community. © 2025 Unity Technologies70 of 75 | unity.com Explore the sample project Accompanying this guide is a sample project for you to work with and learn about ScriptableObjects. Inspired by classic ball and paddle game mechanics, this project is a great opportunity to see how ScriptableObjects can improve the architecture of your Unity project. By following SOLID principles and using techniques often employed in larger projects, you can demonstrate how ScriptableObjects can help to restructure your code. The sample project © 2025 Unity Technologies71 of 75 | unity.com | The Runtime Set pattern | Explore the sample project | Conclusion | Here, you will have the chance to see how ScriptableObjects can be applied, and gain a better understanding of how they can be used to improve the efficiency and organization of your projects. The sample includes many of the patterns explored in this guide: —Data containers: Shared settings data is extracted as ScriptableObjects. Then, gameplay settings or common states are stored as assets in the project. Also, you can change the initial level layout by swapping ScriptableObjects. —Extendable enums: Empty ScriptableObjects function as enums to categorize different players . —Delegate objects: A simple audio delegate shows how you can randomize the ball’s collision sounds just by swapping ScriptableObjects. Objectives are also ScriptableObjects that plug into the game management system for determining win-lose conditions . —Event channels: The observer pattern helps you set up game events for UI, sounds, and scoring. Different GameObjects can subscribe to different “event channels,” similar to tuning in to a specific radio broadcast . —Dual serialization: Some game data is stored like the level layout in ScriptableObjects for ease of use in the Editor but with the option to save it as JSON files. Externally modded JSON data can then rebuild a ScriptableObject, which works with the original setup script . Of course, the game itself is not the main focus of this sample. A paddle-and-ball arcade game can be built with far fewer lines of code. Instead, the idea with the sample project is to demonstrate how ScriptableObjects can help you create components that are testable and scalable, while still being designer-friendly. © 2025 Unity Technologies72 of 75 | unity.com Conclusion ScriptableObjects can be a versatile addition to your toolset. Think of these design patterns as extra possibilities for organizing your Unity development. Note that you can achieve many of the techniques in this guide using C# classes instead of ScriptableObjects, and there will always be developers who prefer to do this in some scenarios. However, the Unity Editor provides the convenience of viewing and editing ScriptableObjects more easily. This can help your artistic and design teams interface with your project, instead of having everything being controlled through code. Do your designers want to set up gameplay data without constant support from the software team? If so, then maybe Scriptable Objects have a place in your project. Of course, not using a pattern can be just as valuable as using one. What may seem like a natural fit for one application may not be for another. Evaluate the advantages and disadvantages of a pattern before deploying it. There are no hard-and-fast rules for how to structure your Unity project. Balance the skill sets and personal preferences of your team with your code architecture. Then, you can focus on the important thing: making your game an engaging experience for your players . © 2025 Unity Technologies73 of 75 | unity.com More resources Documentation —The ScriptableObject Scripting API —ScriptableObjects Manual page Technical e-books from Unity Related to design patterns and coding in Unity —Level up your code with design patterns and SOLID contains an introduction to SOLID development and design patterns in Unity. —Create a C# style guide (Unity 6 edition) covers some of the best practices when setting up your project. Other best practice guides —Advanced best practice guides in Unity documentation —Unity best practices hub © 2025 Unity Technologies74 of 75 | unity.com | Explore the sample project | Conclusion | More resources From Unite —Overthrowing the MonoBehaviour tyranny in a glorious ScriptableObject revolution —Game Architecture with ScriptableObjects For general information about code architecture, we also recommend: —From Pong to 15-person project More project examples These community project examples show extensive use of ScriptableObjects in their architecture: —The Tanks Demo presentation from Unite, by Richard Fine, uses ScriptableObjects to customize audio, pluggable AI, and destructible buildings. —Ryan Hipple, a senior full stack game engineer at Meta, has a GitHub project that illustrates much of his Unite Austin presentation. You can also read his corresponding blog post . —Soap (Scriptable Object Architectural Pattern) on the Asset Store implements many of the patterns described in this e-book and adds many quality of life features when working with Scriptable Objects. —The Unity Atoms project is an open source library that makes extensive use of ScriptableObjects. Read this page to get started with it. —The Reactive Menu System uses ScriptableObjects to build a UGUI system to handle UI state changes and menu management. —The Unity Open Project (Chop Chop) heavily relies on ScriptableObjects and manages gameplay with event channels. For game designers Christo Nobbs, a senior technical game designer who specializes in systems game design and Unity (C#), was a contributor to The Unity game designer playbook, as well as the main author of a short series of blog posts on designing game systems in Unity: —Systems that create ecosystems: Emergent game design —Unpredictably fun: The value of randomization in game design —Animation curves, the ultimate design lever © 2025 Unity Technologies75 of 75 | unity.com | Explore the sample project | Conclusion | More resources Professional training Unity Professional Training offers both online and in-person training to give you and your team additional skills and knowledge to work more productively, and collaborate efficiently, in Unity. Learn more about Unity Professional Training here . unity .com
---