Na vijf maanden ontwikkeling is de release van de gratis game-engine Godot 4.2 gepubliceerd, geschikt voor het maken van 2D- en 3D-games. De engine ondersteunt een eenvoudig te leren scriptingtaal voor game-logica, een grafische omgeving voor game-ontwerp, een one-click game-deploymentsysteem, uitgebreide mogelijkheden voor animatie en simulatie van fysieke processen, een ingebouwde debugger en een systeem voor prestatie-analyse. De code van de game-engine, de ontwerpsomgeving en aanverwante ontwikkelingshulpmiddelen (fysieke engine, geluidsserver, backends voor 2D/3D-rendering, enz.) worden verspreid onder de MIT-licentie.
De broncode van de engine werd in 2014 vrijgegeven door studio OKAM, na tien jaar ontwikkeling van een professioneel niveau van een propriëtaire product dat werd gebruikt voor het maken en publiceren van veel games voor PC, spelconsoles en mobiele apparaten. De engine ondersteunt alle populaire desktop- en mobiele platforms (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), evenals de ontwikkeling van games voor het Web. De opgeladen binaire builds zijn samengesteld voor Linux, Android, Windows en macOS.
Belangrijkste wijzigingen:
- Voor ontwikkelaars van 2D-games is ondersteuning voor gedwongen gehele getal-scaling toegevoegd, waardoor een vierkant pixelgrid kan worden verkregen, ongeacht de werkelijke beeldverhouding. Er is de mogelijkheid toegevoegd om barycentrische coördinaten van de normale uit de snijpunten van een object met een straal te verkrijgen. De methoden Rotate_toward en Angle_difference zijn toegevoegd voor correcte verwerking van rotatie en hoeken. Aan de knooppunten Line2D is een eigenschap 'closed' toegevoegd voor het maken van gesloten lijnen met continu vulling.

- Er is gewerkt aan het verbeteren van de betrouwbaarheid van het animatiesysteem. De knooppunten AnimationPlayer en AnimationTree zijn herontworpen en geharmoniseerd, waarbij de gemeenschappelijke delen zijn samengevoegd in een tussenklasse AnimationMixer. Er is een optie toegevoegd voor deterministische mixage. In de animatie-preview is een modus voor 'onion skinning' toegevoegd, waarmee semi-transparante overlays van voorafgaande en volgende animatieframes kunnen worden weergegeven.

- De mogelijkheden voor 'baking' van de navigatienetwerken (baking, conversie naar statische vorm) voor 2D zijn benaderd tot de mogelijkheden die eerder beschikbaar waren in 3D-navigatie, bijvoorbeeld voor 2D-netwerken is ondersteuning gerealiseerd voor het werken met fysieke lichamen, exemplaren van polygoonnets, eenvoudige polygonen en tegelkaarten (tilemap). In servers De 2D- en 3D-navigatie heeft ondersteuning gekregen voor multi-threaded baking van meshes.

- De code voor het werken met tiles en tile maps is herzien. De groepering van blokken en de sortering langs de Y-as zijn geoptimaliseerd, wat de update-tijd van de tiles aanzienlijk heeft verkort. Er is gewerkt aan het verbeteren van de gebruiksvriendelijkheid bij het maken en gebruiken van tile maps. Een hulpmiddel is toegevoegd voor het draaien en kantelen van tiles tijdens hun plaatsing. De tools voor het bewerken van polygonen en tile scènes zijn verbeterd.

- In de GDScript-scriptseditor is het nu mogelijk om genaamde codegebieden te maken voor het oprollen van blokken tijdens het bewerken en om de navigatie te vereenvoudigen. De debugger voor scripts heeft nu volledige ondersteuning voor multithreaded code, de uitvoerstapel en breakpoints. In C#/.NET-scripts is platformondersteuning voor Android (vereist .NET 7.0+) en iOS (vereist .NET 8.0) geïmplementeerd. In GDScript-scripts is de ondersteuning voor statisch getypeerde code uitgebreid en zijn er r-string (raw string) stringliteral ondersteuning en verbeterde match-operator functies toegevoegd.

- In de 3D viewport is de ondersteuning voor transformatiecontrole in Blender-stijl verbeterd, met gebruik van de muis en sneltoetsen. De uitgebreide visuele informatie in de 3D viewport wordt nu alleen weergegeven voor geselecteerde objecten. Extra indicatoren zijn toegevoegd voor elementen zoals decals en volumineuze mist. Het werken met gizmo's is verbeterd — elke zijde van volumetrische vormen kan nu afzonderlijk worden uitgerekt in het viewport.

- De contextmenu's en tooltip-beschrijvingen in de panelen 'Inspectie' en 'Signalen' zijn verbeterd. In de thema-editor zijn tooltips met beschrijvingen van eigenschappen toegevoegd. In het bestandsbeheer paneel is de mogelijkheid toegevoegd om mappen visueel te onderscheiden door ze verschillende kleuren toe te wijzen. De interface van de gradient resource-editor is herontworpen. In de textuurgebiededitor is het werken met alle ondersteunde resources, inclusief stijlen en atlas, genormaliseerd.

- In de assetbibliotheek is de weergave van zoekresultaten verbeterd en de optie toegevoegd om een andere map te selecteren voor de installatie van een add-on of resource.

