Programowanie gier w C # za pomocą SDL.NET

click fraud protection

Jednym z problemów związanych z oprogramowaniem typu open source jest to, że projekty czasami wydają się zawodzić lub przybierać mylące zmiany. Weź SDL.NET. Ignorowanie witryny na sprzedaż ujawnia wyszukiwanie w Internecie cs-sdl.sourceforge.net projekt, który wydaje się być zakończony w listopadzie 2010 r. Nie sądzimy, że się zatrzymał, ale po prostu wygląda tak.

Jeśli nie znasz C #, musisz najpierw nauczyć się, jak to zrobić program w C #. Szukając gdzie indziej, natrafiliśmy na platformę Tao połączoną ze stroną Mono, która wydaje się obejmować ten sam obszar i dodawać obsługę dźwięku itp. Ale patrząc na sourceforge (ponownie!) Został zastąpiony przez OpenTK ale nacisk kładziony jest na OpenGL. Jednak zawiera również OpenAL, więc instalacja tych dwóch (cs-sdl i OpenTK) wydaje się być rozwiązaniem.

Część instalacji OpenTk nie powiodła się; NS (moduł cieniujący), ponieważ nie mamy zainstalowanego VS 2008! Jednak reszta była w porządku. Stworzyliśmy projekt konsoli C # i zaczęliśmy grać z SDL.NET. Dokumentację online można znaleźć tutaj.

instagram viewer

Patrząc wstecz, widzimy, że środowisko OpenTK jako takie nie było potrzebne, że SDL.NET zainstalował wszystko, ale wtedy nie było to jasne. Nadal używa Tao Framework, mimo że jego rozwój został zastąpiony przez OpenTK. Jest to trochę mylące i mamy nadzieję, że zespół SDL.NET wyda w przyszłości wersję zgodną z OpenTk.

Nie jest to, jak myśleliśmy, tylko cienkie, okrągłe opakowanie SDL, ale dodaje znaczną dodatkową funkcjonalność. Dostępnych jest kilka klas zapewniających:

Znajdź dwie biblioteki dll SDL.NET (SdlDotNet.dll i Tao. Sdl.dll), a także biblioteki DLL OpenTK i dodaj je do odwołań do projektu. Po instalacji biblioteki DLL znajdują się w Program Files \ SdlDotNet \ bin (w 32-bitowym systemie Windows i Program Files (x86) \ SdlDotNet \ bin w 64-bitowym systemie Windows. Kliknij prawym przyciskiem myszy sekcję Odwołania w Eksploratorze rozwiązań, a następnie kliknij Dodaj odwołanie i wybierz kartę Przeglądaj. Zostanie otwarte okno dialogowe Eksploratora i po zlokalizowaniu bibliotek DLL wybierz, a następnie kliknij przycisk OK.

I ostatnią rzeczą, kliknij Widok \ Właściwości, aby otworzyć strony Właściwości i na pierwszej karcie (Aplikacja) Zmień typ danych wyjściowych z aplikacji konsoli na aplikację systemu Windows. Jeśli nie zrobisz tego przy pierwszym uruchomieniu programu i otworzy główne okno SDL, otworzy się również okno konsoli.

Jesteśmy teraz gotowi do rozpoczęcia, a poniżej stworzyłem krótką aplikację. To łączy losowo rozmieszczone prostokąty i okręgi na powierzchni okna przy 1700 rysowanych na sekundę z częstotliwością 50 klatek na sekundę.

1700 pochodzi z ustawienia liczby rysowanej na klatkę na 17 i wyświetlania klatek na sekundę w podpisie okna za pomocą wideo. WindowCaption. Każda ramka rysuje 17 wypełnionych kół i prostokątów, 17 x 2 x 50 = 1700. Liczba ta zależy od karty graficznej, procesora itp. To imponująca prędkość.

// By David Bolton, http://cplus.about.com
using System;
using System. Rysunek;
za pomocą SdlDotNet. Grafika;
za pomocą SdlDotNet. Rdzeń;
za pomocą SdlDotNet. Grafika. Prymitywy;
klasa publiczna ex1
{
private const int wwidth = 1024;
private const int wheight = 768;
prywatny statyczny ekran powierzchniowy;
prywatny statyczny Losowy r = nowy Losowy ();
public static void Main (string [] args)
{
Ekran = wideo. SetVideoMode (wwidth, wheight, 32, false, false, false, true);
Wydarzenia TargetFps = 50;
Wydarzenia Wyjdź + = (QuitEventHandler);
Wydarzenia Zaznacz + = (TickEventHandler);
Wydarzenia Biegać() ;
}
private static void QuitEventHandler (nadawca obiektu, argumenty QuitEventArgs)
{
Wydarzenia QuitApplication ();
}
private static void TickEventHandler (nadawca obiektu, argumenty TickEventArgs)
{
dla (var i = 0; i <17; i ++)
{
var rect = nowy prostokąt (nowy punkt (r. Dalej (szerokość - 100), r. Dalej (wheight-100)),
nowy rozmiar (10 + r. Dalej (szerokość - 90), 10 + r. Dalej (wheight - 90)));
var Col = Kolor. FromArgb (r. Dalej (255), r. Dalej (255), r. Dalej (255));
var CircCol = Kolor. FromArgb (r. Dalej (255), r. Dalej (255), r. Dalej (255));
krótki promień = (krótki) (10 + r. Dalej (wheight - 90));
var Circ = nowy okrąg (nowy punkt (r. Dalej (szerokość - 100), r. Dalej (wheight-100)), promień);
Ekran. Wypełnienie (rect, Col);
Circ. Draw (Screen, CircCol, false, true);
Ekran. Aktualizacja() ;
Wideo. WindowCaption = Zdarzenia. Fps. ToString ();
}
}
}

Wideo zapewnia metody ustawiania trybu wideo, tworzenia powierzchni wideo, ukrywania i pokazywania kursora myszy oraz interakcji z OpenGL. Nie dlatego, że będziemy robić OpenGL przez jakiś czas.

W tym przypadku obiekt wideo służy do ustawienia rozmiaru i rozdzielczości okna gry (pełny ekran jest opcją). Parametry SetVideoMode pozwalają je zmienić, a 13 przeciążeń zapewnia dużą różnorodność. W folderze doc znajduje się plik .chm (format pomocy HTML Windows) dokumentujący wszystkie klasy i członków.

Obiekt Events ma moduł obsługi zdarzeń Quit, który umożliwia dodanie logiki zamykania i należy wywoływać zdarzenia. QuitApplication (), aby odpowiadał użytkownikowi zamykającemu aplikację. Wydarzenia. Tick ​​jest prawdopodobnie najważniejszym modułem obsługi zdarzeń. Wywołuje określoną procedurę obsługi zdarzeń dla każdej ramki. Jest to model dla całego rozwoju SDL.NET.

Możesz ustawić żądaną liczbę klatek na sekundę, a zmniejszając pętlę do 5 i zmieniając Targetfps na 150, uruchomiliśmy ją z prędkością 164 klatek na sekundę. TargetFps jest figurką na boisku; opóźnia to zbliżenie cię do tej liczby, ale Wydarzenia. Dostarczono Fps.

Podobnie jak oryginalna nieokreślona wersja SDL, SDL.NET używa powierzchni do renderowania na ekranie. Powierzchnię można zbudować z pliku graficznego. Istnieje wiele właściwości i metod, które umożliwiają odczyt i zapis pikseli, a także rysuj prymitywy graficzne, blituj inne powierzchnie, a nawet zrzuć powierzchnię do pliku dyskowego w celu pobrania zrzuty ekranu.

instagram story viewer