Home Mobile Android Rilasciato Axmol Engine v2.9.0: motore open-source C++ per giochi 2D/3D multi-piattaforma, compatibile...

Rilasciato Axmol Engine v2.9.0: motore open-source C++ per giochi 2D/3D multi-piattaforma, compatibile mobile, desktop, console e WebAssembly

83
0

Pubblicato un rapido aggiornamento per Axmol Engine, il motore di gioco open-source sviluppato dal team Axmol Engine e disponibile pubblicamente su GitHub.

Nato come fork di Cocos2d-x v4.0 nel novembre 2019, Axmol mira a fornire una versione più leggera, veloce e versatile del motore originale, ottimizzata per lo sviluppo di giochi 2D, con funzionalità aggiuntive per il supporto di elementi 3D.

La sua natura multi-piattaforma lo rende adatto a sviluppatori indie, team di piccole e medie dimensioni e chiunque cerchi un’alternativa gratuita e performante ai motori commerciali.

Il cuore di Axmol Engine è il suo sistema di rendering avanzato, che supporta diverse API grafiche a seconda della piattaforma. Su Windows e Xbox viene sfruttato D3D11, su dispositivi Apple Metal, mentre su altre piattaforme sono disponibili OpenGL ES 3.0+, WebGL 2.0 e ANGLE GLES 3.0.

La gestione dei video è stata migliorata con un nuovo MediaPlayer che permette di trattare i video come texture 2D, con un player su Windows basato su Microsoft Media Foundation, semplificando l’integrazione di contenuti multimediali nei giochi.

Axmol supporta build ottimizzate e display HiDPI su desktop, architetture x64 per Windows e Android, e supporto nativo per Apple M1, garantendo prestazioni elevate su piattaforme moderne.

Dal punto di vista audio e networking, Axmol offre un AudioEngine rifattorizzato basato su OpenAL Soft, compatibile con tutti i formati .wav, e un client HTTP (HttpClient) costruito su yasio, in grado di gestire richieste concorrenti in maniera efficiente.

Il motore supporta inoltre estensioni modulari, che possono essere integrate facilmente grazie a una struttura dedicata nella cartella delle estensioni e con una community attiva che condivide componenti aggiuntivi.

La fisica è gestita con moduli consolidati: Box2D e Chipmunk2D per la fisica 2D, sebbene Chipmunk2D sia stato rimosso nelle versioni dev/v3, e Bullet Physics per il 3D, consentendo sia giochi bidimensionali complessi sia esperienze tridimensionali base.

Axmol include inoltre strumenti avanzati come pointer scanner per memoria, supporto per formati di texture moderni ASTC/ETC2, miglioramenti al VR rendering e un supporto sperimentale a WebAssembly, utile per portare giochi direttamente sul web.

Axmol può essere utilizzato su dispositivi mobili iOS e Android, desktop Windows (x86/x64), macOS (x64/arm64) e Linux (x64), console Xbox tramite Universal Windows Platform (UWP), e WebAssembly in fase di anteprima con demo accessibili su axmol.netlify.app. Supporta inoltre tvOS, gestendo più architetture come arm64 e x86.

Il motore è scritto principalmente in C++ con supporto per scripting in Lua, e utilizza numerose librerie esterne tra cui Google ANGLE, Glad per il caricamento OpenGL, pugixml per XML, curl per richieste HTTP e mio per gestire UserDefault.

La licenza del core è open-source e gratuita, mentre le dipendenze di terze parti seguono le loro licenze specifiche, dettagliate nel file 3rdparty/README.md della repository.

Per installare e usare Axmol, è sufficiente clonare la repository con il comando git clone --recursive https://github.com/axmolengine/axmol e compilare il progetto tramite il build system cross-platform basato su CMake.

Per Windows, il progetto fornisce un workflow con librerie precompilate per semplificare la compilazione, mentre chi desidera migrare da Cocos2d-x può consultare la Migration Guide ufficiale.

Il motore offre opzioni di compilazione avanzate, come l’abilitazione di OpenAL Soft, e build preconfigurate per le piattaforme supportate.

Axmol Engine è organizzato in rami distinti: il ramo dev (v3) ospita funzionalità sperimentali e instabili, mentre le release 2.x rappresentano versioni stabili adatte alla produzione.

Il progetto è attivamente mantenuto, con build automatiche su GitHub Actions, controllo della qualità del codice tramite Codacy, e aggiornamenti regolari.

La documentazione completa è disponibile sul sito ufficiale, nella wiki del progetto e attraverso il server Discord, dove sviluppatori e utenti possono discutere, condividere estensioni e collaborare.

La community è incoraggiata a contribuire con nuovi moduli, ottimizzazioni, correzioni e suggerimenti, rendendo Axmol Engine una piattaforma in continua evoluzione e uno strumento solido per lo sviluppo di giochi multi-piattaforma di qualità.

Changelog

La release 2.9.0 è un aggiornamento LTS minore, focalizzato su correzioni di bug e miglioramenti generali.

