Программирование игр на C # с использованием SDL.NET

Одна из проблем с открытым исходным кодом заключается в том, что иногда кажется, что проекты отстают в сторону или принимают непонятные черты. Возьми SDL.NET. Игнорирование сайта на продажу, поиск в сети показывает cs-sdl.sourceforge.net проект, который, кажется, остановился в ноябре 2010 года. Мы не думаем, что это остановилось, а просто похоже, что это произошло

Если вы не знаете C #, вам сначала нужно научиться программа на C #. Посмотрев в другом месте, мы наткнулись на фреймворк Tao, связанный на веб-сайте Mono, который, кажется, охватывает ту же область и добавляет поддержку звука и т. Д. Но, глядя на sourceforge (снова!), Он был заменен OpenTK но в центре внимания находится OpenGL. Тем не менее, он также включает в себя OpenAL, так что установка двух (cs-sdl и OpenTK), кажется, путь вперед.

Часть установки OpenTk не удалась; NS (шейдер), потому что у нас не установлен VS 2008! Тем не менее, все остальное было в порядке. Мы создали проект C # Console и начали играть с SDL.NET. Электронную документацию можно найти здесь.

instagram viewer

Оглядываясь назад, мы видим, что платформа OpenTK не была нужна как таковая, что SDL.NET установил все, но в то время это было непонятно. Он по-прежнему использует Tao Framework, хотя его разработка была заменена OpenTK. Это немного сбивает с толку, и мы надеемся, что команда SDL.NET выпустит совместимую с OpenTk версию в будущем.

Это не, как мы думали, просто тонкая оболочка вокруг SDL, но добавляет значительную дополнительную функциональность. Существует ряд классов, обеспечивающих следующее:

Найдите две библиотеки SDL.NET (SdlDotNet.dll и Tao. Sdl.dll), а также библиотеки OpenTK и добавьте их в ссылки на проекты. После установки библиотеки находятся в Program Files \ SdlDotNet \ bin (в 32-битной Windows и Program Files (x86) \ SdlDotNet \ bin в 64-битной Windows. Щелкните правой кнопкой мыши раздел «Ссылки» в обозревателе решений, затем нажмите «Добавить ссылку» и выберите вкладку «Обзор». Это открывает диалоговое окно проводника и после обнаружения dll выберите и нажмите ОК

И последнее, нажмите View \ Properties, чтобы открыть страницы свойств, и на первой вкладке (Приложение) Изменить тип вывода с Консольного приложения на Приложение Windows. Если вы не сделаете этого, когда программа впервые запустится и откроет главное окно SDL, она также откроет окно консоли.

Теперь мы готовы начать, и я создал короткое приложение ниже. Это приводит к случайным размерам и расположению прямоугольников и окружностей на поверхности окна со скоростью 1700 кадров в секунду со скоростью 50 кадров в секунду.

Это 1700 получается от установки числа, нарисованного на кадр, до 17 и отображения кадров в секунду в заголовке окна с использованием видео. WindowCaption. Каждый кадр рисует 17 заполненных кругов и прямоугольников, 17 х 2 х 50 = 1700. Эта цифра зависит от видеокарты, процессора и т. Д. Это впечатляющая скорость.

// Дэвид Болтон, http://cplus.about.com
используя Систему;
используя систему. Рисование;
используя SdlDotNet. Графика;
используя SdlDotNet. ядро;
используя SdlDotNet. Графика. Примитивы;
публичный класс ex1
{
private const int wwidth = 1024;
private const int wheight = 768;
приватный статический поверхностный экран;
приватная статическая Random r = new Random ();
public static void Main (строка [] args)
{
Экран = Видео. SetVideoMode (wwidth, wheight, 32, false, false, false, true);
События. TargetFps = 50;
События. Quit + = (QuitEventHandler);
События. Tick ​​+ = (TickEventHandler);
События. Бегать() ;
}
закрытая статическая пустота QuitEventHandler (отправитель объекта, аргументы QuitEventArgs)
{
События. QuitApplication ();
}
закрытая статическая пустота TickEventHandler (отправитель объекта, аргументы TickEventArgs)
{
для (var i = 0; я <17; я ++)
{
var rect = new Rectangle (new Point (r. Далее (ширина-100), р. Следующая (wheight-100)),
Новый размер (10 + р. Далее (ширина - 90), 10 + р. Далее (вес - 90)));
var Col = Color. FromArgb (р. Далее (255), р. Далее (255), р. Далее (255));
var CircCol = Цвет. FromArgb (р. Далее (255), р. Далее (255), р. Далее (255));
короткий радиус = (короткий) (10 + р. Далее (вес - 90));
var Circ = новый круг (новая точка (r. Далее (ширина-100), р. Next (wheight-100)), радиус);
Экран. Заполнить (прямоугольник, Col);
ЦО. Draw (Screen, CircCol, false, true);
Экран. Обновить() ;
Видео. WindowCaption = События. Fps. Нанизывать() ;
}
}
}

Video предоставляет методы для установки режима видео, создания поверхностей видео, скрытия и отображения курсора мыши и взаимодействия с OpenGL. Не то, чтобы мы некоторое время занимались OpenGL.

Здесь объект Video используется для установки размера и разрешения окна игры (опция на весь экран). Параметры для SetVideoMode позволяют вам изменять их, а 13 перегрузок предоставляют множество вариантов. В папке doc есть файл .chm (формат справки html для Windows), в котором документируются все классы и члены.

Объект Events имеет обработчик событий Quit, который позволяет вам добавить логику закрытия и вам следует вызывать Events. QuitApplication (), чтобы заставить его отвечать пользователю, закрывающему приложение. События. Тик, возможно, самый важный обработчик событий. Он вызывает указанный обработчик события каждый кадр. Это модель для всех разработок SDL.NET.

Вы можете установить желаемую частоту кадров и уменьшить частоту кадров до 5 и изменить целевую частоту кадров до 150, чтобы она работала со скоростью 164 кадра в секунду. TargetFps - приблизительная фигура; это приводит к задержкам, чтобы приблизить вас к этой фигуре, кроме событий. Fps это то, что доставлено.

Как и в исходной не оконной версии SDL, SDL.NET использует поверхности для рендеринга на экран. Поверхность может быть построена из графического файла. Существует большое количество свойств и методов, которые позволяют считывать или записывать пиксели, а также рисовать графические примитивы, копировать другие поверхности, даже выгружать поверхность в файл на диске для скриншоты.

instagram story viewer