Jump to content
Unity Insider Forum

Spritesheets, GameObjekte und Spielerausrüstung


Droidspirit

Recommended Posts

Hallo,

 

bisher habe ich bei meinen Spielen immer 2D-Spritesheets erstellt und darüber die Animationen meiner Spielfiguren gehandelt. Das hat bisher auch immer ganz gut geklappt. Allerdings stößt man hier ja an gewisse Grenzen, sobald das Spiel etwas umfangreicher wird.

 

Bei meinem nächsten Spiel möchte ich den Player aufbauen bzw. ausrüsten können. D.h. die Spielfigur an sich wächst mit der Zeit heran und wird irgendwann erwachsen. Zusätzlich kann man die Figur mit Waffen, Rüstungen, Helme, usw. ausstatten.

 

Bei einem 3D Spiel mit 3D Modellen ist mir das klar, wie das funktioniert. Aber wie handhabe ich so etwas in einem 2D-Spiel? Die unglücklichste Art das zu lösen ist denke ich für jede Eventualität der Spielfigur (mit Helm, ohne Helm, mit Rüstung ohne Helm, mit Rüstung mit Helm, usw) für den kompletten Player Spritesheets zu erstellen. Das wird zwar funktionieren, ist aber extrem aufwändig und wenn man in dem Spiel auch noch zwischen verschiedenen Spielfiguren wählen kann wird es erst richtig heftig.

 

Also ist meine Überlegung, nur die Grundfigur als Spritesheet und die Equipments dann als eigene Sprites zu erstellen und diese dann als Gameobjekte dem Player anzuhängen? Aber wie verhält es sich dann, wenn der Player z.B. einen Angriff startet, in dem er sich eindreht. Das passt ja dann hinten und vorne nicht.

 

Oder man setzt den Player generell aus einzelnen GameObjekten zusammen (Kopf, Torso, Beine, usw. jeweils als eigene Sprites bzw. GameObjekten) und bewegt diese über die Transform-Komponente der Animatoren. Aber ich glaube hier unterliegt man dann wieder anderen Einschränkungen und so richtig professionell sehen die Spielfiguren dann auch nicht aus.

 

Wie seht ihr das denn?

 

Viele Grüße

 

Andre

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe einen Weltraumshooter gemacht mit einem Raumschiff mit austauschbaren Waffen. Jede Waffe hat ein eigenes Sprite (und natürlich eigenes Verhalten usw...). Auf dem Raumschiff ist ein Weaponslot mit Andock-GameObject enthalten. Dorthin wird die Waffe gespawned. Sammelt der Spieler eine neue Waffe auf, wird die alte gelöscht und die neue dahin gespawned.

 

Drehungen und Transforms laufen über das Parent-GO, das als Empty-GO erstellt wurde. Hat bei mir bisher keine Probleme gemacht..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für Deine Antwort.

 

Bei einem Raumschiff kann ich mir das auch noch ganz gut vorstellen. Aber wenn die Spielfigur jetzt z.B. ein Mensch wäre, dem man nach und nach Rüstungsteile anzieht (Brustpanzer, Armpanzer, Handschuhe) und er damit durch das Spielfeld (in Seitenansicht) läuft, dann könnte das denke ich schwieriger werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich sehe da keinen Unterschied. Dort, wo du z.B. Schulerteile anpappen willst, machst du einen Connector ran (der z.B. normalerweise aus einem leeren Gameobjekt mit Tag besteht). Der Tag bestimmt dann, was an dieser Stelle andocken darf. Der Connector für die Schulter ist ein Child vom Oberkörper, so dass alles, was diesen Connector als Parent hat, sich genauso bewegt wie der Oberkörper.

 

Wo siehst du da Probleme?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe mal ein Beispiel herausgesucht, um das zu veranschaulichen. Das Spiel hier ist nicht von mir:

 

 

Dort besteht der Player bzw. jeder seiner Aktionen aus Spritesheets, die animiert werden. Wenn ich die Spielfigur nun aber z.B. um Armpanzer erweitern wollte, oder um einen Helm, dann bleibt mir doch eigentlich nichts anderes übrig, als die ganzen Sprites eben für jede dieser Varianten neu zu zeichnen, oder? Einfach den Kopf als eigenes Child-Gameobjekt wird bei den komplexen Bewegungsabläufen so, denke ich, nicht funktionieren.

 

