Pubblicato un nuovo aggiornamento per nx.js, la piattaforma utilizza JavaScript e TypeScript per lo sviluppo di applicazioni homebrew della console Nintendo Switch.
Questo strumento è basato sul motore QuickJS e consente di eseguire script direttamente sulla console Nintendo Switch.
Molte delle API web comuni, come fetch
, setTimeout
, Audio
e Canvas
, sono supportate su questa piattaforma, il che rende più agevole il lavoro per gli sviluppatori web che desiderano creare software per la Switch.
Inoltre, nx.js offre API speciali specifiche per la console Switch, fornendo un ambiente di sviluppo completo per la creazione di programmi homebrew. Gli sviluppatori possono trovare ispirazione e esempi su GitHub per iniziare rapidamente con il loro progetto.
Una caratteristica interessante di nx.js è la possibilità di creare applicazioni più complesse utilizzando npm (Node Package Manager) e quindi impacchettarle come file NRO.
Questo processo coinvolge l’utilizzo di esbuild per raggruppare il codice JavaScript, consentendo anche l’uso di TypeScript per lo sviluppo. Inoltre, i file nella directory “romfs” vengono compressi nell’NRO, semplificando la distribuzione delle applicazioni.
Le modifiche apportate in questo nuovo aggiornamento includono il settaggio di esbuild e TypeScript al target “es2022”, l’aggiunta di nuove classi come ImageBitmap e Sensor, l’uso di ImageBitmap al posto di ImageData per IRSensor, e l’implementazione di nuove funzionalità come AmbientLightSensor, IRSensor e Application.
Introdutte inoltre tutta una serie di miglioramenti e correzioni, come la propagazione degli errori di connessione TCP a JavaScript, l’aggiunta di nuovi metodi Canvas e il supporto per opzioni aggiuntive in Switch.IRSensor.
Caratteristiche
- Sviluppo in JavaScript: Scrivi applicazioni homebrew per Nintendo Switch utilizzando JavaScript, un linguaggio di programmazione popolare e ampiamente supportato.
- API di alto livello: Beneficia di un’API JavaScript di alto livello progettata specificamente per la piattaforma Nintendo Switch, offrendo facile accesso a funzionalità e caratteristiche specifiche della console.
- Gestione dell’Input: Cattura e elabora l’input dell’utente con facilità, inclusi pulsanti, touchscreen e controlli di movimento, per creare esperienze di gioco coinvolgenti.
- Grafica e UI: Crea interfacce utente visivamente accattivanti e interattive utilizzando l’API Canvas web.
- Supporto audio: Integra la riproduzione audio e gli effetti sonori nelle tue applicazioni utilizzando l’API Audio web.
- WebAssembly: Supporto per l’esecuzione di codice compilato in WebAssembly (WASM).
Per iniziare, seguire questi passaggi
- Configurare un firmware personalizzato sulla console Switch per consentirle di eseguire applicazioni homebrew (istruzioni).
- Scaricare il file
nxjs.nro
. - Creare un file chiamato
nxjs.js
con il seguente contenuto:console.log('Hello Switch, from JavaScript!');
- Copiare entrambi i file nella directory
/switch
sulla scheda SD. - Avviare l’applicazione.
Consultare la documentazione dell’API per ulteriori dettagli e dare un’occhiata alla directory delle app per trovare altri esempi.
Creazione di un’applicazione
- Per creare un’applicazione, eseguire il seguente comando per avviare la creazione di un’applicazione nx.js:
npm create nxjs-app@latest
Potrete scegliere uno degli esempi di applicazioni come punto di partenza. Seguendo le istruzioni verrà creata successivamente una nuova directory con il nome del progetto inserito.
I seguenti script nel file package.json
sono configurati:
build
: Raggruppa il codice dell’applicazione in un singolo file JavaScript utilizzando esbuild.nro
: Incapsula l’applicazione raggruppata (+ eventuali altri file nella directory romfs) in un file.nro
autocontenuto.
Changelog
nxjs-runtime@0.0.26
Modifiche alle patch
- Impostato esbuild e il target di compilazione di TypeScript su “es2022” (
62951c61fb846aeb2201b21f8c6a03c8adae96e8
). - Aggiunta la classe
ImageBitmap
(d9db93b6c2b5dc33f817893f2c1aa142736009c6
). - Aggiunta la classe base
Sensor
(6ab19dcb6f5922a25805f3b1decfe02959bde362
). - Fatto in modo che
IRSensor
utilizziImageBitmap
al posto diImageData
(f8d7beed76a2331ee83ef015046bd214a2156dda
). - Rinominata l’interfaccia
ListenOpts
inListenOptions
(2964d88e253dccbb1fedd676bbcb68017530eef7
). - Propagato l’errore
connect()
TCP in JS (9c3b9655a3360490906eb5106953ed9855536c53
). - Utilizza
quickjs-ng
(ba52a51ca85c86649f36b13d41f2ae173c953de6
). - Aggiunta la scorciatoia
accept
perSwitch.listen()
(150467b4fd4f4c73e1d6d22578a45ba904289ea7
). - Restituisci la stessa istanza di Promise per
navigator.getBattery()
(41081fb0f01fb79cacc453d0832822a394c56df4
). - Aggiunta la classe
AmbientLightSensor
(d7482c0931ae04f3270f447e1dcbd62954318a9a
). - Aggiunta la classe
Switch.IRSensor
(804b9f379e8f0da33e6bd726da8a1d2584c2d354
). - Aggiunta la classe
Switch.Application
e l’iteratoreSwitch.applications
(#72). - Corretto l’errore di stampa se
runtime.js
genera un errore (91db41d4c0c86fe413a4330aeedb994a98b53a5c
). - Contrassegna
id
come opzionale inclearTimeout()
eclearInterval()
(98654782f18c16e770124eaaefeef87e4b822396
). - Restituisci 16 per
navigator.maxTouchPoints
(e23ae02b96306915dccf299dfcb2fd31c75e0c1c
). - Implementato Canvas
roundRect()
in C (#74). - Rimossa l’interfaccia
ConnectOpts
non utilizzata (143b53126e199287ef86e506fafff3765a57c4a2
). - Aggiunto il supporto per l’opzione
maxWidth
in CanvasfillText()
/strokeText()
(09e1ac24a16d4e2ea9f484141cef7cc37373e241
). - Reimplementato il mapping delle sorgenti utilizzando l’API CallSite (
59d3dec8427224137b4d6bcdf5a2701375741e9c
). - Supporta l’opzione
color
inSwitch.IRSensor
(0ad81bb0c768903259d962fd66cace83aefccdd5
). - Aggiunto
depth
ainspect()
(cca4251d4d569254b5a9d3079c881e6c3f10712f
). - Rielaborato il generatore di definizioni di tipo runtime utilizzando modifiche AST (#73).
Download: nx.js v0.0.26
Download: Source code nx.js v0.0.26
Fonte: github.com