Laden...

Erstellen einer 2D-Tile-Anwendung

Erstellt von Horo vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.755 Views
H
Horo Themenstarter:in
1 Beiträge seit 2014
vor 10 Jahren
Erstellen einer 2D-Tile-Anwendung

Hallo C#-gemeinde,

folgendes: Ich möchte ein Spiel von Grund auf selber entwickeln. Das ganze möchte ich ganz gerne mit C# in VS2010 realisieren. Es soll ein 2D-Spiel werden, dass auf Teile basiert. Anfangen möchte ich erstmal damit, eine Spielfigur durch ein Raum zu bewegen (Also ein Player-Tile, ein Floor-Tile, ein Wall-Tile). Nach und nach kommen Features hinzu, aber dazu später.

Im Moment komme ich aber bei der Umsetzung nicht voran. Ich habe zwei Forms, ein Hauptmenü und ein Spielfeld. Wenn ich auf "Neues Spiel" Klicke, wird die Spielfeld-Form aufgerufen. Jetzt mein Problem:
Ich habe ein jeweils drei png's, keins davon krieg ich auf die Form "gemalt". Leider besitze ich auch nur magere Kenntnisse von grafischen Schnittstellen. Ich würde aber gerne DirectDraw oder sowas in der Richtung benutzen, oder vielleicht auch, was schon in .Net vorhanden ist (Grafisch anspruchsvoll soll das Spiel nicht werden, es werden im Prinzip nur Bitmaps hin und her bewegt.)

Könnte mir da jemand helfen, wie man das am besten macht und welche Technologie ich dafür am besten verwenden kann?
Soll ich das Spielfeld in einer Form malen oder kann ich dafür ein Extra-Fenster "zeichnen" lassen?
Für Hilfe wäre ich wirklich, wirklich dankbar..

Nochmal zur Info: Ich habe schon einige Zeit lang bei Google gesucht und viele Beiträge gelesen, die aber meisstens zuviel Overhead haben, umständlich erklärt oder aber an ein oder anderer Stelle dann doch nicht zu meinen Vorstellungen passten. Deswegen bitte keine Antworten wie "gibt genügend Tutorials da draussen.." etc. Ist zwar nett gemeint, aber ich wende mich jetzt hier an euch, weil ich einfach nichts passendes gefunden habe. Ich suche auch keinen, der mir ein kompletten Quellcode hinzaubert, sondern jemand, der mir die richtige Richtung weist.

PS: Falls ihr noch weitere Infos braucht, lasst es mich wissen.
Ich habe jetzt erstmal kein Quellcode gepostet, weil ich das eher auf eure Vorschläge hin, eh neu aufbauen werde.

mfg

5.942 Beiträge seit 2005
vor 10 Jahren

Hallo Horo

Wie versuchst du denn die PNGs zu zeichen?
Ich nehme an mit GDI+. Das kannst du gut nutzen, auch direkt auf die Form.

Wenn es aber anspruchsvoller wird, solltest du dann aber wegen der Performance eher auf andere Technologien ausweichen.

Siehe:

Das ein Tutorial an der einen oder anderen Seite nicht zu deinen Anforderungen passt, ist normal. Du musst dich anpassen, nicht das Tutorial 😉

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

T
2.224 Beiträge seit 2008
vor 10 Jahren

@Horo
Als Technik kann ich die SFML empfehlen.

Link:
http://www.sfml-dev.org/

Dabei handelt es sich um eine Lib zum entwickeln von Spielen.
Diese ist zwar in C++ geschrieben, es gibt aber auch Bindings für C#
Diese verwende ich auch bei einem 2D Game, was ich entwickle und letzte Woche von XNA auf SFML portiert habe.

WinForms als Basis zu nutzen ist aus meiner Erfahrung her eher unpassend.
Zwar braucht man als Basis immer eine grafische Anwendung, darum kümmern sich im Idealfall aber entsprechende Libs wie es eben SFML tut.

SFML bietet gute Tutorials die auch zeigen wie man einfache Texturen/Tiles rendert.
Ich habe mir z.B. eine Map Klasse gebaut.
Diese enthält dann ebenfalls Tiles.

Diese kann man dann über die Position des Sprites zeichnen lassen.
Die Spielfiguren sollte man aber nicht direkt als Tiles betrachten.
Die Grafiken der Figuren/Objekte sollte dann nur eben von der Fläche her die einer Tile sein.

Nachtrag:
Deinen Quellcode musst du nicht wirklich anpassen.
Wenn dein Code ideale Strukturen hat, musst du diese auch nur anpassen aber nicht von Grund auf neuentwickeln. 😃

Eine Neuentwicklung solltest du nur in Betracht ziehen wenn dein Code nicht optimale Performance hat oder die Strukturen hitnerher mehr Probleme machen als sie lösen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

F
6 Beiträge seit 2014
vor 10 Jahren

Eine gute Alternative wäre auch das XNA Framework. Wird zwar nicht mehr weiterentwickelt, aber für schnelle Ergebnisse eine super Sache.

XNA (Microsoft)

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo Horo,

für das, was du vor hast, reicht Windows Forms. Wie es damit geht, steht in [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox).

Falls du mit diesem - vielfach anfängererprobten - Tutorial nicht klar kommst, haben wir wohl ein Problem mit [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore

D
233 Beiträge seit 2008
vor 10 Jahren

Schau' dich nach GDI+ um und arbeite mit Doublebuffering. Das reicht in den meisten Fällen dicke.
Ansonsten halt noch Clipping für Performance und so weiter. Das ist kein Hexenwerk.