- In de projectmanager is de plaatsing van de belangrijkste bedieningsonderdelen herzien en de interface voor het importeren van projecten is gemoderniseerd.

- De mogelijkheden voor het ontwikkelen van plugins voor de editor zijn uitgebreid. Toegang tot alle functionaliteit van de editor is verzekerd via de klasse EditorInterface. Handige methoden zijn geïmplementeerd voor directe toegang tot 2D- en 3D-weergaven. Er is een mogelijkheid toegevoegd om een dialoogvenster weer te geven met een waarschuwing voor niet-opgeslagen wijzigingen.
- De ontwikkeling van het experimentele extensiesysteem GDExtension is voortgezet, waarmee lage-level talen zoals C++ als scripts voor games kunnen worden gebruikt, zonder de engine opnieuw te bouwen en zonder wijzigingen in de code. Het is mogelijk geworden om GDExtensions te gebruiken bij export naar het web.
- De focusbeheer in de gebruikersinterface is gewijzigd. Er is een mogelijkheid geïmplementeerd om de focus over afzonderlijke tabbladen in de tabbladpaneel te verplaatsen, ook tijdens navigatie met het toetsenbord. Bij controle elementen (Control) is een methode toegevoegd voor het vinden van het volgende naastliggende focusbare element. De knooppunten voor grafieken (GraphEdit en GraphNode) zijn grondig herzien. De mogelijkheden voor het aanpassen van de werkbalk van de hoofd GraphEdit-knoop zijn uitgebreid.

- Er is een mogelijkheid toegevoegd om het type assetimport on-the-fly te wijzigen met automatische update van scènes en bronnen, zonder dat de editor opnieuw moet worden opgestart. De beschikbare importopties zijn uitgebreid en er is de mogelijkheid toegevoegd om de fysieke eigenschappen van geïmporteerde objecten, evenals schaduw- en zichtparameters, te wijzigen. Er is een mogelijkheid voor het previewen van animaties in het importdialoogvenster toegevoegd. De ondersteuning voor het importeren van assets uit Blender in GLTF-formaat is uitgebreid. Ondersteuning voor het importeren van afbeeldingen in KTX-formaat is toegevoegd.

- Er zijn optimalisaties doorgevoerd die gericht zijn op het verbeteren van de renderingprestaties. Voor een snellere werking op mobiele apparaten is de raster barrier gesplitst in vertex en fragment componenten. De generatie van ruisachtige texturen is versneld. Een voorlopige stap voor diepteberekening is toegevoegd. De laadtijd en compilatietijd van shaders zijn verminderd. De opslag van polygonale netwerken in het geheugen is geoptimaliseerd. Ondersteuning voor het comprimeren van polygonale netwerken is toegevoegd om de bandbreedte tijdens verzending te verminderen.
- Er is een mogelijkheid toegevoegd om eigen textuurobjecten te creëren (bijvoorbeeld het gebruik van compute shaders voor het maken van texturen met een watereffect).
- API toegevoegd voor het aanroepen van code in de render-thread, wat nodig kan zijn, bijvoorbeeld bij het synchroniseren van de compute shader met de rendering.
- Ondersteuning toegevoegd voor versie 2.2 van AMD FSR (FidelityFX Super Resolution), dat gebruik maakt van ruimtelijke opschaling en detailreconstructie-algoritmen om kwaliteitsverlies bij het schalen en omzetten naar een hogere resolutie te verminderen.
- Een nieuwe ruisonderdrukkingsmethode JNLM is voorgesteld, die gebruik maakt van lightmapping kaarten en compute shaders. JNLM is aanzienlijk sneller dan de eerder gebruikte OIDN (Open Image Denoise) ruisonderdrukbibliotheek, maar kan in sommige situaties kwalitatief inferieur zijn.
- Ondersteuning voor 2D-rendering in een uitgebreid dynamisch bereik (HDR) is toegevoegd aan de renderingmethoden Forward+ en Mobile, wat het mogelijk maakt om in 2D-spellen enkele 3D-effecten, zoals gloei, te implementeren. De Compatibility renderingmethode heeft ondersteuning gekregen voor driedimensionale schaduwen.
- Voor macOS en Windows is een nieuwe OpenGL-renderdriver voorgesteld, die gebruik maakt van de ANGLE-laag, die OpenGL-aanroepen naar de Direct3D 11 en Metal API vertaalt.
- Het particlesimulatiesysteem is herzien voor gemakkelijker onderhoud en uitgebreidere controle over de bewegingsparameters van de deeltjes. Bijvoorbeeld, nu kunnen snelheid en animatie worden geërfd, en het aantal uitgezonden deeltjes kan worden aangepast. Een tool is toegevoegd voor het omzetten van CPU-gebaseerde deeltjesgeneratiecode naar equivalente GPU-gebaseerde code.
- Ondersteuning toegevoegd voor het gebruik van native bestandsdialoogvensters voor Linux, macOS en Windows, evenals de mogelijkheid om afbeeldingen te kopiëren en plakken via het klembord.
- De architectuur van Godot voor het Android-platform is herzien, waarbij de binding aan de Android-component Fragment is verwijderd, wat resulteert in een kortere opstarttijd voor applicaties en games, en de mogelijkheid om met meerdere vensters te werken.
- Officiële Linux-versies van de Godot-editor zijn opgezet voor 32- en 64-bit ARM-platforms.
Bron: opennet.ru