Cambiamenti significativi rispetto alla 2.8.x

3D Audio e Effetti Base

  • Aggiunto supporto per il panning audio by @rh101 in #2719
  • Aggiunto supporto per riprodurre audio in qualsiasi posizione nello spazio 3D by @rh101 in #2740
  • Implementazione iniziale che aggiunge supporto per effetti audio e filtri usando OpenAL by @rh101 by #2772
  • Correzione dei valori delle proprietà di riverbero by @rh101 in #2779

Altri cambiamenti

  • Aggiunto controllo dell’orientamento dello schermo per dispositivi mobili by @halx99 nel #2784
  • Aggiunta nuova API EventKeyboard::isRepeat by @halx99 nel #2735
  • Aggiunta nuova API ZipFile::createWithData e deprecata ZipFile::createWithBuffer by @halx99
  • Migliorato il decoder Base64 per ignorare spazi bianchi e newline e prevenire terminazioni premature by @halx99
  • Aggiunta Device::resolveOrientation e logica di risoluzione compatta by @halx99 in #2792

Correzioni di bug

  • Corretto ui::MediaPlayer che poteva causare crash su piattaforme Apple by @halx99 in #2704
  • Corretti occasionali asset mancanti su build Android AAB by @paulocoutinhox in #2713
  • Corretti formattatori di stringa nelle chiamate di logging by @rh101 in #2749
  • Correzione del crash quando il director viene resettato durante la transizione di scena by @halx99 in #2802

Miglioramenti

  • Aggiunto Http setDataCallback per il supporto allo streaming dei dati by @halx99 in #2805
  • Migliorata la gestione dell’orientamento di EditBox su iOS con tastiera by @halx99 in #2791 e #2795
  • Aggiunto supporto per l’estrazione della scena precedente dallo stack delle scene by @rh101 in #2793
  • Distruzione dell’istanza di ScriptEngine prima dello _scheduler per rispettare le dipendenze by @halx99
  • Corretto l’asse Y in SpineTest by @halx99
  • Sostituite le chiamate deprecate con nuove API nel motore by @halx99
  • Aggiornato controller.cpp: rinominato “Audio – NewAudioEngine” in “AudioEngine” by @aismann in #2731
  • Correzione di diversi problemi non critici per i test Lua by @halx99
  • Rimosso yaml-cpp inesistente dai moduli template CMake by @halx99
  • Rimosso evento trigger pull-request CI: ready_for_review by @halx99
  • Aggiornato KCP per risolvere errore CMake by @halx99
  • Dispatch di applicationScreenSizeChanged quando layoutSubviews su iOS by @halx99
  • Rinominata classe interna iOS: EARenderView => RenderHostView by @halx99
  • Risolto Director::getRunningScene() per restituire il risultato previsto per qualsiasi tipo di switch di scena quando chiamato da Node::onEnter() by @rh101 in #2799

SDK e Tools

  • Aggiornato webview2 dalla versione 1.0.3405.78 alla versione 1.0.3485.44.

Aggiornamenti 3rdparty

  • Aggiornato curl dalla versione 8.15.0 alla versione 8.16.0.
  • Aggiornato freetype dalla versione 2.13.3 alla versione 2.14.1
  • Aggiornato jpeg-turbo dalla versione 3.1.1 alla versione 3.1.2
  • Aggiornato luajit dalla versione 2.1-f9140a6 alla versione 2.1-871db2c

Note

Aggiunta nuova API: ZipFile::createWithData

L’API precedente ZipFile::createWithBuffer aveva una criticità di design: accettava un buffer const char* senza chiarire la proprietà, rendendo il comportamento dipendente dal ciclo di vita del buffer esterno e causando potenziali bug.

La nuova API utilizza un oggetto Data, che supporta move semantics, rendendo esplicita la proprietà e il ciclo di vita. Questo garantisce un utilizzo più sicuro e prevedibile.

Controllo dell’orientamento dello schermo su dispositivi mobili

In precedenza, l’orientamento poteva essere configurato solo staticamente tramite impostazioni di piattaforma (info.plist su iOS o AndroidManifest.xml su Android), limitando la flessibilità.

Con la nuova API Device::setPreferredOrientation, è possibile modificare dinamicamente l’orientamento dello schermo a runtime, passando tra modalità portrait e landscape in base al gameplay, flusso UI o preferenze dell’utente.

Vantaggi

  • Gestione coerente dell’orientamento su tutte le piattaforme, eliminazione del codice specifico per piattaforma e miglioramento dell’esperienza utente tramite adattamento dinamico del rendering.
  • Nota per sviluppatori: il motore adatta internamente solo in modo base. Si consiglia di gestire risoluzione e layout all’interno di AppDelegate::applicationScreenSizeChanged per garantire corretto scaling e comportamento UI su dispositivi e orientamenti diversi.

Download: Axmol Engine v2.9.0

Download: Axmol Engine (bs) v2.9.0

Download: Source code Axmol Engine v2.9.0

Fonte: github.com