Programarea jocurilor în C # folosind SDL.NET Tutorial One

Una dintre problemele legate de open source este că, uneori, proiectele par să cadă pe margine sau să se transforme într-un mod confuz. Luați SDL.NET Ignorând site-ul de vânzare, o căutare pe web dezvăluie cs-sdl.sourceforge.net un proiect care se pare că s-a oprit în noiembrie 2010. Nu credem că s-a oprit, ci se pare că are.

Dacă nu știți C #, mai întâi va trebui să aflați cum să programați în C #. Căutând în altă parte, am dat peste cadrul Tao legat pe site-ul Mono, care pare să acopere aceeași zonă și să adauge suport pentru sunet etc. Cu toate acestea, include și OpenAL, astfel încât instalarea celor două (cs-sdl și OpenTK) părea a fi calea de urmat.

O parte din instalarea OpenTk a eșuat; NS (shader) pentru că nu avem VS 2008 instalat! Totuși, restul a fost în regulă. Am creat un proiect C # Console și am început să joc cu SDL.NET. Documentația online se găsește aici.

Privind în urmă, putem vedea că cadrul OpenTK nu era necesar ca atare, că SDL.NET a instalat totul, dar la vremea respectivă nu era clar. Încă folosește cadrul Tao Framework, chiar dacă dezvoltarea acestuia a fost înlocuită de OpenTK. Este puțin confuz și sperăm că echipa SDL.NET va scoate în viitor o versiune compatibilă OpenTk.

Ce este exact SDL.NET?

Nu este, așa cum ne-am gândit, doar un SDL sub formă de înveliș subțire, ci adaugă o funcționalitate suplimentară considerabilă. Există o serie de clase oferite pentru a furniza următoarele:

  • cronometre
  • Oferă Sprites, inclusiv animație și text
  • Oferă suprafețe pentru 2D și OpenGl
  • Oferă suport pentru încărcarea și redarea filmelor
  • Oferă asistență audio
  • Oferă Bezier, poligon (și texturi), pătrat, cerc, linie, plăcintă
  • Oferă suport de particule cu emițătoare și sprituri și manipulatori.
  • Oferă interfațarea cu formularele Windows printr-un PictureBox partajat cu suprafață.

preparate

Există mai multe lucruri pe care trebuie să le faci pentru a-l configura. Aici sunt ei:

