Programovanie hier v jazyku C # pomocou SDL.NET

Jedným z problémov s otvoreným zdrojom je to, že projekty niekedy spadajú na vedľajšiu koľaj alebo sa zavádzajú. Vezmite SDL.NET. Pri ignorovaní webovej stránky na predaj sa objaví vyhľadávanie na webe cs-sdl.sourceforge.net projekt, ktorý sa podľa všetkého zastavil v novembri 2010. Nemyslíme si, že sa to zastavilo, ale vyzerá to tak.

Ak nepoznáte C #, musíte sa najskôr naučiť, ako na to program v C #. Pri pohľade na iné miesto sme narazili na rámec Tao prepojený na webovej stránke Mono, ktorý zrejme pokrýva rovnakú oblasť a dodáva podporu zvuku atď. Ale pri pohľade na sourceforge (opäť!), Bol nahradený OpenTK ale zameranie je OpenGL. Zahŕňa však aj OpenAL, takže inštalácia oboch (cs-sdl a OpenTK) sa zdala byť cestou vpred.

Časť inštalácie OpenTk zlyhala; NS (shader), pretože nemáme nainštalovaný VS 2008! Zvyšok však bol v poriadku. Vytvorili sme projekt konzoly C # a začali sme hrať s SDL.NET. Online dokumentáciu nájdete tu.

Pri spätnom pohľade vidíme, že rámec OpenTK nebol potrebný ako taký, že SDL.NET nainštaloval všetko, ale v tom čase nebolo jasné. Stále používa Tao Framework, aj keď jeho vývoj bol nahradený OpenTK. Je to trochu mätúce a dúfame, že tím SDL.NET v budúcnosti prinesie verziu kompatibilnú s OpenTk.

instagram viewer

Nejde o to, ako sme si mysleli, iba o tenký obal okolo SDL, ale o pridávanie ďalších funkcií. Existuje niekoľko tried, ktoré poskytujú:

Vyhľadajte dve knižnice SDL.NET (SdlDotNet.dll a Tao). Sdl.dll), ako aj knižnice OpenTK a pridajte ich do referencie projektu. Po inštalácii sú dll umiestnené v Program Files \ SdlDotNet \ bin (v 32-bitovom systéme Windows a Program Files (x86) \ SdlDotNet \ bin v 64-bitovom systéme Windows). Kliknite pravým tlačidlom myši na časť Referencie v aplikácii Solution Explorer, potom kliknite na položku Pridať referenciu a vyberte kartu Prehľadávať. Otvorí sa dialógové okno Prieskumník a po vyhľadaní knižníc dll vyberte a kliknite na tlačidlo ok.

Posledná vec, kliknite na Zobraziť \ Vlastnosti, aby sa otvorili stránky Vlastnosti a na prvej karte (Aplikácia) Zmeňte typ výstupu z aplikácie Konzola na Windows. Ak to neurobíte pri prvom spustení programu a otvorí sa hlavné okno SDL, otvorí sa aj okno konzoly.

Teraz sme pripravení začať a nižšie som vytvoril krátku aplikáciu. Tým sa prelínajú náhodne veľké a umiestnené obdĺžniky a kruhy na povrchu okna rýchlosťou 1 700 kreslených za sekundu pri frekvencii snímok 50 snímok za sekundu.

To 1700 pochádza z nastavenia počtu nakreslených na snímku na 17 a zobrazovania snímok za sekundu v titulku okna pomocou videa. WindowCaption. Každý rám, ktorý nakreslí 17 vyplnených kruhov a obdĺžnikov, 17 x 2 x 50 = 1 700. Toto číslo závisí od grafickej karty, procesora atď. Je to pôsobivá rýchlosť.

// David Bolton, http://cplus.about.com
pomocou systému;
pomocou systému. kreslenie;
pomocou SdlDotNet. grafika;
pomocou SdlDotNet. jadro;
pomocou SdlDotNet. Grafiky. primitíva;
verejná trieda ex1
{
súkromná konštanta int wwidth = 1024;
súkromná konštanta int wheight = 768;
súkromná statická povrchová obrazovka;
súkromné ​​statické Náhodné r = nové Náhodné ();
public static void Main (string [] args)
{
Screen = Video. SetVideoMode (wwidth, wheight, 32, false, false, false, true);
Diania. TargetFps = 50;
Diania. Ukončiť + = (QuitEventHandler);
Diania. Tick ​​+ = (TickEventHandler);
Diania. Run ();
}
súkromná statická medzera QuitEventHandler (odosielateľ objektov, arit QuitEventArgs)
{
Diania. QuitApplication ();
}
súkromná statická medzera TickEventHandler (odosielateľ objektu, arty TickEventArgs)
{
pre (var i = 0; i <17; i ++)
{
var rect = new Rectangle (nový bod (r. Ďalej (šírka - 100), r. Ďalší (wheight-100)),
nová veľkosť (10 + r. Ďalej (šírka - 90), 10 + r. Ďalší (wheight - 90)));
var Col = Farba. FromArgb (r. Ďalej (255), r. Ďalej (255), r. Ďalší (255));
var CircCol = Farba. FromArgb (r. Ďalej (255), r. Ďalej (255), r. Ďalší (255));
krátky polomer = (krátky) (10 + r. Ďalší (wheight - 90));
var Circ = nový kruh (nový bod (r. Ďalej (šírka - 100), r. Ďalší (šírka-100)), polomer);
Obrazovka. Výplň (pravý, stĺpec);
Circ. Kreslenie (Screen, CircCol, false, true);
Obrazovka. Aktualizácia ();
Video. WindowCaption = Udalosti. Fps. Natiahnuť() ;
}
}
}

Video poskytuje metódy na nastavenie režimu videa, vytváranie povrchov videa, skrytie a ukázanie kurzora myši a interakciu s OpenGL. Nie že by sme to urobili na chvíľu OpenGL.

Tu sa video objekt používa na nastavenie veľkosti a rozlíšenia okna hry (možnosť je celá obrazovka). Parametre pre SetVideoMode vám ich umožňujú zmeniť a 13 preťažení poskytuje veľa rôznych možností. V priečinku doc ​​je súbor .chm (formát pomoci Windows html), ktorý dokumentuje všetky triedy a členov.

Objekt Udalosti má obslužný program Ukončenie udalostí, ktorý vám umožňuje pridať logiku ukončenia a mali by ste volať udalosti. QuitApplication (), aby reagoval na používateľa, ktorý aplikáciu uzatvára. Udalosti. Tick ​​je pravdepodobne najdôležitejšou osobou zaoberajúcou sa podujatím. Vyvolá zadaný obslužný program udalosti každý rámec. Toto je model pre všetok vývoj SDL.NET.

Môžete nastaviť požadovanú frekvenciu snímok a moju redukciu slučky na 5 a zmenu Targetfps na 150 sme spustili 164 snímok za sekundu. TargetFps je figúrka z oblasti ballpark; oneskoruje vás, aby ste sa dostali bližšie k tejto čísle ako k udalostiam. Fps je to, čo sa dodáva.

Podobne ako pôvodná verzia SDL, ktorá nie je v okne, aj SDL.NET používa povrchy na vykreslenie na obrazovku. Povrch môže byť skonštruovaný z grafického súboru. Existuje veľké množstvo vlastností a metód, ktoré umožňujú čítať alebo zapisovať aj pixely nakreslite grafické primitívy, zmiešajte ďalšie povrchy a dokonca odložte povrch na disk, aby ste ho mohli nasnímať screenshoty.