-->

L'evoluzione dei giochi su Linux: dettagli e cronologia.

L'evoluzione del gaming su Linux è una storia di resilienza tecnica e di una trasformazione radicale: da un ecosistema di nicchia fatto di cloni open-source a una piattaforma che oggi rivaleggia (e in alcuni casi supera) Windows per efficienza, grazie soprattutto alla spinta di Valve.

Ecco le tappe fondamentali divise per ere.


1. L'Era delle Origini (1991 - 1998)

Inizialmente, giocare su Linux significava quasi esclusivamente titoli testuali o piccoli cloni di giochi famosi.

  • 1991: Nasce il kernel Linux. I primi "giochi" sono porting di utility Unix.

  • 1994: Dave Taylor esegue il porting di DOOM su Linux nel tempo libero. È il primo grande titolo commerciale a girare nativamente sul pinguino.

  • 1996: Viene rilasciato Quake per Linux. id Software diventa il principale alleato della community, rilasciando binari Linux per quasi tutti i suoi titoli successivi.

  • 1997: Nasce il progetto MAME, fondamentale per l'emulazione su Linux.

2. L'Era d'Oro dei Porting Nativi (1998 - 2002)

Un periodo di grande ottimismo dove aziende dedicate cercarono di portare i tripla A di Windows su Linux.

  • 1998: Nasce Loki Entertainment. In pochi anni portano su Linux titoli come Civilization: Call to Power, Quake III Arena, SimCity 3000 e Unreal Tournament.

  • 2001: Nasce ScummVM, rendendo Linux il paradiso per le avventure grafiche punta-e-clicca.

  • 2002: Loki Entertainment fallisce. Il mercato dei porting nativi subisce un duro colpo, dimostrando che il modello di vendita di "scatole" separate per Linux non è ancora sostenibile.

3. L'Era di Wine e degli Indie (2003 - 2011)

Con la carenza di titoli nativi, la community si concentra sulla compatibilità.

  • Anni 2000: Wine (Wine Is Not an Emulator) matura drasticamente, permettendo di eseguire molte applicazioni Windows.

  • 2010: Il primo Humble Indie Bundle debutta includendo versioni native per Linux per ogni gioco. Dimostra che gli utenti Linux sono disposti a pagare (e spesso più degli utenti Windows).

4. La Rivoluzione Valve (2012 - 2018)

Gabe Newell definisce Windows 8 una "catastrofe" e decide che Linux è l'assicurazione sulla vita di Valve.

  • 2012: Valve rilascia Steam per Linux.

  • 2013: Viene annunciato SteamOS e le prime Steam Machines. Sebbene l'hardware non avrà successo, spinge centinaia di sviluppatori a creare versioni native dei giochi (es. Portal 2, Left 4 Dead 2).

  • 2016: Viene rilasciata l'API Vulkan, che diventa il ponte tecnologico fondamentale per tradurre i giochi moderni su Linux senza perdere prestazioni.

5. L'Era Proton e Steam Deck (2018 - Oggi)

Il cambio di paradigma: non serve più che il gioco sia "nativo", basta che sia "compatibile".

  • 2018: Valve lancia Proton, un layer basato su Wine e DXVK che traduce le istruzioni DirectX (Windows) in Vulkan (Linux) quasi in tempo reale.

  • 2022: Lancio di Steam Deck. Il successo della console portatile trasforma Linux in un target prioritario per gli sviluppatori.

  • 2024-2026: Grazie a tecnologie come FSR (AMD) e il costante miglioramento dei driver (Mesa/NVIDIA), molti giochi Windows girano meglio su Linux rispetto all'hardware originale, grazie a un minor overhead del sistema operativo.


Tabella Riassuntiva: I Pilastri Tecnologici

Tecnologia
Funzione
Impatto

Wine
Layer di compatibilità
Permette di eseguire .exe su Linux

Vulkan
API Grafica Open
Alternativa performante a DirectX

DXVK
Traduttore DX11/12 -> Vulkan
Ha reso possibile giocare ai titoli AAA moderni

Proton
Integrazione Steam
Rende l'installazione di giochi Windows "one-click"

Oggi, oltre il 90% dei titoli top su Steam è giocabile su Linux con prestazioni eccellenti. Se vuoi approfondire come configurare al meglio la tua distribuzione per giocare, posso darti qualche consiglio su quali driver o tool (come Lutris o Bottles) utilizzare.