Localizați cele două dll SDL.NET (SdlDotNet.dll și Tao.Sdl.dll), precum și dll-urile OpenTK și adăugați-le la referințele proiectului. După instalare, fișierele sunt localizate în fișierele programului \ SdlDotNet \ bin (pe un Windows pe 32 biți și fișiere de program (x86) \ SdlDotNet \ bin pe Windows pe 64 de biți. Faceți clic dreapta pe secțiunea Referințe din Exploratorul de soluții, apoi faceți clic pe Adăugare referință și selectați fila Parcurgere. Acesta deschide un dialog de Explorer și după localizarea dlls selectați apoi faceți clic pe ok.

SDL.NET utilizează setul de fișiere SDL și le instalează sub folderul lib. Nu le ștergeți!

Un ultim lucru, faceți clic pe View \ Properties, astfel încât să deschidă paginile Proprietății și pe prima filă (Aplicație) Modificați tipul de ieșire din Aplicația consolă în Aplicația Windows. Dacă nu faceți acest lucru atunci când programul rulează și deschide fereastra principală SDL, va deschide și o fereastră de consolă.

Suntem gata acum să începem și am creat o scurtă aplicație mai jos. Aceasta blit dreptunghiuri și cercuri și dimensiuni aleatorii localizate pe suprafața ferestrei la 1.700 desenate pe secundă la o rată de cadru de 50 de cadre pe secundă.

Că 1.700 vine de la setarea numărului desenat pe cadru la 17 și afișarea cadrelor pe secundă în titlul ferestrei folosind Video.WindowCaption. Fiecare cadru desenează 17 cercuri și dreptunghiuri, 17 x 2 x 50 = 1.700. Această cifră depinde de placa video, CPU etc. Este o viteză impresionantă.

// De David Bolton, http://cplus.about.com
folosind Sistem;
folosind System.Drawing;
folosind SdlDotNet.Graphics;
folosind SdlDotNet.Core;
folosind SdlDotNet.Graphics.Primitives;
clasa publică ex1

lățime const int = 1024;
private const int Wheight = 768;
Ecran privat de suprafață static;
private static Random r = new Random ();
public static void Main (string [] args)

Ecran = Video.SetVideoMode (lățime, Wheight, 32, false, false, false, false);
Evenimente.TargetFps = 50;
Evenimente.Quit + = (QuitEventHandler);
Evenimente.Tick + = (TickEventHandler);
Evenimente.Run ();

private static void QuitEventHandler (obiect expeditor, QuitEventArgs args)

Evenimente.QuitApplication ();

private static void TickEventHandler (obiect expeditor, TickEventArgs args)

for (var i = 0; i < 17; i++)

var rect = nou dreptunghi (punct nou (r. următor (lățime - 100), r. următor (Wheight-100)),
Nou Dimensiune (10 + r.Next (lățime - 90), 10 + r.Next (Wheight - 90)));
var Col = Color.FromArgb (r.Next (255), r.Next (255), r.Next (255));
var CircCol = Color.FromArgb (r.Next (255), r.Next (255), r.Next (255));
rază scurtă = (scurtă) (10 + r.Next (Wheight - 90));
var Circ = new Circle (new Point (r.Next (wwthth-100), r.Next (Wheight-100)), raza);
Screen.Fill (rect, Col);
Circ.Draw (Ecran, Circol, fals, adevărat);
Ecran.Udare ();
Video.WindowCaption = Evenimente.Fps.ToString ();


Dezvoltare orientată pe obiecte

SDL.NET este foarte orientat pe obiecte și există două obiecte predefinite care sunt utilizate în fiecare aplicație SDL.NET.

Video oferă metode pentru setarea modului video, crearea suprafețelor video, ascunderea și afișarea cursorului mouse-ului și interacțiunea cu OpenGL. Nu că vom face OpenGL o vreme.

Clasa Evenimente conține evenimente care pot fi atașate pentru a citi intrarea utilizatorului și alte evenimente diverse.

Aici obiectul video este folosit pentru a seta dimensiunea și rezoluția ferestrei jocului (ecranul complet este o opțiune). Parametrii pentru SetVideoMode vă permit să schimbați aceste, iar 13 suprasarcini oferă o multitudine de varietăți. Există un fișier .chm (format de ajutor Windows html) în folderul doc care documentează toate clasele și membrii.

Obiectul Evenimente dispune de un gestionar de închidere a evenimentelor care vă permite să adăugați logica de închidere și ar trebui să apelați la Events.QuitApplication () pentru a-l face să răspundă utilizatorului care închide aplicația. Events.Tick este posibil cel mai important instrument de gestionare a evenimentelor. Apelează gestionatorul de evenimente specificat la fiecare cadru. Acesta este modelul pentru toată dezvoltarea SDL.NET.

Puteți seta rata de cadru dorită și reducerea buclei la 5 și modificarea Targetfps la 150, am obținut-o la 164 de cadre pe secundă. TargetFps este o figură de bilet; se întârzie să vă apropie de această cifră, dar Events.Fps este ceea ce este livrat.

suprafeţe

Ca și versiunea inițială a SDL, fără Window, SDL.NET folosește suprafețe pentru redarea pe ecran. O suprafață poate fi construită dintr-un fișier grafic. Există un număr mare de proprietăți și metode care fac posibilă citirea sau scrierea pixelilor, precum și atragerea primitivelor grafice, blitarea altor suprafețe, chiar aruncarea unei suprafețe într-un fișier pe disc pentru preluarea capturilor de ecran..

SDL> NET oferă aproape tot ceea ce vă permite să creați jocuri. Vom analiza diversele caracteristici din următoarele câteva tutoriale, apoi vom trece la crearea de jocuri cu acesta.