C# - Simples 2D-Spiel

Alexander12

Erfahrenes Mitglied
Hallo,

da bin ich mal wieder!
Kann mir jemand sagen, wo man Tutorials zum erstellen für ein kleines 2D-Spiel in C# bekommt, bitte in Deutsch, aber Englisch geht auch! ;)
Habe schon mithilfe meines Anderen Threads (C# - PictureBox mit Beinen?!) versucht 'rauszufinden, wie man eine PictureBox bewegen kann, oder wenn man ein Gebäude im Spiel baut, das ein Timer immer das Bild wechselt und so sich das Gebäude aufbaut. Doch nun komme ich mit dem nicht mehr weiter, was eigentlich klar war, denn nun wollte ich animierte Menschen erstellen etc. , die auch laufen und so ... :)
Die Tutorials müssen nicht gleich DirectX 9.0c beinhalten, mir reicht einfach zum Anfang ein simples 2D-Spiel, wo man Gebäude baut, Einheiten macht etc. ... ;) Die Einheiten und Gebäude des spiels können Bitmaps sein (Hab' schon 'ne Menge davon gemacht) und
das Spiel sollte in einem Form sein, also dann ich auch noch normale Steuerelemente wie z.B. eine ProgressBar oder Buttons platzieren kann.
Auch Pathfinding für die Einheiten etc. sollte das Tutorial behandeln.
Lan-Modus etc. brauche ich für den Anfang nicht, das wäre bestimmt auch viel zu schwierig am Anfang. Man sollte evtl. auch Sounds abspielen können.
Wenn jemand sowas schon Mal gemacht hat oder einen Tipp hat, soll er bitte Posten oder von seinem Anfang berichten, wie er das gemacht hat ;) ,
ich nehme was ich kriegen kann, denn es gibt so wenig Infos zu diesem Thema (Hab' schon im Forum gesucht und gegoogelt ...)

Danke schon Mal im Vorraus! :p

MfG Alexander12
 
Hi Alex.

Weil du den Thread mit der Picturebox erwähnst. Wenn du so zum Basteln an deinem Spiel beginnst.. Benutze nicht für alle Grafiken gleich ne Picturebox!

Wenn du mit nem 2D Spiel beginnen willst, lies dich in GDI+ ein. Die Grafikroutinen sind sehr einfach, vorallem im Vergleich zu DirectX. Wirst sicher schnell was zusammenbasteln können.

Falls du ein wenig Geld investieren willst könntest du dir das Buch GDI+ Grafikprogrammireung kaufen. Gebraucht bei Amazon ab 6 Euro. Neupreis 17 Euro.

Beispiel Code ist allerdings in VB.net geschrieben. Solltest aber eignetlich dennoch lesen können.

lg,
Alex
 
Um die Grundlagen zu erhalten reicht es sicherlich aus. Der zweite Teil ist leider noch in Arbeit, sollte aber auch bald mal fertig sein, da gibt es dann weiterführende Informationen. Aber nach diesem Tutorial solltest du zumindest wissen, in welchen Namespaces etc. du nachgucken kannst, wenn du etwas suchst.
 
Hallo.

Hab' schon viel von Engines gehört. Ist das einfacher als GDI+ oder besser ... ?
Wenn ja, gibt's da 'ne Empfehlung für 2D? :confused:

MfG Alexander12
 
Hallo.

Das mit der GDI+ ist klar, aber wären denn Engines leichter? Und wie baue ich so ein Spiel eigentlich im Hintergrund auf?
Bitte um Grobe beschreibung( 1., 2., 3., ...)

Vilen Dank für eure Antworten! ;-)

MfG Alexander12
 
Ich an deiner Stelle würde dir raten lern noch etwas C#, spiele mit GDI+ etwas rum. Damit kannst du locker die Sachen machen die du oben genannt hast. Du hast oben was von bewegten Leutchen geschrieben? Kein Problem, hier habe ich was programmiert was bei dir schon Erfolgserlebnis auslösen kann :D

Code:
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

class MainForm : Form
{
	Timer timer1 = new Timer();	
	Image background = Image.FromFile("background.jpg");
	Image mensch = Image.FromFile("mensch.gif");		
	int x;
	
	MainForm()
	{
		Text = "Bewegter Mensch";
		Size = new Size(400, 150);
		MaximizeBox = false;		
		FormBorderStyle = FormBorderStyle.FixedSingle;	
		CenterToScreen();
		
		Paint += new PaintEventHandler(OnPaint);
		timer1.Interval = 15;	
		timer1.Tick += new EventHandler(Ticker);
		timer1.Start();
		
		//Double-Buffer aktivieren um Flickern zu verhindern
		SetStyle(ControlStyles.UserPaint, true);
		SetStyle(ControlStyles.AllPaintingInWmPaint, true);
		SetStyle(ControlStyles.DoubleBuffer, true);
	}
	