Come creare snippet personalizzati per Octave in Visual Studio Code su Ubuntu

Octave installation and Running a Sample Program

Di seguito trovi una guida pratica, passo‑passo, con esempi pronti da incollare, suggerimenti per testare e consigli per mantenere gli snippet organizzati.

1. Prerequisiti
  • Visual Studio Code installato su Ubuntu.

  • GNU Octave installato (opzionale per testare i comandi direttamente).

  • Estensione consigliata per sintassi Octave/MATLAB: "MATLAB" o "Octave" (verifica il nome esatto nel Marketplace).

  • Familiarità base con JSON (gli snippet di VS Code sono file JSON).

2. Dove salvare gli snippet in VS Code
  1. Apri VS Code.

  2. Apri la palette comandi con Ctrl+Shift+P.

  3. Digita Preferences: Configure User Snippets e premi Invio.

  4. Scegli New Global Snippets file per snippet disponibili in tutti i linguaggi, oppure New Snippets file for 'matlab' (o crea un file chiamato octave.json se vuoi limitarli a Octave/MATLAB).

  5. Si aprirà un file JSON dove inserire gli snippet.

3. Struttura di uno snippet (esempio base)

Ogni snippet è un oggetto JSON con chiave il nome dello snippet e valori che definiscono prefix, body, description. Esempio minimale:

json<?XML:NAMESPACE PREFIX = "[default] http://www.w3.org/2000/svg" NS = "http://www.w3.org/2000/svg" />

{
  "NomeSnippet": {
    "prefix": "prefisso",
    "body": [
      "prima riga di codice",
      "seconda riga di codice"
    ],
    "description": "Descrizione breve dello snippet"
  }
}
  • prefix: testo che digiti per attivare lo snippet.

  • body: array di stringhe (ogni elemento è una riga); puoi usare variabili e tabstop.

  • description: testo che appare nella lista di completamento.

4. Snippet utili per Octave (da incollare in octave.json o matlab.json)

Copia e incolla questi esempi nel file snippet aperto in VS Code.

4.1 Template funzione

json

{
  "Octave Function Template": {
    "prefix": "ofunc",
    "body": [
      "function ${1:out} = ${2:funName}(${3:args})",
      "% ${2:funName} - ${4:Short description}",
      "%",
      "% Syntax:",
      "%   ${1:out} = ${2:funName}(${3:args})",
      "%",
      "% Inputs:",
      "%   ${3:args} - description",
      "%",
      "% Outputs:",
      "%   ${1:out} - description",
      "",
      "  % --- body ---",
      "  ${0}",
      "endfunction"
    ],
    "description": "Template per creare una funzione Octave"
  }
}
4.2 Blocco di test e confronto risultati

json

{
  "Octave Test Block": {
    "prefix": "otest",
    "body": [
      "%% Test ${1:TestName}",
      "${2:input} = ${3:[]};",
      "${4:expected} = ${5:[]};",
      "${6:result} = ${7:yourFunction}(${2:input});",
      "assert( max(abs(${6:result} - ${4:expected})) < ${8:1e-6} );",
      "disp('Test passed');",
      "${0}"
    ],
    "description": "Blocco di test semplice per confrontare risultati numerici"
  }
}
4.3 Plot standard con impostazioni

json

{
  "Octave Plot Boilerplate": {
    "prefix": "oplot",
    "body": [
      "% Plot example",
      "x = linspace(${1:0}, ${2:2*pi}, ${3:200});",
      "y = ${4:sin}(x);",
      "figure('position',[100,100,${5:800},${6:400}]);",
      "plot(x,y,'-b','LineWidth',${7:1.5});",
      "title('${8:Title}');",
      "xlabel('${9:x}');",
      "ylabel('${10:y}');",
      "grid on;",
      "drawnow();",
      "${0}"
    ],
    "description": "Snippet per creare un plot con impostazioni comuni"
  }
}
4.4 Ciclo for con commenti e preallocazione

json

{
  "Octave For Loop Prealloc": {
    "prefix": "ofor",
    "body": [
      "% Preallocazione",
      "${1:n} = ${2:100};",
      "${3:out} = zeros(${1:n},1);",
      "for ${4:i} = 1:${1:n}",
      "  % calcolo",
      "  ${3:out}(${4:i}) = ${5:compute}(${4:i});",
      "endfor",
      "${0}"
    ],
    "description": "For loop con preallocazione"
  }
}
5. Variabili, tabstop e scelte (placeholders avanzati)
  • ${1} ${2} sono tabstop: premi Tab per spostarti.

  • ${1:default} imposta un valore di default.

  • ${1|opt1,opt2|} crea una scelta a discesa.

  • ${0} è il cursore finale.

