Programavimas žaidimų C # naudojant SDL.NET

Viena iš atvirojo kodo problemų yra ta, kad kartais atrodo, kad projektai nugrimzta į kelią arba imasi painiavos. Paimkite SDL.NET. Nepaisant parduodamos svetainės, paaiškėja paieška internete cs-sdl.sourceforge.net projektas, kuris, atrodo, buvo sustabdytas 2010 m. lapkričio mėn. Mes nemanome, kad jis sustojo, bet tiesiog atrodo kaip turėjo.

Jei nežinote C #, pirmiausia turėsite išmokti programa C #. Ieškodami kitur, mes susidūrėme su „Tao“ sąsaja, susieta „Mono“ svetainėje, kuri, atrodo, apima tą pačią sritį ir prideda garso palaikymą. Bet žiūrint į „Sourceforge“ (vėlgi!), Jį pakeitė „OpenTK“ bet pagrindinis dėmesys ten yra „OpenGL“. Tačiau joje taip pat yra „OpenAL“, todėl dviejų (cs-sdl ir OpenTK) įdiegimas atrodė kaip kelias į priekį.

Nepavyko įdiegti dalies „OpenTk“; NS (Shader), nes mes neįdiegėme VS 2008! Vis dėlto visa kita buvo gerai. Sukūrėme „C # Console“ projektą ir pradėjome žaisti su SDL.NET. Internetinę dokumentaciją galite rasti čia.

Žvelgdami atgal galime pastebėti, kad „OpenTK“ sistema nebuvo reikalinga, kad SDL.NET įdiegė viską, bet tuo metu tai nebuvo aišku. Jis vis dar naudoja „Tao Framework“, net jei to kūrimą pakeitė „OpenTK“. Tai šiek tiek klaidina ir tikimės, kad SDL.NET komanda ateityje išves „OpenTk“ suderinamą versiją.

instagram viewer

Tai nėra, kaip mes manėme, tik plonas apvalus SDL apvalkalas, tačiau prideda nemažai papildomų funkcijų. Yra keletas klasių, kurių metu teikiama:

