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

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

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

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

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

Что такое SDL.NET ?

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

  • Таймеры
  • Предоставляет спрайты, включая анимацию и текст
  • Обеспечивает поверхности для 2D и OpenGl.
  • Обеспечивает поддержку загрузки и воспроизведения фильмов.
  • Обеспечивает поддержку звука
  • Обеспечивает рисование Безье, многоугольника (и текстуры), квадрата, круга, линии, круговой диаграммы.
  • Обеспечивает поддержку частиц с эмиттерами, спрайтами и манипуляторами.
  • Обеспечивает взаимодействие с формами Windows через общий PictureBox с поверхностью.

Подготовка

Есть несколько вещей, которые у вас есть сделать, чтобы настроить его. Вот они:

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

SDL.NET использует набор dll SDL и устанавливает их в папке lib. Не удаляйте их!

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

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

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

//Дэвид Болтон, http://cplus.about.com
с использованием System;
с использованием System.Drawing;
с использованием SdlDotNet.Graphics;
с использованием SdlDotNet.Core;
с использованием SdlDotNet.Graphics.Primitives;
публичный класс ex1
{
private const int wwidth = 1024;
private const int wheight = 768;
частный статический экран поверхности;
private static Random r = new Random ();
public static void Main (string [] args)
{
Screen = Video.SetVideoMode (wwidth, wheight, 32, false, false, false, true);
Events.TargetFps = 50;
Events.Quit + = (QuitEventHandler);
Events.Tick + = (TickEventHandler);
Events.Run ();
}
private static void QuitEventHandler (отправитель объекта, аргументы QuitEventArgs)
{
Events.QuitApplication ();
}
private static void TickEventHandler (объект-отправитель, TickEventArgs args)
{
for (var i = 0; i {
var rect = новый прямоугольник (новая точка (r.Next (wwidth- 100), r.Next (wheight-100)),
новый размер (10 + r.Next (wwidth – 90), 10 + r. Next (wheight – 90)));
var Col = Color.FromArgb (r.Next (255), r.Next (255), r.Next (255));
var CircCol = Color.FromArgb (r.Next (255), r.Next (255), r.Next (255));
short radius = (short) (10 + r.Next (wheight – 90)) ;
var Circ = new Circle (new Point (r.Next (wwidth- 100), r.Next (wheight-100)), radius);
Screen.Fill (rect, Col) ;
Circ.Draw (Screen, CircCol, false, true);
Screen.Update ();
Video.WindowCaption = Events.Fps.ToString ();
}
}
}

Объектно-ориентированная разработка

SDL.NET очень Объектно-ориентированный, и есть два предопределенных объекта, которые используются в каждом приложении SDL.NET.

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

Класс Events содержит события, которые могут быть присоединены для чтения пользовательского ввода и других различных событий..

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

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

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

Surfaces

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

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

Оцените статью
recture.ru
Добавить комментарий