Esempio con scelta:

json

"body": [
  "graphics_toolkit(\"${1|gnuplot,qt,fltk|}\");"
]
6. Associare file .m a linguaggio Octave/MATLAB in VS Code

Se VS Code non riconosce .m come MATLAB/Octave:

  1. Apri un file .m.

  2. Clicca in basso a destra sull'indicazione del linguaggio (es. Plain Text).

  3. Seleziona Configure File Association for '.m'... e scegli MATLAB o l’estensione Octave installata.

7. Testare gli snippet
  • Apri un file .m.

  • Digita il prefix (es. ofunc) e premi Tab o Enter per espandere.

  • Usa Tab per navigare tra i tabstop e personalizzare i valori.

  • Salva e, se vuoi, esegui lo script in Octave per verificare che tutto funzioni.

8. Organizzazione e condivisione
  • Mantieni gli snippet in un file dedicato octave.code-snippets o octave.json.

  • Versiona il file con Git nel repository del progetto.

  • Per condividerli con il team, includi il file nel repo e istruzioni su come importarlo in VS Code (Preferences → Configure User Snippets → Import).

9. Suggerimenti pratici e best practice
  • Inizia piccolo: crea snippet per pattern ripetuti (funzioni, plot, test) e amplia gradualmente.

  • Usa descrizioni chiare per ricordare lo scopo dello snippet.

  • Evita codice troppo specifico: lascia tabstop per parametri che cambiano spesso.

  • Combina con frammenti di commento per generare header di funzione e documentazione.

  • Mantieni coerenza con lo stile del progetto (naming, commenti).

  • Backup: salva una copia degli snippet in cloud o nel repo.

10. Esempio completo di file snippet (octave.json)

Copia l’intero blocco seguente in Preferences: Configure User Snippets → New Snippets file e salvalo come octave.json:

json

{
  "Octave Function Template": {
    "prefix": "ofunc",
    "body": [
      "function ${1:out} = ${2:funName}(${3:args})",
      "% ${2:funName} - ${4:Short description}",
      "%",
      "% Syntax:",
      "%   ${1:out} = ${2:funName}(${3:args})",
      "%",
      "% Inputs:",
      "%   ${3:args} - description",
      "%",
      "% Outputs:",
      "%   ${1:out} - description",
      "",
      "  % --- body ---",
      "  ${0}",
      "endfunction"
    ],
    "description": "Template per creare una funzione Octave"
  },
  "Octave Plot Boilerplate": {
    "prefix": "oplot",
    "body": [
      "x = linspace(${1:0}, ${2:2*pi}, ${3:200});",
      "y = ${4:sin}(x);",
      "figure('position',[100,100,${5:800},${6:400}]);",
      "plot(x,y,'-b','LineWidth',${7:1.5});",
      "title('${8:Title}');",
      "xlabel('${9:x}');",
      "ylabel('${10:y}');",
      "grid on;",
      "drawnow();",
      "${0}"
    ],
    "description": "Snippet per creare un plot con impostazioni comuni"
  },
  "Octave For Loop Prealloc": {
    "prefix": "ofor",
    "body": [
      "${1:n} = ${2:100};",
      "${3:out} = zeros(${1:n},1);",
      "for ${4:i} = 1:${1:n}",
      "  ${3:out}(${4:i}) = ${5:compute}(${4:i});",
      "endfor",
      "${0}"
    ],
    "description": "For loop con preallocazione"
  }
}

Guida a WPS Office: il tuo spazio di lavoro ininterrotto, sempre sicuro e affidabile

Nessun monitoraggio

Rispettiamo la tua privacy. Non raccogliamo nessuno dei tuoi dati privati. La nostra raccolta di dati è limitata alle statistiche sull'utilizzo del sistema, esclusivamente per scopi analitici, e potrai disattivarla in qualsiasi momento.

 

Crittografia dei dati end-to-end

Prendiamo sul serio la sicurezza dei tuoi documenti. Con WPS Office, i tuoi dati sono completamente crittografati dall'inizio alla fine, in modo che rimangano sempre privati ​​e sicuri.

 

Nessuna terza parte

