Programování her v C # pomocí SDL.NET

click fraud protection

Jedním z problémů s otevřeným zdrojovým kódem je to, že se projekty někdy zdají být na vedlejší koleji nebo matoucí záměny. Vezměte SDL.NET. Při ignorování webu k prodeji se zobrazí vyhledávání na webu cs-sdl.sourceforge.net projekt, který se zdá být zastaven v listopadu 2010. Nemyslíme si, že se to zastavilo, ale prostě to vypadá.

Pokud neznáte C #, musíte se nejprve naučit, jak na to program v C #. Při pohledu jinde jsme narazili na rámec Tao propojený na webu Mono, který podle všeho pokrývá stejnou oblast a přidává podporu zvuku atd. Ale při pohledu na sourceforge (opět!), Byl nahrazen OpenTK ale fokus tam je OpenGL. Zahrnuje však také OpenAL, takže instalace obou (cs-sdl a OpenTK) se zdála být cestou vpřed.

Část instalace OpenTk selhala; NS (shader), protože nemáme nainstalovaný VS 2008! Zbytek však byl v pořádku. Vytvořili jsme projekt konzoly C # a začali hrát s SDL.NET. Online dokumentaci najdete zde.

Při pohledu zpět můžeme vidět, že rámec OpenTK nebyl jako takový potřeba, že SDL.NET nainstaloval všechno, ale v té době to nebylo jasné. Stále používá Tao Framework, i když jeho vývoj byl nahrazen OpenTK. Je to trochu matoucí a doufáme, že tým SDL.NET v budoucnu vydá verzi kompatibilní s OpenTk.

instagram viewer

Nejedná se o to, jak jsme si mysleli, pouze o tenký obal kolem SDL, ale přidává značné další funkce. Existuje řada tříd, které poskytují následující:

Vyhledejte dvě dll SDL.NET (SdlDotNet.dll a Tao. Sdl.dll) a OpenTK dlls a přidejte je do referencí projektu. Po instalaci jsou dll umístěna v Program Files \ SdlDotNet \ bin (na 32bitovém systému Windows a Program Files (x86) \ SdlDotNet \ bin na 64bitovém Windows). Klepněte pravým tlačítkem na část Reference v aplikaci Solution Explorer, pak klepněte na Přidat odkaz a vyberte kartu Procházet. Otevře se dialogové okno Průzkumníka a po nalezení dlls vyberte a poté klikněte na ok.

Ještě poslední věc, klikněte na View \ Properties, aby se otevřely stránky vlastností a na první kartě (Aplikace) Změňte typ výstupu z aplikace Console na Windows. Pokud tak neučiníte při prvním spuštění programu a otevře hlavní okno SDL, otevře se také okno konzoly.

Nyní jsme připraveni začít a níže jsem vytvořil krátkou aplikaci. Toto míchá náhodně velké a umístěné obdélníky a kruhy na povrchu okna rychlostí 1700 kreslených za sekundu při obnovovací frekvenci 50 snímků za sekundu.

To 1700 pochází z nastavení počtu nakreslených na snímek na 17 a zobrazování snímků za sekundu v titulku okna pomocí videa. WindowCaption. Každý rámeček nakreslí 17 vyplněných kruhů a obdélníků, 17 x 2 x 50 = 1700. Toto číslo závisí na grafické kartě, procesoru atd. Je to působivá rychlost.

// David Bolton, http://cplus.about.com
using System;
pomocí systému. Výkres;
pomocí SdlDotNet. Grafika;
pomocí SdlDotNet. Jádro;
pomocí SdlDotNet. Grafika. Primitiva;
veřejná třída ex1
{
soukromá konstanta int wwidth = 1024;
soukromá konstanta int wheight = 768;
soukromá statická povrchová obrazovka;
soukromý statický Náhodný r = nový Náhodný ();
public static void Main (řetězec [] args)
{
Screen = Video. SetVideoMode (wwidth, wheight, 32, false, false, false, true);
Události. TargetFps = 50;
Události. Ukončit + = (QuitEventHandler);
Události. Tick ​​+ = (TickEventHandler);
Události. Run ();
}
soukromý statický void QuitEventHandler (odesílatel objektů, arty QuitEventArgs)
{
Události. QuitApplication ();
}
soukromá statická mezera TickEventHandler (odesílatel objektu, TickEventArgs args)
{
pro (var i = 0; i <17; i ++)
{
var rect = new Rectangle (new Point (r. Další (šířka - 100), r. Další (wheight-100)),
nová velikost (10 + r. Další (šířka - 90), 10 + r. Další (wheight - 90)));
var Col = Barva. FromArgb (r. Další (255), r. Další (255), r. Další (255));
var CircCol = Barva. FromArgb (r. Další (255), r. Další (255), r. Další (255));
krátký poloměr = (krátký) (10 + r. Další (wheight - 90));
var Circ = new Circle (nový bod (r. Další (šířka - 100), r. Další (wheight-100)), poloměr);
Obrazovka. Výplň (pravý, Col);
Circ. Draw (Screen, CircCol, false, true);
Obrazovka. Aktualizace() ;
Video. WindowCaption = Události. Fps. ToString ();
}
}
}

Video poskytuje metody pro nastavení režimu videa, vytváření povrchů videa, skrytí a zobrazení kurzoru myši a interakci s OpenGL. Ne, že budeme nějakou dobu dělat OpenGL.

Zde se používá objekt Video k nastavení velikosti a rozlišení okna hry (možnost je celá obrazovka). Parametry pro SetVideoMode umožňují tyto změny měnit a 13 přetížení poskytuje spoustu různých možností. Ve složce doc je soubor .chm (formát nápovědy Windows html), který dokumentuje všechny třídy a členy.

Objekt události má obslužný program Ukončit události, který vám umožní přidat logiku zavření a měli byste volat události. QuitApplication (), aby reagoval na uživatele, který aplikaci uzavírá. Události. Tick ​​je pravděpodobně nejdůležitější obsluha události. Vyvolá zadaný obslužný program události každý rámec. Toto je model pro veškerý vývoj SDL.NET.

Můžete nastavit vaši požadovanou rychlost snímkování a moje redukci smyčky na 5 a změnou Targetfps na 150 jsme ji spustili rychlostí 164 snímků za sekundu. TargetFps je figurka pro míčový park; způsobí to zpoždění, abyste se dostali k té postavě, ale k událostem. Fps je to, co se dodává.

Stejně jako původní verze SDL bez okna, SDL.NET používá povrchy pro vykreslování na obrazovku. Povrch může být vytvořen z grafického souboru. Existuje velké množství vlastností a metod, které umožňují také číst nebo zapisovat pixely nakreslete grafická primitiva, smíchejte další povrchy a dokonce vyhodíte povrch do diskového souboru snímky obrazovky.

instagram story viewer