Programmation de jeux en C # à l'aide de SDL.NET Tutorial One

L'un des problèmes de l'open source est que les projets semblent parfois tomber à la trappe ou prendre des virages déroutants. Prenez SDL.NET. Ignorant le site Web à vendre, une recherche sur le Web révèle cs-sdl.sourceforge.net un projet qui semble s'être arrêté en novembre 2010. Nous ne pensons pas qu'il s'est arrêté mais semble juste qu'il a.

Si vous ne connaissez pas C #, vous devrez d'abord apprendre à programmer en C #. En regardant ailleurs, nous sommes tombés sur le cadre Tao lié sur le site Web Mono qui semble couvrir le même domaine et ajouter un support pour le son, etc. Mais en regardant sur sourceforge (encore!), Il a été remplacé par OpenTK mais l'accent est mis sur OpenGL. Cependant, il inclut également OpenAL, donc l'installation des deux (cs-sdl et OpenTK) semblait être la voie à suivre.

Une partie de l'installation d'OpenTk a échoué; le NS (shader) car nous n'avons pas installé VS 2008! Cependant, le reste était ok. Nous avons créé un projet de console C # et commencé à jouer avec SDL.NET. La documentation en ligne se trouve ici.

Avec le recul, nous pouvons voir que le framework OpenTK n'était pas nécessaire en tant que tel, que SDL.NET a tout installé mais ce n'était pas clair à l'époque. Il utilise toujours Tao Framework même si son développement a été remplacé par OpenTK. C'est un peu déroutant et nous espérons que l'équipe SDL.NET sortira une version compatible OpenTk à l'avenir.

Qu'est-ce que SDL.NET?

Il ne s'agit pas, comme nous le pensions, d'un simple wrapper fin SDL, mais il ajoute des fonctionnalités supplémentaires considérables. Il existe un certain nombre de classes pour fournir les éléments suivants:

  • Minuteries
  • Fournit des sprites, y compris des animations et du texte
  • Fournit des surfaces pour 2D et OpenGl
  • Prend en charge le chargement et la lecture de films
  • Fournit un support pour l'audio
  • Fournit le dessin de Bézier, polygone (et textures), carré, cercle, ligne, tarte
  • Fournit un support de particules avec des émetteurs et des sprites et des manipulateurs.
  • Fournit une interface avec les formulaires Windows via une PictureBox partagée avec surface.

Les préparatifs

Il y a plusieurs choses que vous devez faire pour le configurer. Les voici:

Recherchez les deux DLL SDL.NET (SdlDotNet.dll et Tao.Sdl.dll) ainsi que les DLL OpenTK et ajoutez-les aux références du projet. Après l'installation, les DLL se trouvent dans Program Files \ SdlDotNet \ bin (sur un Windows 32 bits et Program Files (x86) \ SdlDotNet \ bin sur Windows 64 bits. Cliquez avec le bouton droit sur la section Références dans l'Explorateur de solutions, puis cliquez sur Ajouter une référence et sélectionnez l'onglet Parcourir. Cela ouvre une boîte de dialogue de l'Explorateur et après avoir localisé les DLL, sélectionnez puis cliquez sur ok.

SDL.NET utilise le jeu de DLL SDL et les installe sous le dossier lib. Ne les supprimez pas!

Une dernière chose, cliquez sur View \ Properties pour ouvrir les pages de propriétés et sur le premier onglet (Application) Changer le type de sortie de l'application console à l'application Windows. Si vous ne le faites pas lorsque le programme s'exécute pour la première fois et ouvre la fenêtre principale SDL, il ouvrira également une fenêtre de console.

Nous sommes maintenant prêts à commencer et j'ai créé une courte application ci-dessous. Cela bloque des rectangles et des cercles de taille aléatoire et situés sur la surface de la fenêtre à 1700 tracés par seconde à une fréquence d'images de 50 images par seconde.

Ces 1700 proviennent de la définition du nombre dessiné par image à 17 et de l'affichage des images par seconde dans la légende de la fenêtre à l'aide de Video.WindowCaption. Chaque cadre dessine 17 cercles et rectangles remplis, 17 x 2 x 50 = 1 700. Ce chiffre dépend de la carte vidéo, du processeur, etc. C'est une vitesse impressionnante.

// Par David Bolton, http://cplus.about.com
en utilisant le système;
en utilisant System.Drawing;
en utilisant SdlDotNet.Graphics;
using SdlDotNet.Core;
using SdlDotNet.Graphics.Primitives;
classe publique ex1

const int wwidth privé = 1024;
const int wheight = 768;
Écran de surface statique privé;
Random statique privé r = nouveau Random ();
public static void Main (chaîne [] arguments)

Screen = Video.SetVideoMode (wwidth, wheight, 32, false, false, false, true);
Events.TargetFps = 50;
Events.Quit + = (QuitEventHandler);
Events.Tick + = (TickEventHandler);
Events.Run ();

vide statique privé QuitEventHandler (expéditeur d'objet, arguments QuitEventArgs)

Events.QuitApplication ();

vide statique statique TickEventHandler (expéditeur d'objet, arguments TickEventArgs)

pour (var i = 0; i < 17; i++)

var rect = new Rectangle (nouveau Point (r.Next (wwidth- 100), r.Next (wheight-100)),
nouvelle taille (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));
rayon court = (court) (10 + r. Suivant (poids - 90));
var Circ = nouveau cercle (nouveau 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 ();


Développement orienté objet

SDL.NET est très orienté objet et deux objets prédéfinis sont utilisés dans chaque application SDL.NET.

La vidéo fournit des méthodes pour définir le mode vidéo, créer des surfaces vidéo, masquer et afficher le curseur de la souris et interagir avec OpenGL. Pas que nous allons faire OpenGL pendant un certain temps.

La classe Events contient des événements qui peuvent être attachés à la lecture des entrées utilisateur et d'autres occurrences diverses.

Ici, l'objet vidéo est utilisé pour définir la taille et la résolution de la fenêtre de jeu (le plein écran est une option). Les paramètres de SetVideoMode vous permettent de les modifier et 13 surcharges offrent une grande variété. Il y a un fichier .chm (format d'aide html Windows) dans le dossier doc documentant toutes les classes et les membres.

L'objet Events possède un gestionnaire d'événements Quit qui vous permet d'ajouter une logique de fermeture et vous devez appeler Events.QuitApplication () pour qu'il réponde à l'utilisateur qui ferme l'application. Events.Tick est probablement le gestionnaire d'événements le plus important. Il appelle le gestionnaire d'événements spécifié à chaque image. Ceci est le modèle pour tout développement SDL.NET.

Vous pouvez définir la fréquence d'images souhaitée et ma réduction de la boucle à 5 et la modification du Targetfps à 150, nous l'avons fait fonctionner à 164 images par seconde. TargetFps est une figure approximative; il met des retards pour vous rapprocher de ce chiffre mais le Events.Fps est ce qui est livré.

Surfaces

Comme la version originale non fenêtrée de SDL, le SDL.NET utilise des surfaces pour le rendu à l'écran. Une surface peut être construite à partir d'un fichier graphique. Il existe un grand nombre de propriétés et de méthodes qui permettent de lire ou d'écrire des pixels ainsi que de dessiner les primitives graphiques, de blit d'autres surfaces, voire de vider une surface dans un fichier disque pour prendre des captures d'écran.

SDL> NET fournit à peu près tout pour vous permettre de créer des jeux. Nous examinerons les différentes fonctionnalités au cours des prochains tutoriels, puis passerons à la création de jeux avec..