Stai tranquillo, non ci sono terze parti coinvolte. Il tuo lavoro è solo tuo. Non condividiamo i tuoi dati né collaboriamo con soggetti esterni che potrebbero compromettere la tua privacy.

Come configurare il controllo versione Git e l'integrazione VS Code per progetti Octave?

GNU Octave, la alternativa de código abierto a MatLab

L'integrazione di Git in un progetto Octave gestito con VS Code richiede la creazione di un file .gitignore personalizzato per evitare di tracciare file temporanei e file binari pesanti, unita alla configurazione delle estensioni dedicate nella GUI.

1. Inizializzazione del Repository e File .gitignore

Apri la cartella del tuo progetto nel terminale di Ubuntu (o nel terminale integrato di VS Code Ctrl + `) ed esegui:

Bash

cd /percorso/del/tuo/progetto_octave
git init
Creare il file .gitignore per Octave

I file di dati binari (.mat), i dump dell'ambiente di lavoro (octave-core) e i grafici esportati non dovrebbero finire nel controllo versione. Crea un file chiamato .gitignore nella radice del progetto:

Snippet di codice

# File temporanei e cronologia di Octave
octave-workspace
octave-workspace~
octave-core
.octave_hist
*.m~

# File di dati binari (meglio escludere file pesanti)
*.mat

# Output grafici generati da script (se non necessari nella repo)
*.png
*.pdf
*.svg
*.fig

# File di configurazione ambiente locale di VS Code
.vscode/*
!.vscode/settings.json
!.vscode/launch.json

2. Configurazione dell'Identità Git

Se non l'hai già fatto sul tuo sistema Ubuntu, configura nome ed email con cui firmare i commit:

Bash

git config --global user.name "Il Tuo Nome"
git config --global user.email "tua.email@example.com"

3. Gestione di Git dall'Interfaccia di VS Code

VS Code offre un'interfaccia nativa per la gestione del controllo versione.

Pannello Source Control (Ctrl + Shift + G)
  • Staging: Passa il mouse sopra i file modificati sotto la voce Changes e fai clic sul pulsante + (Stage Changes) per prepararli al commit.

  • Commit: Inserisci un messaggio sintetico nella casella di testo in alto (es. Aggiunta funzione per analisi spettrale) e premi Ctrl + Enter.

  • Confronto Modifiche (Diff): Fai clic su un qualsiasi file .m modificato per aprire la vista divisa e confrontare le modifiche riga per riga.

Estensioni Consigliate per VS Code

Per potenziare il flusso di lavoro Git con progetti Octave:

  1. GitLens: Mostra chi ha modificato ciascuna riga di codice direttamente nell'editor (git blame), permette di esplorare la cronologia delle funzioni e confrontare i branch.

  2. Git Graph: Aggiunge un pannello visuale a nodi che mostra l'albero dei commit, la struttura dei branch e i merge.

4. Collegamento a un Repository Remoto (GitHub / GitLab)

Per sincronizzare il tuo codice con un servizio cloud:

  1. Crea un repository vuoto su GitHub o GitLab (senza aggiungere automaticamente file README o .gitignore).

  2. Collega il repository locale a quello remoto e carica il ramo principale:

Bash

git remote add origin https://github.com/tuo-utente/nome-progetto-octave.git
git branch -M main
git push -u origin main

Da questo momento, in VS Code puoi utilizzare il pulsante Sync Changes (o la barra di stato in basso a sinistra) per effettuare le operazioni di git pull e git push con un solo clic.

Buone Pratiche per Progetti Octave

  • Evita di tracciare file .mat di grandi dimensioni: Salva i dati generati dagli script tramite file .csv strutturati oppure genera i dati a runtime anziché caricare grandi dataset binari.

  • Separazione dei file: Mantieni le funzioni riutilizzabili in file distinti (funzione.m) e gli script principali di esecuzione in un'altra cartella (es. /src o /scripts).

Guida a WPS Office: più intelligente, più veloce e più semplice.

Gratuito e perfettamente compatibile con Ms office
  • Accesso gratuito alle funzionalità Word, Excel e PPT

    Goditi l'accesso gratuito e illimitato alle funzionalità di Word, Excel e PPT. Esegui l'upgrade a WPS AI per ottenere tantissime funzionalità IA e servizi avanzati ogni volta che ne avrai bisogno!

    Accesso gratuito alle funzionalità di Word, Excel e PPT

  • Aumenta l'efficienza in ufficio con l'integrazione dell'intelligenza artificiale

    Scopri come la perfetta integrazione delle tecnologie IA possa rivoluzionare il workflow in ufficio, migliorare la produttività e semplificare le operazioni per un'efficienza ottimale.

    Aumenta l'efficienza in ufficio con l'integrazione dell'intelligenza artificiale

  • Compatibilità al 100% con una gestione ottimizzata dei file

    Non dovrai preoccuparti più della compatibilità dei file. WPS Office garantisce che ogni file possa essere aperto facilmente senza problemi di formattazione. Il tuo lavoro, a modo tuo.

    Compatibilità al 100% con una gestione ottimizzata dei file

Come posso configurare la verifica della sintassi (linting) e la formattazione automatica per i file .m in VS Code?

Install GNU Octave on Linux | Flathub

Il metodo più efficace per ottenere sia la verifica della sintassi (linting) che la formattazione automatica per i file .m di Octave/MATLAB in Visual Studio Code è l'utilizzo di MISS Hit, uno strumento open-source ampiamente diffuso che include il linter mhlint e il formattatore mhfmt.

1. Installazione dello strumento MISS Hit

Apri il terminale di Ubuntu ed installa il pacchetto Python di MISS Hit:

Bash

pip3 install miss_hit

Verifica che i comandi siano correttamente installati e raggiungibili nel tuo ambiente:

Bash

mhlint --version
mhfmt --version

2. Installazione dell'Estensione VS Code

  1. Apri VS Code e vai nelle Estensioni (Ctrl + Shift + X).

  2. Cerca e installa l'estensione MISS Hit (prodotta da miss-hit).

3. Configurazione delle Impostazioni (settings.json)

Per associare il formattatore al salvataggio automatico e attivare l'analisi statica in tempo reale:

  1. Apri la Tavolozza Comandi (Ctrl + Shift + P).

  2. Digita Preferences: Open User Settings (JSON) e selezionalo.

  3. Aggiungi il seguente blocco di configurazione:

JSON

{
  // Imposta Octave come linguaggio predefinito per i file .m
  "files.associations": {
    "*.m": "octave"
  },

  // Assegna MISS Hit come formattatore e abilita la formattazione al salvataggio
  "[octave]": {
    "editor.defaultFormatter": "miss-hit.miss-hit",
    "editor.formatOnSave": true
  },
  "[matlab]": {
    "editor.defaultFormatter": "miss-hit.miss-hit",
    "editor.formatOnSave": true
  },

  // Abilita la verifica della sintassi e dello stile (mhlint)
  "miss-hit.mhlint.enable": true,
  "miss-hit.mhlint.onSave": true,


  // Impostazioni di formattazione (mhfmt)
  "miss-hit.mhfmt.indentSize": 4
}

4. Personalizzazione del Linter tramite .miss_hit (Opzionale)

Se desideri definire regole di stile personalizzate per un specifico progetto, crea un file chiamato .miss_hit nella cartella principale del tuo progetto:

Ini, TOML

project_name: "MioProgettoOctave"

# Imposta la lunghezza massima della riga
line_length: 100

style {
    indent_width: 4
}

# (Opzionale) Disabilita specifiche avvertenze di stile
suppress_rule: "MH101"

Come Utilizzare le Funzionalità

  • Formattazione Manuale: Premi Shift + Alt + F all'interno di un file .m per formattare immediatamente il codice.

  • Controllo Errori e Avvisi: Gli errori di sintassi e i suggerimenti di formattazione compariranno evidenziati nel codice e dettagliati nel pannello Problems (Ctrl + Shift + M).

Guida a WPS Office: rimodella il tuo workflow.

  • Corretor de Texto de IA

    Scrittura senza errori con correttore ortografico AI

    Scrivi senza problemi grazie al controllo ortografico automatico e intelligente che migliora la chiarezza e l'accuratezza dei tuoi documenti.

  • Tradutor Inteligente e Preciso

    Traduzione in parallelo tramite l'intelligenza artificiale

    Supera facilmente le barriere linguistiche con le traduzioni in parallelo AI per documenti Word e PDF, garantendo un'interpretazione perfetta.

  • Criar PowerPoint com IA

    Crea e abbellisci file PPT con un semplice clic

    Trasforma facilmente le tue idee in presentazioni straordinarie, grazie alla potenza dell'IA. Crea e abbellisci file PPT con un semplice clic

Random Posts

I miei preferiti in Instagram

Archivio