In meinem Spiel wird es eine Zeichentrick-Katze werden, die auf 2 Beinen läuft. Dieser kann man dann mit der Zeit Ausrüstung geben ...übertrieben gesagt könnte sie am Ende eine Rüstung wie ein Mechwarrior haben und so durch das Spiel laufen. Aber jedes einzelne Teil dieser Rüstung erwirbt man sich erst mit der Zeit dazu.

 

Hmm, ich überlege gerade, dass es wohl einzig von der Komplexität der Animationen abhängig ist, ob man nun alles in Spritesheets packen muß, oder man die Möglichkeit hat Child-Gameobjekte (so wie Du es beschrieben hast) zu verwenden. Bei Earn 2 Die z.B. ist es ja relativ einfach. Die einzelnen Child-GameObjekte des Fahrzeugs bekommen einfach ein neues Sprite.

 

Vielleicht gibt es in der Hinsicht auch ein paar gute Assets, die einem bei komplexen Animationen mit unterschiedlichen Spites unterstützen. Kennst Du da was?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei Sprite sheets ist es tatsächlich so, dass du z.B. eine Schulterrüstung oder eine Waffe für jede dargestellte Bewegung als einzelnes Sprite brauchst. Der Captain America im verlinkten Spiel besteht sicher aus hundert Einzelbildern aufwärts, je nach Anzahl der Moves, die er ausführen kann.

 

Wenn dein Spieler z.B. nur links oder rechts gehen kann und den Arm heben oder senken, brauchst du für den Handschuh eben vier Sprites. Kann der Spieler auch nach oben oder unten, sind es evtl. schon acht. Bei Schrägstellungen noch entsprechend mehr.

 

Ich hab dank eines Hinweises in nem Malzbie-Tutorial in 3ds max mal einen Asteroiden gebaut und den in unterschiedlichen Rotationen gerendert, mit Lichteinfall. Die Renderergebnisse hab ich dann als Sprites benutzt und als Animation zusammengeschaltet. Hat sehr beeindruckend ausgesehen. Das waren 36 Bilder, jeweils eine 10 Grad Drehung war ein Bild. Da soll es auch Tools geben, die das automatisieren, das hilft dir aber jetzt relativ wenig, denke ich.

 

Einfacher wäre ein 3D-Game. Da erstellst du das Mesh, und die Engine dreht das dann schon richtig hin.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja genau, das Tutorial von Malzbie hab ich auch durch gemacht. Das war echt klasse :-)

 

Mein nächstes Spiel erstelle ich diesmal nicht alleine. Ich mache das in einer Kooperation und mein Partner hat eine Grafikerin an der Hand, die sich um sämtliche Grafiken kümmern wird. Allerdings hat sie keine Erfahrung (genauso wie ich derzeit) mit Tools wie Cimema4D, Blender oder 3ds max. Das ich mich nicht um die Grafikerstellung kümmern muß ist absolut genial, weil das jedes Mal die Hälfte der Entwicklungszeit beansprucht. Dafür muß man sich im Vorfeld aber nochmal intensiver damitbeschäftigen, wie komplex die Animationen werden sollen.

 

Ein 3D-Game wäre sicher einfacher. Aber unter den gegebenen Umständen wird es wohl auf ein 2D Spiel hinaus laufen müssen. Ich kann ja schlecht sagen, die Grafikerin soll sich erst einmal mit den und den Tools auseinandersetzen. Ich bin da echt froh, dass ich die Grafikerstellung diesmal nicht selber machen muß :-)

 

Aber Du meinst schon, der Captain in dem Spiel besteht aus mehreren Child-GameObjects und z.B. die Handschuhe sind einzelne Animationen und die Beine dann auch wieder?