Raskite du SDL.NET failus („SdlDotNet.dll“ ir „Tao“). Sdl.dll), taip pat OpenTK dll ir pridėkite juos prie projekto nuorodų. Įdiegę dll, jie yra aplanke Program Files \ SdlDotNet \ bin (32 bitų „Windows“ ir Program Files (x86) \ SdlDotNet \ bin 64 bitų „Windows“. Dešiniuoju pelės mygtuku spustelėkite „Sprendimų naršyklės“ skyrių „Nuorodos“, tada spustelėkite „Pridėti nuorodą“ ir pasirinkite skirtuką „Naršyti“. Atidaromas „Explorer“ dialogo langas ir suradę dll pasirinkite tada ir spustelėkite gerai.

Paskutinis dalykas - spustelėkite „View \ Properties“, kad būtų atverti „Properties“ puslapiai, ir pirmame skirtuke („Application“) pakeiskite „Output“ tipą iš „Console“ programos į „Windows“ programą. Jei to nepadarysite pirmą kartą paleidę programą ir atidarę pagrindinį SDL langą, ji taip pat atvers konsolės langą.

Dabar esame pasirengę pradėti ir žemiau sukūriau trumpą programą. Tai lango atsitiktinai parinktais dydžiais išdėstyti stačiakampiai ir apskritimai ant lango paviršiaus, 1 700 nupiešti per sekundę, 50 kadrų per sekundę greičiu.

Tai 1 700 gaunami nustatant kadre nubrėžtą skaičių iki 17 ir rodant kadrus per sekundę lango antraštėje naudojant vaizdo įrašą. „WindowCaption“. Kiekvienas rėmelis nupiešia 17 užpildytų apskritimų ir stačiakampių, 17 x 2 x 50 = 1 700. Šis skaičius priklauso nuo vaizdo plokštės, procesoriaus ir kt. Tai įspūdingas greitis.

// Davidas Boltonas, http://cplus.about.com
naudojant sistemą;
naudojant sistemą. Piešimas;
naudojant „SdlDotNet“. Grafika;
naudojant „SdlDotNet“. Šerdis;
naudojant „SdlDotNet“. Grafika. Primityvai;
visuomenės klasė ex1
{
privatus const int plotis = 1024;
privatus const int ratas = 768;
privatus statinis paviršiaus ekranas;
privatus statinis Atsitiktinis r = naujas Atsitiktinis ();
public static void Main (eilutė [] args)
{
Ekranas = Vaizdo įrašas. „SetVideoMode“ (plotis, ašis, 32, klaidinga, klaidinga, klaidinga, tikra);
Renginiai. „TargetFps“ = 50;
Renginiai. Baigti + = („QuitEventHandler“);
Renginiai. Pažymėti + = (TickEventHandler);
Renginiai. Bėk ();
}
privati ​​statinė negaliojanti „QuitEventHandler“ (objekto siuntėjas, „QuitEventArgs“)
{
Renginiai. „QuitApplication“ ();
}
privati ​​statinė tuštuma TickEventHandler (objekto siuntėjas, TickEventArgs args)
{
už (var i = 0; i <17; aš ++)
{
var rect = naujas stačiakampis (naujas taškas (r. Kitas (plotis - 100), r. Kitas (100 ratų)),
naujas dydis (10 + r. Kitas (plotis - 90), 10 + r. Kitas (ratas - 90)));
var Col = Spalva. Iš „Argb“ (r. Kitas (255), r. Kitas (255), r. Kitas (255);
var CircCol = Spalva. Iš „Argb“ (r. Kitas (255), r. Kitas (255), r. Kitas (255);
trumpas spindulys = (trumpas) (10 + r. Kitas (ratas - 90));
var Circ = naujas apskritimas (naujas taškas (r. Kitas (plotis - 100), r. Kitas (ratas-100)), spindulys);
Ekranas. Užpildyti (tiesioji, stulpelio);
Apskritimas Piešti (ekranas, „CircCol“, klaidinga, tiesa);
Ekranas. Atnaujinti ();
Vaizdo įrašas. WindowCaption = Įvykiai. Fps. „ToString“ ();
}
}
}

Vaizdo įraše pateikiami metodai, skirti nustatyti vaizdo režimą, sukurti vaizdo paviršius, paslėpti ir parodyti pelės žymeklį bei sąveikauti su „OpenGL“. Ne tai, kad kurį laiką darysime „OpenGL“.

Čia „Video“ objektas naudojamas žaidimo lango dydžiui ir raiškai nustatyti (parinktis yra visas ekranas). „SetVideoMode“ parametrai leidžia juos pakeisti, o 13 perkrovų suteikia daugybę variantų. „Doc“ aplanke yra .chm failas („Windows html“ žinyno formatas), dokumentuojantis visas klases ir narius.

Objektas „Įvykiai“ turi „Quit events“ tvarkyklę, leidžiančią pridėti uždarymo logiką ir turėtumėte paskambinti Įvykiai. „QuitApplication“ (), kad ji atsilieptų vartotojui, uždarančiam programą. Renginiai. Ženklas yra bene svarbiausias įvykių prižiūrėtojas. Jis iškviečia nurodytą įvykių tvarkytuvą kiekvienu kadru. Tai yra visų SDL.NET kūrimo modelių.

Galite nustatyti norimą kadrų dažnį, o mano sumažinus kilpą iki 5 ir pakeitus „Targetfps“ į 150, mes jį gavome 164 kadrais per sekundę. „TargetFps“ yra kamuolių parko figūra; tai užtrunka, kad priartėtume prie tos figūros, bet įvykių. „Fps“ yra tai, kas pristatoma.

Kaip ir originali SDL versija be langų, SDL.NET ekrano vaizdavimui naudoja paviršius. Paviršius gali būti pagamintas iš grafikos failo. Yra daugybė ypatybių ir metodų, leidžiančių taip pat skaityti ar rašyti pikselius piešti grafikos primityvus, užmaskuoti kitus paviršius, net nugruntuoti paviršių disko faile, kad būtų galima paimti ekrano nuotraukos.

instagram story viewer