Na vier jaar ontwikkeling is de gratis game-engine Godot 4.0 uitgebracht, geschikt voor het maken van 2D- en 3D-spellen. De engine ondersteunt een gemakkelijk te leren taal voor het programmeren van game-logica, een grafische omgeving voor het ontwerpen van games, een één-klik game-deploymentsysteem, uitgebreide mogelijkheden voor animatie en simulatie van fysieke processen, een ingebouwde debugger en een systeem voor het identificeren van prestatieknelpunten. De code van de game-engine, de ontwerpomgeving en de bijbehorende ontwikkeltools (fysieke engine, geluidsserver, back-ends 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.
De Godot 4.0 release bevat ongeveer 12.000 wijzigingen en 7.000 bugfixes. Ongeveer 1.500 mensen hebben bijgedragen aan de ontwikkeling van de engine en de documentatie. Enkele belangrijke wijzigingen zijn:
- Twee nieuwe render-backends (geclusterd en mobiel) zijn voorgesteld op basis van de Vulkan grafische API, die de backends vervangt die gebruik maakten van OpenGL ES en OpenGL voor rendering. Voor oudere en minder krachtige apparaten is een compatibiliteitsbackend op basis van OpenGL geïntegreerd, die een nieuwe renderarchitectuur gebruikt. Voor dynamische rendering met een lagere resolutie wordt gebruikgemaakt van de AMD FSR-technologie (FidelityFX Super Resolution), die algoritmes voor ruimtelijke schaling en detailreconstructie toepast om kwaliteitsverlies bij het schalen en omzetten naar een hogere resolutie te verminderen. Er is een rendering-engine ontwikkeld op basis van Direct3D 12, die de ondersteuning voor Windows- en Xbox-platformen zal verbeteren.

- De mogelijkheid om met een multi-window interface te werken is toegevoegd (verschillende panelen en interfaceelementen kunnen als afzonderlijke vensters worden losgekoppeld).

- Een nieuwe gebruikersinterface-editor en een nieuwe visuele ontwerpwizard zijn toegevoegd.

- Een nieuwe thema-editor is toegevoegd.

- Het systeem voor verlichting en schaduwen is volledig herschreven, waarbij gebruik is gemaakt van de realtime technologie voor globale verlichting SDFGI (Signed Distance Field Global Illumination). De kwaliteit van schaduwweergave is aanzienlijk verbeterd.

- De GIProbe-knoop, gebruikt voor het vullen van de scène met weerkaatst licht, is vervangen door de VoxelGI-knoop, die optimaal is voor het realtime verwerken van verlichting in scènes met kleine of middelgrote binnenomgevingen. Voor minder krachtige apparatuur is de mogelijkheid voor proactieve rendering van licht en schaduwen met behulp van verlichtingskaarten behouden, waarvoor nu de GPU wordt gebruikt om de weergave te versnellen.

- Nieuwe technieken voor renderoptimalisatie zijn geïmplementeerd. Er is automatische occlusie-afsnijding (occlusion culling) toegevoegd, dat dynamisch modellen bepaalt en verwijdert die achter andere oppervlakken verborgen zijn om de renderprestaties te verhogen en de belasting van CPU en GPU te verlagen.

- De SSIL (Screen Space Indirect Lighting)-modus is toegevoegd, waarmee de renderkwaliteit op high-performance apparatuur kan worden verbeterd door de verwerking van donkere gebieden en indirecte verlichting te optimaliseren. Daarnaast zijn er extra instellingen voor de simulatie van gediffuseerde indirecte verlichting met behulp van de SSAO (Screen Space Ambient Occlusion)-techniek beschikbaar gesteld, zoals het kiezen van het niveau van invloed van direct licht.
- Realistische eenheden van belichting zijn voorgesteld, waarmee de lichtintensiteit kan worden aangepast en standaardinstellingen van de camera zoals diafragma, sluitertijd en ISO kunnen worden gebruikt om de helderheid van de uiteindelijke scène te regelen.
- Nieuwe tools voor het bewerken van niveaus zijn toegevoegd voor 2D-spellen. Er zijn ingrijpende veranderingen aangebracht in het ontwikkelingsproces van 2D-spellen. Een nieuwe tilemap-editor is toegevoegd, die ondersteuning biedt voor lagen, automatische aanvulling van landschappen, randomisatie van de plaatsing van planten, stenen en verschillende objecten, en flexibele selectie van objecten. De werking met tilemaps en fragmentensets voor kaartconstructie (tileset) is verenigd. Automatische uitbreiding van fragmenten in de set is gewaarborgd om gaten tussen aangrenzende fragmenten te voorkomen. Een nieuwe functie voor de plaatsing van objecten in de scène is toegevoegd, die bijvoorbeeld kan worden gebruikt om personages aan de cellen van de tegelnet te voegen.
- Bij 2D-rendering is de mogelijkheid geïmplementeerd om canvasgroepen te gebruiken, die het mogelijk maken om overlappende canvas-elementen te mengen. Zo kunnen meerdere sprites samen worden gecombineerd en met de achtergrond worden gemengd alsof deze sprites één enkel element zijn. Een eigenschap Clip Children is toegevoegd, waarmee elke 2D-element als een masker kan worden gebruikt. De 2D-engine heeft ook een optie gekregen om de MSAA (Multisample Anti-Aliasing) methode te gebruiken voor een betere beeldkwaliteit en het creëren van soepelere randen.

- De werking met verlichting en schaduwen in 2D-spellen is verbeterd. De prestaties zijn aanzienlijk verhoogd bij het gebruik van meerdere lichtbronnen. Er is een mogelijkheid toegevoegd om 3D-simulatie te bereiken door het verlichtingniveau op normale kaarten te variëren, evenals het creëren van visuele effecten zoals lange schaduwen, aureolen en scherpe contouren.

- Het effect van volumetrische mist is toegevoegd, dat gebruik maakt van temporale reprojectie om een realistische uitstraling en hoge prestaties te bereiken.

- Cloud-shaders zijn toegevoegd, waarmee dynamisch wolken kunnen worden gegenereerd die in realtime veranderen.

- Ondersteuning voor 'decals' is geïmplementeerd, een methode om materiaal op een oppervlak te projecteren.
- Er zijn effecten op basis van deeltjes toegevoegd die toepasbaar zijn op de gehele speelomgeving, gebruikmakend van GPU en ondersteuning biedend voor attractoren, botsingen, sporen en emitters.
- De mogelijkheden van de interface voor visuele shader-bewerking zijn uitgebreid.

- De shader-taal is uitgebreid met ondersteuning voor structuren, preprocessor-macro's, shader-inclusie (include statement), uniforme arrays en het gebruik van 'varying' voor het overdragen van gegevens van de fragmentverwerker naar de lichtverwerker.
- Er is een mogelijkheid toegevoegd om compute shaders toe te passen die gebruik maken van GPU om algoritmes te versnellen.
- In de scripttaal GDScript is het systeem voor statische types verbeterd, is er nieuwe syntaxis voor het definiëren van eigenschappen toegevoegd, zijn de sleutelwoorden await en super voorgesteld, zijn map/reduce-operaties toegevoegd, is er een nieuw annotatiesysteem geïmplementeerd, en is het mogelijk om unicode-tekens te gebruiken in variabelenamen en functienamen. Er is een tool toegevoegd voor automatische documentgeneratie. De prestaties en stabiliteit van de GDScript runtime zijn verhoogd. In de ontwikkelomgeving is het mogelijk gemaakt om meerdere fouten tegelijk weer te geven, en zijn er nieuwe waarschuwingen voor typeproblemen toegevoegd.

- De mogelijkheden voor het ontwikkelen van game-logica in C# zijn uitgebreid. Ondersteuning voor het .NET 6-platform en C# 10 is toegevoegd. Voor scalare waarden worden 64-bits types gebruikt. Veel API's zijn omgezet van int- en float-types naar long en double. Het is mogelijk gemaakt om signalen te definiëren in de vorm van C#-events. Er is nu ondersteuning voor het ontwikkelen van GDExtensions-uitbreidingen in C#.
- Er is experimentele ondersteuning voor extensies (GDExtension) toegevoegd, die kunnen worden gebruikt om de mogelijkheden van de engine uit te breiden zonder deze opnieuw te compileren en zonder wijzigingen in de code aan te brengen.
- Er is een eigen simulatiemotor voor fysische processen voorgesteld, Godot Physics, die is geoptimaliseerd voor taken die typisch zijn voor computerspellen en die functiegelijkheid heeft bereikt met de eerder gebruikte Bullet-engine (bijvoorbeeld, Godot Physics heeft nieuwe soorten botsingen toegevoegd, ondersteunt hoogtekaarten en biedt de mogelijkheid om SoftBody-nodes te gebruiken voor het simuleren van kleding). De prestaties zijn geoptimaliseerd en de toepassing van multithreading is uitgebreid door de belasting over verschillende CPU-kernen te verdelen bij het simuleren van fysische processen in 2D- en 3D-omgevingen. Veel problemen met simulatie zijn opgelost.
- Een nieuw tekstweergavesysteem is voorgesteld, dat meer controle biedt over het afsnijden en doorbreken van tekst, en dat hoge scherpte garandeert bij elke schermresolutie.
- De hulpmiddelen voor lokalisatie en vertaalwerk zijn uitgebreid.
- Een aparte dialoog voor het importeren van 2D- en 3D-resources is toegevoegd, die een preview ondersteunt en het mogelijk maakt om instellingen van de te importeren scène, materialen en fysische eigenschappen te wijzigen.

- In de editor zijn nieuwe widgets toegevoegd, zoals een paneel voor het terugdraaien van wijzigingen en een nieuwe dialoog voor kleuraanpassing en het bijwerken van de palet.

- De inspectie-interface is bijgewerkt, bedieningspaneel de scène en de script-editor. De syntaxis-highlighting is verbeterd, er is ondersteuning toegevoegd voor het weergeven van meerdere cursors, en hulpmiddelen voor het bewerken van JSON- en YAML-indelingen zijn geleverd.
- De mogelijkheden van de animatietool zijn uitgebreid, met ondersteuning voor het mengen van vormen en verbeterde processen op basis van Bézier-curven. De code voor 3D-animatie is herschreven met steun voor compressie om geheugenverbruik te verminderen. Het systeem voor animatiemenging en het creëren van overgangseffecten is herzien. De mogelijkheden voor het maken van complexe animaties zijn uitgebreid. Er zijn animatielibraries gemaakt voor het opslaan en hergebruiken van gemaakte animaties.

- Er is een filmcreatiemodus toegevoegd, die frame-voor-frame rendering van de scène met maximale kwaliteit uitvoert voor het maken van intro's en het opnemen van video.
- De ondersteuning voor 3D-headsets en virtual reality-platforms is uitgebreid. De hoofdcomponent van de engine heeft ondersteuning voor de OpenXR-standaard geïntegreerd, die een universele API definieert voor het maken van toepassingen voor virtual en augmented reality. In Windows en Linux is ondersteuning geboden voor alle populaire 3D-headsets, waaronder SteamVR-, Oculus- en Monado-headsets.
- De stabiliteit van het subsysteem voor netwerkspel is verbeterd en het ontwikkelingsproces voor multiplayergames is vereenvoudigd.
- De mogelijkheden van het geluidssysteem zijn uitgebreid, met ingebouwde ondersteuning voor polyfonie, een API voor spraaksynthetisatie en de mogelijkheid om geluid te herhalen.
- De mogelijkheid om de Godot-interface op Android-tablets en in web-browsers te draaien is verzekerd.

- Er is een nieuw systeem voor het bouwen van games voor verschillende CPU-architecturen toegevoegd. Nu kan er bijvoorbeeld een build worden uitgevoerd voor Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebook en Asahi Linux.
- In de API zijn er wijzigingen aangebracht die de compatibiliteit verstoren. De overstap van Godot 3.x naar Godot 4.0 vereist een herziening van toepassingen, maar voor de Godot 3.x-tak is een lange supportcyclus gegarandeerd, die zal afhangen van de vraag naar de oude API door gebruikers.

Bron: opennet.ru

















