Programiranje igara u C # koristeći SDL.NET

Jedan od problema s otvorenim kodom je što projekti ponekad padaju uz obalu ili imaju zbunjujuće korake. Uzmi SDL.NET. Zanemarivanje web stranice na prodaju, otkriva se pretraživanje na webu cs-sdl.sourceforge.net projekt za koji se čini da je stao u studenom 2010. Ne mislimo da je stao, već samo izgleda kao da ima.

Ako ne znate C #, prvo ćete morati naučiti kako program u C #. Tražeći drugdje, naišli smo na okvir Tao-a povezan na Mono web stranici koji, čini se, pokriva isto područje i dodaje podršku za zvuk itd. Ali gledajući izvornu (opet!), To je izmijenjeno iz OpenTK ali fokus je tamo OpenGL. Međutim, ona također uključuje OpenAL, pa je izgleda da je instalacija dva (cs-sdl i OpenTK) put prema naprijed.

Dio instalacije OpenTka nije uspio; NS (shader) jer nemamo instaliran VS 2008! Međutim, ostalo je bilo ok. Napravili smo projekt C # Console i počeli igrati sa SDL.NET. Internetsku dokumentaciju možete pronaći ovdje.

Gledajući unatrag, možemo vidjeti da OpenTK okvir nije potreban kao takav, da je SDL.NET instalirao sve, ali to tada nije bilo jasno. I dalje koristi Tao okvir iako je razvoj tog programa nadmašio OpenTK. Malo je zbunjujuće i nadamo se da će tim SDL.NET u budućnosti iznijeti verziju kompatibilnu s OpenTk-om.

instagram viewer

Nije, kao što smo mislili, samo tanki omotači okrugli SDL, ali daje i dodatnu dodatnu funkcionalnost. Postoji nekoliko razreda koji pružaju sljedeće:

Pronađite dva SDL.NET dll (SdlDotNet.dll i Tao. Sdl.dll), kao i DLT OpenTK, i dodajte ih referenci projekta. Nakon instalacije dll se nalazi u programskim datotekama \ SdlDotNet \ bin (na 32-bitnom Windows-u i programskim datotekama (x86) \ SdlDotNet \ bin na 64-bitnom Windows-u. Desnom tipkom miša kliknite odjeljak Literatura u pregledniku Solution Explorer, a zatim kliknite Add Reference i odaberite karticu Browse. To otvara dijaloški okvir Explorera i nakon lociranja dll-a odaberite, a zatim kliknite OK.

Još zadnja stvar, kliknite na View \ Properties, tako da se otvori stranice sa svojstvima i na prvoj kartici (Application) Promijenite vrstu izlaza iz konzole u aplikaciju Windows. Ako to ne učinite kada se program prvi pokrene i otvori SDL glavni prozor, otvorit će se i prozor konzole.

Sad smo spremni za početak i u nastavku sam stvorio kratku aplikaciju. Time se na površini Windowsa razvlače pravokutnici i krugovi nasumično veličine i krugovi brzinom od 1.700 crtanih u sekundi pri brzini od 50 sličica u sekundi.

Tih 1.700 dolazi iz postavljanja broja izvučenog po kadru na 17 i prikazivanja okvira u sekundi u opisu Windowsa pomoću Video. WindowCaption. Svaki okvir crta 17 ispunjenih krugova i pravokutnika, 17 x 2 x 50 = 1.700. Ova brojka ovisi o video kartici, procesoru itd. Impresivna je brzina.

// David Bolton, http://cplus.about.com
pomoću sustava;
pomoću sustava. Crtanje;
koristeći SdlDotNet. Grafika;
koristeći SdlDotNet. Temeljni;
koristeći SdlDotNet. Grafika. primitivci;
javna klasa ex1
{
privatni const int wwidth = 1024;
privatni const int wheight = 768;
privatni statički površinski zaslon;
privatni statički Random r = novi Random ();
javna statička praznina Main (string [] args)
{
Zaslon = Video. SetVideoMode (širina, visina, 32, netočno, lažno, lažno, istinito);
Događaji. TargetFps = 50;
Događaji. Zatvorite + = (QuitEventHandler);
Događaji. Označite + = (TickEventHandler);
Događaji. Trčanje() ;
}
privatna statička praznina QuitEventHandler (pošiljatelj objekta, argumenti QuitEventArgs)
{
Događaji. QuitApplication ();
}
privatna statička praznina TickEventHandler (pošiljatelj objekta, arke TickEventArgs)
{
za (var i = 0; i <17; i ++)
{
var rect = novi pravokutnik (nova točka (r. Dalje (širina - 100), r. Sljedeće (visina-100)),
nova veličina (10 + r. Dalje (širina - 90), 10 + r. Dalje (visina - 90)));
var Col = Boja. FromArgb (r. Dalje (255), r. Dalje (255), r. Dalje (255));
var CircCol = Boja. FromArgb (r. Dalje (255), r. Dalje (255), r. Dalje (255));
kratki polumjer = (kratak) (10 + r. Dalje (visina - 90));
var Circ = novi krug (nova točka (r. Dalje (širina - 100), r. Sljedeći (visina-100)), polumjer);
Zaslon. Ispunite (rect, Col);
Circ. Crtanje (Screen, CircCol, false, true);
Zaslon. Ažuriraj() ;
Video. WindowCaption = Događaji. Fps. ToString ();
}
}
}

Video pruža metode za postavljanje video načina, stvaranje video površina, skrivanje i prikazivanje pokazivača miša i interakciju s OpenGL-om. Nije da ćemo neko vrijeme raditi OpenGL.

Ovdje se Video objekt koristi za postavljanje veličine i razlučivosti Prozora igre (cijeli zaslon je opcija). Parametri za SetVideoMode omogućuju vam izmjenu ovih 13 preopterećenja pružaju mnogo raznolikosti. U datoteci doc nalazi se .chm datoteka (oblik pomoći za Windows html) koja dokumentira sve klase i članove.

Objekt Events ima alat za obradu Zatvori događaje koji vam omogućuje dodavanje logike zatvaranja i trebali biste nazvati Događaji. QuitApplication () kako bi se odgovorilo na korisnika koji zatvara aplikaciju. Događaji. Tick ​​je možda najvažniji pokretač događaja. Svaki okvir naziva navedeni obradnik događaja. Ovo je model za sav razvoj SDL.NET-a.

Možete postaviti željenu brzinu kadrova, a moje smanjenje petlje na 5 i promjenu Targetfps-a na 150 dobili smo to pri 164 sličica u sekundi. TargetFps je figura s loptom; kasni kako bi se približio toj cifri, ali događajima. Fps je ono što se isporučuje.

Kao i izvorna inačica prozora SDL bez prozora, SDL.NET koristi površine za prikazivanje na zaslonu. Površina se može izraditi iz grafičke datoteke. Postoji veliki broj svojstava i metoda koji omogućuju čitanje ili pisanje piksela nacrtajte grafičke primitive, blitite druge površine, čak izbacite površinu u datoteku diska radi snimanja screenshot.

instagram story viewer