Autor Beitrag
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Mi 03.06.09 17:52 
Hallo Delphianer,

Ich habe mir mal in der Letzen woche einiges mal durch den Kopf gehen lassen. Schwerpunkt dabei war halt die Programmierung von 2D Spielen, bzw. die sinnvollste Umsetzung davon.

Also Ich möchte jetzt erstmal einige Dinge anhand einiges Konkreten Beispieles fassen ich hoffe dass das kein Problem ist mit der Topicwirtschaft, da man ja eigentlich nur eine Frage pro Topic stellen soll, aber ich finde, dass man das sehr wohl zu Grundlagen zusammenfassen könnte.

Erst einmal die Grundidee, ein 2D Spiel der einfachsten Art: Pokemon. Klingt vielleicht ein wenig komisch oder gar lächerlich für den ein oder anderen, aber als RPG hat das Spiel eingeschlagen wie eine Bombe. Und es ist, finde ich, heute noch einies der Besten RPG's für den Gameboy!

Also Da ich jetzt nicht über das Spiel an sich Diskutieren will, sondern einiges über die allgemeine Porgrammierung nun zunächst meine "Ideen" wie man so etwas realisieren könnte.

Als Referenz nehme ich jetzt einfach mal die Andorra 2D Engine ;)


Also als Grundstruktur würde ich ein Gitter wählen, sagen wir 32x32. So würden wir dann unsere Level aufbauen, mit kleinen Tiles die jeweils 32x32 Pixel groß sind. In der Programmierung hab ich mir dafür halt 2 Varianten überlegt.

1) Man nimmt ein "Image" und zeichnet darauf halt jeweils die Tiles und bewegt dan ndas Komplette bild wenn der Character bewegt wird (Der Character ist ja immer in der Mitte)

2) Man nimmt ganz viele kleine Images (Sprites) und bewegt jedes einzeln

Meine Frage hierzu, welche von den beiden Methoden wäre denn "besser" ?
Ich meine mal irgendwo etwas gelesen zu haben wie "Ein Großes bild zu bewegen ist schwieriger als viele kleine", aber ich bin mir nicht mehr sicher ob ich mich da verlesen habe.


Dann weiter zur Struktur:
Das ganze wird ja ein Gitter, und da haette ich mir überlegt ob es da nicht sinnvoll wäre die jeweiligen Tiles irgendwo in einer "doppelten Array" zu halten. also im prinzip eine Array die man so anspricht: Array[x,y]. Würde für mich jetzt das beste Prinzip sein ein Solches Spiel in Coordinaten in solch ein Gitter unter zu ordnen.

Meien Frage hierzu wäre, ob ich damit richtig liege, oder ob es da ne besser Methode gibt?


So dann gehen wir mal weiter...
In dem Spiel Pokemon gibt es ja 2 Grundlegende ich nenn' sie jetzt mal "States" (Keine Ahnung was die Mehrzahl von Status auf deutsch ist und zu faul grad nachzuschauen sonst komm ich vom Thema ab). So diese States sind zu einem die Normale bewegung in der Welt und zum anderen Kämpfe. Nun war meine Überlegung wie man solche States umsetzt, da man ja im prinzip nur eine Oberfläche für die Ausgabe verwenden möchte (sollte?).
Also hatte ich da gedacht in der Main Funktion, die für das "Zeichnen" zuständig ist, einfach die Befehle in weiter Prozeduren einzuteilen & diese je nach State abzurufen.

Hierzu wieder meine Frage, ist das wirklich Sinnvoll oder gibt es da auch ne bessere Variante?


Zum Schluss soll das ja eventuell sogar ein Onlinfähiges Spiel werden, aber das möchte ich jetzt hier nicht weiter behandeln, da hab ich schon angefangen Narses TCP/IP Tutorials zu studieren und bis jetzt bin ich auch recht weit gekommen.

So ich hoffe das war's erstmal zu den Wesentlichen grundlagen, ich denke wie man andere Charactere einbidet und bewegt, das kann man von der eigenen Figur ableiten. Ich wollte auch nicht die 100%ige Umsetzung erfragen sondern nur ob die Ansätze "gut" sind und wie man solche Probleme Sinnvoll löst.