Ich denke, wenn man jedes Körperteil einzeln animiert und dann nur die Animationen austauscht, dann könnte es passieren, dass die Spielfigur in der Bewegung nicht "flüssig" rüberkommt. Beim Laufen bewegen sich ja nicht nur die Beine, die Arme bewegen sich ja auch und der Torso steht ja auch nicht still. Da wäre es doch dann eigentlich besser für jede Variante wirklich einzelne Spritesheets zu machen. Das wäre zwar enorm viel Arbeit, aber die Animationen wären in sich stimmig.

 

Okay, hey ich danke Dir vielmals für Deine Tipps. Das hilft mir wirklich sehr weiter. Wir haben zwar eine Grafikerin an der Hand, was absolut klasse ist. Aber sie ist eben keine Game-Designerin. Daher denke ich, es wäre vielleicht das Beste die Komplexität der Animationen einfach an unsere derzeitige Situation auszurichten und mit Spritesheets zu arbeiten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie das auch immer sein soll, es wird ne menge Arbeit sein.

Wenn die ganzen Frames schon erzeugt sind und es jetzt nur um Rüstungsteile geht, würde ich die Rüstungsteile als eine Art Layer erzeugen. Also für jedes Rüstungsteil ein extra Spritesheet erstellen. Beim Helm z.B. würde ich echt auf einen neuen Layer zu jedem Frame den Helm auf den Kopf malen und dann am Schluss diesen Layer als neues Sheet speichern.

So könntest du dann synchron in Unity mehrere Sprites übereinanderlegen (ganz unten der Player, Ebene drüber der Helm, Ebene drüber die Waffe usw. und alles auf den selben xy Punkt ) und hättest kein Problem mit Verschiebungen oder nicht angepassten Bewegungen. Das ist natürlich sehr Aufwendig, aber wahrscheinlich nicht viel besser zu lösen, wenn es rein 2D sein soll.

Die extra Sheets würden auch nicht so viel Speicher benötigen, da ja je Frame nur ein kleiner Teil mit Pixeln belegt ist. Der rest ist ja transparent.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also bisher haben wir noch keine Grafiken erstellt. Wir sind gerade mit den Vorbereitungen beschäftigt, arbeiten das Konzept aus und beschreiben den Spielablauf im Detail. Mitte August soll dann die Entwicklung starten.

 

Schau mal, ob ich das richtig verstanden habe :-) ...Du meinst, wir erstellen einmal den Spritesheet der Grundfigur an sich in Illustrator. Dann legen wir hier einen neuen Layer für den Kopf drüber und zeichnen hier z.B. den Helm für jedes einzelne Frame. Diese einzelnen Layer exportieren wir dann und in Unity nutzen wir für den Kopf ein eigenes GameObjekt mit dem selben xy Punkt, bei dem wir die Animationen dann einfach austauschen können.

 

Klingt nach einem guten Plan. Das muß ich mal so testen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber Du meinst schon, der Captain in dem Spiel besteht aus mehreren Child-GameObjects und z.B. die Handschuhe sind einzelne Animationen und die Beine dann auch wieder?

Nur wenn der gute Captain variable Ausrüstung hat. Sonst sind das einfache Sprites. Hier wäre mal ein Beispiel für so was:

 

http://www.vitamin3d.com/princespriteswb3.gif

 

Der Character auf dem Bild hat auch immer das gleiche an. Alle Animationen sind eben einzeln als Sprite aufgeführt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja genau, Hrungdak. So habe ich meine bisherigen Spielcharaktere auch erstellt.

 

Andererseits sind wir gerade am überlegen, ob wir erst einmal auf komplexe Ausrüstungsgegenstände verzichten und uns auf den Erwerb von Waffen und Spezialeigenschaften beschränken, wie z.B. DoublePunch, Energieschild, usw.

 

Dann hätten wir die Grundanimationen und wenn der Spieler eine Spezialanimation startet, dann läuft eben diese Animation durch und fertig.

 

Falls das Spiel dann wirklich erfolgreich werden sollte und über 1 Mio Downloads generiert, dann können wir ja immer noch einen zweiten Teil herausbringen, der dann die Umsetzung der komplexen Ausrüstungsgegenständen beinhaltet. Zu dem Zeitpunkt hätten wir dann ja auch mehr Budget zur Verfügung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...