	void Ticker(object sender, EventArgs e)
	{		
		if(x<Width)
			x+=2;
		else
			x=-100;		
		
		Invalidate();		
	}	
	
	void OnPaint(Object sender, PaintEventArgs e) 
	{
		Graphics g = e.Graphics;
		
		DrawStuff(g);		
	} 
	
	void DrawStuff(Graphics g)
	{					
		g.DrawImage(background, 0, 0);		
		g.DrawImage(mensch, x, 40);	
	}
		
	static void Main(string[] args)
	{
		Application.Run(new MainForm());
	}
}

Schon hast du einen Menschen der von Links nach Rechts läuft ;) Frag am besten Onkel :google: nach mehr GDI+ Tutorials, damit du es besser lernen kannst.

Zum Thema Engines:
http://de.wikipedia.org/wiki/Engine

Falls du dir einen Überblick über C# Engines machen willst, viel Spass:
http://www.axiom3d.org/
http://www.bunnz.com/
http://members.shaw.ca/merconconsulting/Lugh3D.htm
http://mcdx.sourceforge.net/
http://irrlicht.sourceforge.net/
http://ovorp.bryanlivingston.com/tiki-index.php
http://realmforge.com/
http://www.truevision3d.com/
http://www.wildtangent.com/default.asp?pageID=dev
http://www.flatredball.com/
http://www.mundosgm.com/haddd/

Grobe Beschreibung? Gerne doch: *nicht ernst nehmen*
1. referenzen includen
2. variablen erstellen
3. functionen aufrufen
4. logik programmieren
5. sich freuen

Interessanter Link:
http://indiegamedev.tucows.com/blog/_archives/2005/5/11/730686.html
 
Zuletzt bearbeitet:
Hi Counterfeit,

Danke für deine ausführliche Antwort, habe auch mal den Code probiert. Es funktioniert! Dafür erstmal danke, aber wie muss ich denn den Code ändern, dass der Mensch direkt zu einer stelle im Form läuft, auf die ich vorher mit der Maus geklickt habe, also wie in einem richtigen Spiel?
Code:
int a = Convert.ToInt16(MousePosition.X);
int b = Convert.ToInt16(MousePosition.Y);
Geht das?

MfG Alexander12
 
Wie du sicherlich von den unterschiedlichsten Spielen weißt, geht das. Und wenns dort geht, gehts auch unter C#.

Vielleicht solltest du dir aber auch Gedanken darüber machen, wie etwas verwirklicht werden kann.

Überlegen wir mal gemeinsam, welche Dinge für dein Vorhaben notwendig sind:

1. Selektierte Person
2. Klick irgendwohin
3. Person setzt sich in Bewegung

Gut, eine Person anklicken und merken welche angeklickt wurde - und natürlich deren Position. Deine Person kann nun irgendwie anders dargestellt werden - mit Rahmen, in einer anderen Farbe, wie auch immer.

Dann eben der Klick irgendwohin, also auf den Platz wo das Teil hinlaufen soll. Eigenltich auch nicht wirklcih ein Problem. Musst dir halb nur merken auf welche Koordinaten geklickt wurde und schon kannst dein Manderl bewegen. Probleme gibts, wenn da Hinternisse dazwischen sind. Da gibts aber recht gute Algorithmen, die dir da helfen können. Google gibt sicherlich einiges her, wenn du mal nach "Shortest Path" suchst.

Nun, und wenn dein Manderl läuft, musst halt abfragen ob es schon am Zielort ist.

Das sind eigentlich genau die Schritte die du brauchst, auf die du selber draufkommen solltest. Mit diesem Wissen sollte es nun auch möglich sein, das auszuprogrammieren. Schließelich brauchst du da wirklich noch nicht viel C# Wissen. Und sonst musst du dir halt ein Buch kaufen und das durchackern, denn immerhin schreibst du ein Spiel und nicht wir ;-)
 
Mama? Geht das?

Alexander12, wie alt bist? Schon mal dran gedacht, dass du dir selbst Infos besorgst, dir Sachen überlegst, Sachen ausprobierst?

Jetzt als Beispiel Spiele-Programmierung. Wird von vielen wohl als das coolste überhaupt angesehen. Im Netz findet man auch unglaublich vieles dazu.
Eine Resource dazu wäre gamedev.net

Also bitte such doch selbst mal ein wenig rum. Ohne eigenen Aufwand wirst nicht viel erreichen.
 

Neue Beiträge

Zurück