PS EIN ZUSATZ:
Das Gitter hatte ich gewählt um die Kollisionen besser zu erfassen, sprich also wenn der Char nun auf Position X/Y ist, und die Pfeiltaste-Oben drückt, kann ich eben schnell schauen aws auf dem feld X/Y-1 liegt und dem entsprechend handeln.

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.

Crosspost


Zuletzt bearbeitet von Niko S. am So 07.06.09 11:00, insgesamt 1-mal bearbeitet
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 03.06.09 18:02 
Moin!

Ich antworte jetzt mal nur auf einen Teil des Textes. ;)

Zitat:
Erst einmal die Grundidee, ein 2D Spiel der einfachsten Art: Pokemon
Klingt vielleicht ein wenig komisch oder gar lächerlich für den ein oder anderen, aber als RPG hat das Spiel
eingeschlagen wie eine Bombe. Und es ist, finde ich, heute noch einies der Besten RPG's für den Gameboy!

Ich gebe dir einen gut gemeinten Rat , lass die Finger von RPG's. Jedenfalls solltest du dich erstmal mit kleinen Spielen beschäftigen , denn der Aufwand für so ein Spiel ist immens.Teams arbeiten daran Monate.Wenn du ein Team guter Programmierer hast , die genug durchhalte Vermögen haben , kannste es ja versuchen. ;) Das ist fast ein typischer Fehler bei Spieleentwicklern.

Zitat:
Als Referenz nehme ich jetzt einfach mal die Andorra 2D Engine ;)

Das ist eine gute Wahl. ;)

Zitat:
Also als Grundstruktur würde ich ein Gitter wählen, sagen wir 32x32.
So würden wir dann unsere Level aufbauen, mit kleinen Tiles die jeweils 32x32 Pixel groß sind.

So wie ich die Pokemon-Welt in Erinnernug habe , war sie ziemlich groß.Wie willst du dann so eine große Welt realisieren. ;)

So für mehr habe ich grade keine Zeit ;)

MfG
Niko S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Mi 03.06.09 19:20 
Zitat:

Ich gebe dir einen gut gemeinten Rat , lass die Finger von RPG's. Jedenfalls solltest du dich erstmal mit kleinen Spielen beschäftigen , denn der Aufwand für so ein Spiel ist immens.Teams arbeiten daran Monate.Wenn du ein Team guter Programmierer hast , die genug durchhalte Vermögen haben , kannste es ja versuchen. ;) Das ist fast ein typischer Fehler bei Spieleentwicklern.


Ich wollte nicht unbedingt sofort ein richtiges RPG machen, es ging dabei viel mehr um die Art und weise wie dies Dargestellt wird, es ging um diese "Vogelperspektive" und dass das Spiel halt als Tiles besteht.
Nicht unbedingt in erster Linie um das RPG.
Es ist mir mittlerweile wohl bewusst wieviel Arbeit in so einem RPG steckt ;).



Zitat:
So wie ich die Pokemon-Welt in Erinnernug habe , war sie ziemlich groß.Wie willst du dann so eine große Welt realisieren.


Das ist richtig, die Welt ist groß, und deren richtige maße sind 16x16 wenn ich mich nicht täusche
Allerdings ist Pokemon in mehreren "karten" unterteil, womit diese "größe" recht einfach Realisiert werden kann, zumindest bin ich der Meinung, dass das recht "einfach" ist. (Einfach im Sinne von funktioniert ohne wirklich großen Rechenaufwand oder Schwierigkeiten mal in Anführungsstriche.)



Das ich mit Andorra 2D eine gute Wahl getroffen habe, habe ich mir schon fast gedacht, hab ein wenig mit der Engine schon experimentiert und auch vieles schon von ihr zumindest in Grundzügen verstanden.

Mir geht es bei diesem "Projekt" sag ich mal, nicht in erster Linie ein vollwertiges Spiel zu programmieren, sondern viel mehr um diese praktischen Erfahrungen zu sammeln anhand dieses Spiels.
Niko S. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Sa 06.06.09 15:12 
push...

// edit
nun ein Crosspost