Programmazione di giochi in C # utilizzando SDL.NET

click fraud protection

Uno dei problemi con l'open source è che a volte i progetti sembrano cadere sul ciglio della strada o fare curve confuse. Prendi SDL.NET. Ignorando il sito Web in vendita, rivela una ricerca sul web cs-sdl.sourceforge.net un progetto che sembra essersi fermato a novembre 2010. Non pensiamo che si sia fermato ma sembra proprio che sia successo.

Se non conosci C #, dovrai prima imparare come programma in C #. Guardando altrove, ci siamo imbattuti nel framework Tao collegato al sito Web Mono che sembra coprire la stessa area e aggiungere supporto per il suono, ecc. Ma guardando su sourceforge (di nuovo!), È stato sostituito da OpenTK ma il focus è OpenGL. Tuttavia, include anche OpenAL, quindi l'installazione dei due (cs-sdl e OpenTK) sembra essere la strada da percorrere.

Parte dell'installazione di OpenTk non è riuscita; NS (shader) perché non abbiamo VS 2008 installato! Tuttavia, il resto era ok. Abbiamo creato un progetto console C # e abbiamo iniziato a giocare con SDL.NET. La documentazione online è disponibile qui.

instagram viewer

Guardando indietro, possiamo vedere che il framework OpenTK non era necessario in quanto tale, che SDL.NET ha installato tutto ma non era chiaro al momento. Utilizza ancora il Tao Framework anche se lo sviluppo di questo è stato sostituito da OpenTK. È un po 'confuso e speriamo che il team SDL.NET pubblicherà una versione compatibile OpenTk in futuro.

Non è, come pensavamo, solo un involucro sottile rotondo SDL, ma aggiunge considerevoli funzionalità extra. Esistono diverse classi fornite per fornire quanto segue:

Individua le due dll SDL.NET (SdlDotNet.dll e Tao. Sdl.dll) nonché le DLL OpenTK e aggiungerle ai riferimenti del progetto. Dopo l'installazione, le dll si trovano in Programmi \ SdlDotNet \ bin (su Windows a 32 bit e Programmi (x86) \ SdlDotNet \ bin su Windows a 64 bit. Fare clic con il tasto destro sulla sezione Riferimenti in Esplora soluzioni, quindi fare clic su Aggiungi riferimento e selezionare la scheda Sfoglia. Questo apre una finestra di dialogo Explorer e dopo aver individuato le DLL selezionare quindi e fare clic su OK.

Un'ultima cosa, fare clic su Visualizza \ Proprietà in modo da aprire le pagine Proprietà e sulla prima scheda (Applicazione) Cambia tipo di output da Applicazione console a Applicazione Windows. Se non lo fai quando il programma viene eseguito per la prima volta e apre la finestra principale di SDL, si aprirà anche una finestra della console.

Ora siamo pronti per iniziare e ho creato una breve applicazione di seguito. Questo unisce rettangoli e cerchi di dimensioni casuali e posizionati sulla superficie della finestra a 1.700 disegnati al secondo con una frequenza di 50 fotogrammi al secondo.

Quel 1.700 deriva dall'impostazione del numero disegnato per fotogramma su 17 e dalla visualizzazione dei fotogrammi al secondo nella didascalia della finestra usando Video. WindowCaption. Ogni cornice disegna 17 cerchi e rettangoli riempiti, 17 x 2 x 50 = 1.700. Questa cifra dipende dalla scheda video, dalla CPU ecc. È una velocità impressionante.

// Di David Bolton, http://cplus.about.com
utilizzando il sistema;
utilizzando il sistema. Disegno;
usando SdlDotNet. Grafica;
usando SdlDotNet. Nucleo;
usando SdlDotNet. Grafica. Primitivi;
classe pubblica ex1
{
private const int wwidth = 1024;
const privato int wheight = 768;
schermo di superficie statico privato;
Random statico privato r = new Random ();
public static void Main (string [] args)
{
Schermo = video. SetVideoMode (wwidth, wheight, 32, false, false, false, true);
Eventi. TargetFps = 50;
Eventi. Quit + = (QuitEventHandler);
Eventi. Tick ​​+ = (TickEventHandler);
Eventi. Correre() ;
}
vuoto statico privato QuitEventHandler (mittente oggetto, arg QuitEventArgs)
{
Eventi. QuitApplication ();
}
vuoto statico privato TickEventHandler (mittente oggetto, argomenti TickEventArgs)
{
per (var i = 0; i <17; i ++)
{
var rect = new Rectangle (nuovo punto (r. Avanti (larghezza- 100), r. Avanti (wheight-100)),
nuova dimensione (10 + r. Avanti (larghezza - 90), 10 + r. Successivo (wheight - 90)));
var Col = Colore. FromArgb (r. Avanti (255), r. Avanti (255), r. Successivo (255));
var CircCol = Colore. FromArgb (r. Avanti (255), r. Avanti (255), r. Successivo (255));
raggio corto = (corto) (10 + r. Avanti (peso - 90));
var Circ = new Circle (nuovo punto (r. Avanti (larghezza- 100), r. Successivo (wheight-100)), raggio);
Schermo. Fill (rect, Col);
Circ. Draw (Screen, CircCol, false, true);
Schermo. Aggiornare() ;
Video. WindowCaption = Eventi. Fps. Accordare() ;
}
}
}

Il video fornisce metodi per impostare la modalità video, creare superfici video, nascondere e mostrare il cursore del mouse e interagire con OpenGL. Non che faremo OpenGL per un po '.

Qui l'oggetto Video viene utilizzato per impostare le dimensioni e la risoluzione della finestra di gioco (a schermo intero è un'opzione). I parametri per SetVideoMode consentono di modificare questi e 13 sovraccarichi offrono molta varietà. C'è un file .chm (formato di aiuto html di Windows) nella cartella doc che documenta tutte le classi e i membri.

L'oggetto Events ha un gestore di eventi Quit che ti consente di aggiungere la logica di chiusura e dovresti chiamare Events. QuitApplication () per farlo rispondere all'utente che chiude l'applicazione. Gli eventi. Il segno di spunta è forse il gestore dell'evento più importante. Chiama il gestore eventi specificato per ogni frame. Questo è il modello per tutto lo sviluppo SDL.NET.

È possibile impostare la frequenza dei fotogrammi desiderata e il mio riducendo il loop a 5 e cambiando Targetfps a 150, lo facciamo funzionare a 164 frame al secondo. TargetFps è una figura da baseball; mette in ritardo per avvicinarti a quella cifra ma agli Eventi. Fps è ciò che viene consegnato.

Come la versione originale non SDL di SDL, SDL.NET utilizza le superfici per il rendering sullo schermo. Una superficie può essere costruita da un file grafico. Esistono numerose proprietà e metodi che consentono di leggere o scrivere pixel e disegna le primitive grafiche, dividi le altre superfici, scarica persino una superficie su un file del disco per scattare screenshot.

instagram story viewer