Προγραμματισμός παιχνιδιών σε C # χρησιμοποιώντας SDL.NET

Ένα από τα προβλήματα με την ανοιχτή πηγή είναι ότι τα έργα μερικές φορές φαίνεται να πέφτουν από το δρόμο ή να κάνουν σύγχυση. Πάρτε το SDL.NET. Παραβλέποντας τον ιστότοπο προς πώληση, αποκαλύπτεται μια αναζήτηση στο διαδίκτυο cs-sdl.sourceforge.net ένα έργο που φαίνεται να έχει σταματήσει τον Νοέμβριο του 2010. Δεν νομίζουμε ότι έχει σταματήσει, αλλά μοιάζει ακριβώς όπως έχει.

Εάν δεν γνωρίζετε C #, θα πρέπει πρώτα να μάθετε πώς να πρόγραμμα στο C #. Κοιτάζοντας αλλού, συναντήσαμε το πλαίσιο Tao που συνδέεται με την ιστοσελίδα Mono που φαίνεται να καλύπτει την ίδια περιοχή και προσθέτοντας υποστήριξη για τον ήχο κλπ. Αλλά κοιτάζοντας το sourceforge (και πάλι!), Έχει αντικατασταθεί από OpenTK αλλά η εστίαση είναι το OpenGL. Ωστόσο, περιλαμβάνει επίσης το OpenAL, οπότε η εγκατάσταση των δύο (cs-sdl και OpenTK) φαίνεται να είναι ο δρόμος προς τα εμπρός.

Μέρος της εγκατάστασης OpenTk απέτυχε. το NS (shader) επειδή δεν έχουμε εγκαταστήσει το VS 2008! Ωστόσο, το υπόλοιπο ήταν εντάξει. Δημιουργήσαμε ένα έργο C # Console και ξεκινήσαμε να παίζουμε με το SDL.NET. Η online τεκμηρίωση μπορεί να βρεθεί εδώ.

instagram viewer

Κοιτάζοντας πίσω, μπορούμε να δούμε ότι το πλαίσιο OpenTK δεν ήταν απαραίτητο ως τέτοιο, ότι το SDL.NET εγκατέστησε τα πάντα, αλλά αυτό δεν ήταν σαφές τότε. Χρησιμοποιεί ακόμα το πλαίσιο Tao, παρόλο που η ανάπτυξη αυτού έχει αντικατασταθεί από το OpenTK. Είναι λίγο συγκεχυμένο και ελπίζουμε ότι η ομάδα SDL.NET θα φέρει στο μέλλον μια έκδοση συμβατή με το OpenTk.

Δεν είναι, όπως πιστεύαμε, ένα λεπτό περιτύλιγμα γύρω από SDL, αλλά προσθέτει σημαντική πρόσθετη λειτουργικότητα. Υπάρχουν ορισμένες κατηγορίες που παρέχονται για να δώσετε τα εξής:

