Percorso: ilMac.net > Scuola di Mac > Archivio > Gli Apple Game Sprockets


Gli Apple Game Sprockets

Cosa sono e a cosa servono - 1a parte

La "rinascita" della piattaforma Macintosh dal punto di vista ludico é ormai un fatto famoso ed evidente. Con le macchine di ultima generazione, come G3, G4 e iMac, Apple ha incoraggiato moltissimo gli sviluppatori di giochi a portare i loro prodotti su Mac, e infatti da qualche tempo i giochi più famosi escono contemporaneamente sia per PC che per Mac. Per "attirare" gli sviluppatori non é però sufficiente proporre computer potentissimi: occorre sviluppare tecnologie che rendano semplice e attraente la programmazione dei giochi stessi. Un esempio ben noto é OpenGL, il moderno motore grafico 3D recentemente portato su Mac. Meno noti, ma forse più importanti, sono gli Apple Game Sprockets: un set di estensioni (librerie, per la precisione) che spesso ci consigliano di installare, senza spiegare cosa sono e a cosa servono. Queste quattro librerie sono nate nell'ormai lontano 1996, con lo scopo di facilitare lo sviluppo di giochi per Macintosh. Nacquero però in un periodo di agonia per Apple; mal documentate e piene di bug, ottennero scarso successo tra i programmatori. Addirittura Apple pensò di stroncarne lo sviluppo, non portandole su Rhapsody. Con il ritorno di Steve Jobs, e la rinascita di Apple, i Game Sprockets furono salvati e ne venne ripreso rapidamente lo sviluppo. Giunti ora alla versione 1.7.3 (scaricabile cliccando qui), vengono utilizzati da quasi tutti i giochi, shareware o commerciali che siano, e conviene quindi tenerli sempre installati e aggiornati. Incorporati in MacOS 9, saranno portati probabilmente anche su MacOS X. Ma perché sono così importanti? Ognuna di queste librerie (DrawSprocket, InputSprocket, NetSprocket e SoundSprocket) contiene del codice, già pronto e collaudato, che i programmatori possono utilizzare nei loro giochi, senza doverlo riscrivere. Non é la sola tecnologia a funzionare così; librerie simili sono OpenTransport e anche OpenGL. Gli Sprockets sono utilissimi perché raggruppano funzioni indispensabili a tutti i giochi, e che sono, se non sempre uguali, molto simili da gioco a gioco. Utilizzando queste librerie, gli sviluppatori si possono concentrare solo sugli aspetti propri del loro gioco, quindi possono sviluppare meglio i loro prodotti. Per fare un paragone, possiamo pensare di costruire un'auto: se ci vengono già forniti il motore e le altre parti interne, possiamo concentrarci sulla carrozzeria e l'abitacolo, creando un prodotto esteticamente migliore e magari più funzionale. In che modo aiutano, quindi, questi GameSprockets? Vediamo in dettaglio i servizi che ognuna di queste librerie offre.

DrawSprocket

Questa libreria si occupa degli aspetti grafici e relativi al video del gioco. Tutti i giochi hanno dei requisiti grafici: primo fra tutti, quello di nascondere scrivania e programmi mentre si gioca. Secondo, attivare una specifica risoluzione del monitor (di solito 640x480 ma sempre più spesso 1024x768) e riportarla alla precedente quando si termina il gioco. Terzo, una tecnica definita double buffering, che non essendo quasi mai menzionata necessita di una spiegazione. Per muovere una serie di oggetti sullo schermo, il gioco deve:

  • Calcolare la loro nuova posizione.
  • Cancellare la loro immagine precedente.
  • Ridisegnarla nella nuova posizione.

Essendo continuamente cancellate e ridisegnate, le immagini (sprites) mostrano però un orrendo effetto di sfarfallio, che bisogna evitare. I programmatori hanno ideato un astuto trucchetto: all'inizio del gioco, viene creato uno schermo "virtuale" nella RAM, che ovviamente il giocatore non vede. Durante il gioco, ogni fotogramma viene cancellato e ridisegnato su questa pagina "nascosta"; dopodiché questa viene copiata, pixel per pixel, sul monitor vero, mostrando all'utente l'immagine completa. Dato che gli sprites sono cancellati e disegnati su una pagina invisibile, lo sfarfallio non si presenta. Lo schermo virtuale é detto back buffer, e questa tecnica é il double buffering. Tutto ciò richiede una grande quantità di codice; nascondere scrivania, barra dei menu eccetera é un problema piuttosto spinoso. Per copiare il back buffer sul monitor, bisogna poi scrivere codice molto veloce, dato che bisogna effettuare una copia pixel per pixel. Nemmeno modificare la risoluzione e il numero di colori del monitor é facile. Utilizzando DrawSprocket, invece, tutti questi problemi vengono risolti con poco codice, perché DrawSprocket contiene già le funzioni necessarie. All'apertura del gioco, si "dice" allo Sprocket che risoluzione video si desidera, quanti colori servono e di che colore deve essere lo sfondo. DrawSprocket fa tutto il resto: nasconde i menu e la scrivania, cambia risoluzione e crea lo schermo virtuale. Durante il gioco si disegnano i fotogrammi e DrawSprocket copia lo schermo virtuale su quello vero con una sola riga di codice. Molto comodo. In pratica, il programmatore deve preoccuparsi solo di disegnare le immagini (e ovviamente gestirne il movimento). Ma una delle cose più interessanti di DrawSprocket é la possibilità di gestire il page-flipping, che ultimamente, con schede grafiche sempre più potenti, va molto di moda. Copiare il back buffer dalla RAM alla memoria video (VRAM) é un procedimento abbastanza lento, specie a risoluzioni alte: infatti, ogni pixel del back buffer deve essere letto e riscritto sul monitor. Pensate ad una risoluzione di 1024x768: i pixel sono circa 800.000! Se si dispone di sufficiente VRAM, conviene creare il back buffer direttamente in una "pagina" VRAM della scheda video: in questo modo, per visualizzare il back buffer basta solo dire alla scheda video di "spostare" il monitor sulla pagina desiderata. Questo é il page-flipping: un bel risparmio, in termini di velocità. Come se non bastasse, DrawSprocket fornisce altre funzioni di minore utilità, come la dissolvenza graduale dell'immagine sullo schermo. Dato che queste funzioni sono indispensabili in tutti i giochi, questo é lo Sprocket più utilizzato.

apple,giochi



Data di pubblicazione: 27-05-2000
L'intero contenuto di questo sito è © dal 1998 del Team di ilMac.net, è vietata ogni riproduzione senza il consenso scritto da parte degli autori.