Εντοπίστε τα δύο dlls SDL.NET (SdlDotNet.dll και Tao. Sdl.dll) καθώς και τα dlls OpenTK και προσθέστε τα στις αναφορές του έργου. Μετά την εγκατάσταση, τα dlls βρίσκονται στο Program Files \ SdlDotNet \ bin (σε 32 bit Windows και Program Files (x86) \ SdlDotNet \ bin σε 64 bit Windows. Κάντε δεξί κλικ στην ενότητα Αναφορές στην Εξερεύνηση λύσεων, στη συνέχεια κάντε κλικ στην επιλογή Προσθήκη αναφοράς και επιλέξτε την καρτέλα Αναζήτηση. Αυτό ανοίγει ένα παράθυρο διαλόγου Εξερεύνηση και μετά τον εντοπισμό των dlls επιλέξτε τότε και κάντε κλικ στο ok.

Ένα τελευταίο πράγμα, κάντε κλικ στην επιλογή Προβολή \ Ιδιότητες για να ανοίξετε τις σελίδες ιδιοτήτων και στην πρώτη καρτέλα (Εφαρμογή) Αλλαγή τύπου εξόδου από την εφαρμογή Κονσόλα στην εφαρμογή Windows. Εάν δεν το κάνετε αυτό, όταν το πρόγραμμα εκτελείται για πρώτη φορά και ανοίγει το κύριο παράθυρο SDL, θα ανοίξει και ένα παράθυρο κονσόλας.

Είμαστε έτοιμοι να ξεκινήσουμε και έχω δημιουργήσει μια σύντομη εφαρμογή παρακάτω. Αυτό το blits τυχαία μεγέθους και εντοπίζονται ορθογώνια και κύκλους στην επιφάνεια του παραθύρου σε 1.700 ανά δευτερόλεπτο με ρυθμό καρέ 50 καρέ ανά δευτερόλεπτο.

Αυτό το 1.700 προέρχεται από τον ορισμό του αριθμού που αναγράφεται ανά πλαίσιο σε 17 και την εμφάνιση των καρέ ανά δευτερόλεπτο στη λεζάντα Window χρησιμοποιώντας το Video. WindowCaption. Κάθε πλαίσιο αντλεί 17 γεμάτους κύκλους και ορθογώνια, 17 x 2 x 50 = 1.700. Αυτός ο αριθμός εξαρτάται από την κάρτα γραφικών, την CPU κ.λπ. Είναι μια εντυπωσιακή ταχύτητα.

// Από τον David Bolton, http://cplus.about.com
χρησιμοποιώντας το σύστημα.
χρησιμοποιώντας το σύστημα. Σχέδιο;
χρησιμοποιώντας SdlDotNet. Γραφικά.
χρησιμοποιώντας SdlDotNet. Πυρήνας;
χρησιμοποιώντας SdlDotNet. Γραφικά. Πρωτομαγίες.
δημόσια τάξη ex1
{
ιδιωτική const int wwidth = 1024;
ιδιωτική const int wheight = 768;
ιδιωτική στατική επιφανειακή οθόνη.
ιδιωτική στατική Τυχαία r = νέα Τυχαία ();
δημόσιο στατικό κενό Κύριο (συμβολοσειρά [] args)
{
Οθόνη = Βίντεο. SetVideoMode (wwidth, wheight, 32, ψευδών, ψευδών, ψευδών, αληθινών);
Εκδηλώσεις. TargetFps = 50;
Εκδηλώσεις. Κλείσιμο + = (QuitEventHandler);
Εκδηλώσεις. Σημειώστε + = (TickEventHandler);
Εκδηλώσεις. Τρέξιμο() ;
}
ιδιωτικό στατικό κενό QuitEventHandler (αποστολέας αντικειμένου, QuitEventArgs args)
{
Εκδηλώσεις. QuitApplication ();
}
ιδιωτικό στατικό κενό TickEventHandler (αποστολέας αντικειμένου, TickEventArgs args)
{
για (var i = 0; i <17; i ++)
{
var rect = νέο ορθογώνιο (νέο σημείο (r. Επόμενη (wwidth-100), r. Επόμενη (wheight-100)),
νέο μέγεθος (10 + r. Επόμενο (wwidth - 90), 10 + r. Επόμενη (wheight - 90)))?
var Col = Χρώμα. Από το Argb (r. Επόμενο (255), r. Επόμενο (255), r. Επόμενο (255)).
var CircCol = Χρώμα. Από το Argb (r. Επόμενο (255), r. Επόμενο (255), r. Επόμενο (255)).
μικρή ακτίνα = (μικρή) (10 + r. Επόμενη (από -90)).
var Circ = νέος κύκλος (νέο σημείο (r. Επόμενη (wwidth-100), r. Επόμενη (wheight-100)), ακτίνα).
Οθόνη. Συμπληρώστε (rect, Col);
Circ. Σχεδίαση (οθόνη, CircCol, ψευδής, αληθής);
Οθόνη. Ενημέρωση ();
Βίντεο. WindowCaption = Εκδηλώσεις. Fps. ToString ();
}
}
}

Το βίντεο παρέχει μεθόδους για τη ρύθμιση της λειτουργίας βίντεο, τη δημιουργία επιφανειών βίντεο, την απόκρυψη και εμφάνιση του δρομέα του ποντικιού και την αλληλεπίδραση με το OpenGL. Όχι ότι θα κάνουμε OpenGL για λίγο.

Εδώ το αντικείμενο Video χρησιμοποιείται για να ρυθμίσετε το μέγεθος και την ανάλυση του παιχνιδιού Παράθυρο (η πλήρης οθόνη είναι μια επιλογή). Οι παράμετροι για το SetVideoMode σας επιτρέπουν να αλλάξετε αυτές τις 13 και οι υπερφορτώσεις σας παρέχουν μεγάλη ποικιλία. Υπάρχει ένα αρχείο .chm (μορφή βοήθειας html των Windows) στον φάκελο doc που τεκμηριώνει όλες τις κλάσεις και τα μέλη.

Το αντικείμενο "Εκδηλώσεις" διαθέτει ένα πρόγραμμα τερματισμού συμβάντων "Έξοδος", το οποίο σας επιτρέπει να προσθέσετε κλείδωμα λογικής και θα πρέπει να καλέσετε συμβάντα. QuitApplication () για να ανταποκριθεί στον χρήστη που κλείνει την εφαρμογή. Οι εκδηλώσεις. Το tick είναι πιθανώς ο σημαντικότερος χειριστής συμβάντων. Καλεί τον καθορισμένο χειριστή συμβάντων σε κάθε πλαίσιο. Αυτό είναι το μοντέλο για την ανάπτυξη του SDL.NET.

Μπορείτε να ρυθμίσετε τον επιθυμητό ρυθμό καρέ και να μειώσω τον βρόχο στο 5 και να αλλάξω το Targetfps στα 150 που το έβαλα σε 164 καρέ ανά δευτερόλεπτο. Το TargetFps είναι ένα σχήμα μπάλαpark? θέτει καθυστερήσεις για να σας πλησιάσει, αλλά τα Γεγονότα. Το Fps είναι αυτό που παραδίδεται.

Όπως και η αρχική μη παράθυρα έκδοση SDL, το SDL.NET χρησιμοποιεί επιφάνειες για απόδοση στην οθόνη. Μια επιφάνεια μπορεί να κατασκευαστεί από ένα αρχείο γραφικών. Υπάρχει ένας μεγάλος αριθμός ιδιοτήτων και μεθόδων που καθιστούν δυνατή την ανάγνωση ή την εγγραφή εικονοστοιχείων καθώς και να σχεδιάσετε τα αρχέτυπα των γραφικών, να μπλοκάρετε άλλες επιφάνειες, ακόμα και να σκουπίσετε μια επιφάνεια σε ένα αρχείο δίσκου για λήψη screenshots.

instagram story viewer