Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

24.09.2007, 10:22

eigene engine

Hallo, ich bin neu hier
programmier am liebsten im borland c++ builder 5 bzw 6

ich wolte eine eigene kleine grafik engine schreiben,
sie soll nicht sehr aufwendig sein, nur bevor ich anfange wollte ich mal fragen an was man alles denken sollte.

die grafik soll für ein 2d spiel sein, ähnlich wie gta, bzw diablo.
die bilder von den figuren wollte ich in einen walkcykle speichern.

meine erste überlegungen:

ich wollte die bilder/figuren/objekte in einem array speichern
Array[welchesobjekt][bewegung][winkel]
welches objekt: figur, tier, objekt...
bewegung: wenn die figur steht = 0, wenn sie einen schritt nach vorne macht = 1, wenn sie das linke bein nachzieht = 2... ich hoffe das ist verständlich :D
winkel: in welche richtung steht/läuft das objekt

ich wollte erstmal alle objekte die ich brauche mit allen bewegungen in das array laden...
ich weiß aber nicht ob das schnell genug ist.

da ich bisher nur rundenbasierte spiel geschrieben habe, oder live spiele ohne bilder...

danke

euer meta

2

24.09.2007, 10:35

Ich kenne zum Thema Grafik-Engine Programmierung ein gutes Video-Tutorial (C#).

Vielleicht hilft dir das etwas weiter.
http://www.microsoft.com/germany/msdn/co…torials.mspx#t4
Guck dir mal Teil 4 an.


An deiner Stelle würde ich eine Klasse für deine Sprites erzeugen, die die Grafiken beinhalten (bzw. Pointer zu den Grafiken) und Funktionen beinhaltet, die das Ganze blitten. Den Delay könntest du so auch ganz einfach verändern.
Du könntest aber auch eine Render-Funktion schreiben, die eine Sprite-Instanz rendert (Dies wäre in deinem Fall wohl besser, da du eine Grafik-Engine programmieren willst).

By the way: Was wird das für ein Spiel?

Mfg
Sprachen: C/C++, C#, Assembler (16-Bit), QuickBASIC

3

24.09.2007, 12:11

hmm das offline schauen geht nicht
und beim anmelden wollen sie einfach zu viele infos.
aber so ein tut ist glaube ich nicht schlecht


könntest du mir das


Zitat

An deiner Stelle würde ich eine Klasse für deine Sprites erzeugen, die die Grafiken beinhalten (bzw. Pointer zu den Grafiken) und Funktionen beinhaltet, die das Ganze blitten. Den Delay könntest du so auch ganz einfach verändern.
Du könntest aber auch eine Render-Funktion schreiben, die eine Sprite-Instanz rendert (Dies wäre in deinem Fall wohl besser, da du eine Grafik-Engine programmieren willst).


bitte nochmal genauer erklären
sprites sind die einzelnen bilder.
und mit blittern meinst du sowas wie buffern?
oder


was fürn spiel, gute frage, erstmal nur die engine ^^


danke für die antwort

euer meta

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

4

24.09.2007, 16:03

Du köntest statt eines Arrays Strukturen verwenden, die eben diese Datein speichern. Wäre wohl übersichtlicher und leichter zu erweitern.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
enum MoveState
{
MS_STAND,
MS_STEP,
MS_WALK
};

struct Object
{
MoveState MoveSt;
float degree;
CObject* pObject;
}


Setzt natürlich voraus, dass du Klassen für das Objekt erstellt hat. Wenn nicht, dann halt auch per enum.

DasBlub

Alter Hase

Beiträge: 802

Wohnort: Schweiz

Beruf: Programmierer

  • Private Nachricht senden

5

24.09.2007, 18:33

Zitat von »"Metatron"«

hmm das offline schauen geht nicht
und beim anmelden wollen sie einfach zu viele infos.
aber so ein tut ist glaube ich nicht schlecht


schreib doch einfach überall "asdf" rein (ausser beim screenname und bei der e-mail ;) ), das ist denen vermutlich ziemlich egal, und du wirst msdn immer wieder brauchen.

6

25.09.2007, 13:07

Blitten heißt, dass die Grafik auf dem Bildschirm oder einem Buffer "gemalt" wird, also praktisch angezeigt wird.

Zurück zu deinem Problem:
Wenn du z.B. eine Sprite Klasse hast...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
class CSprite
{
   private:
   ...
   ...
   public:
   BITMAP *Step1;
   BITMAP *Step2;
   BITMAP *Step3;
};

... und eine dazu passende Render-Methode...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
void RenderSprite(CSprite Instance)
{
   if(Time < 50)
   {
       blit(Instance.Step1);
   }
   ...
   ...
}

Dann geht das ganze einfacher, als mit so einem Array.
Sprachen: C/C++, C#, Assembler (16-Bit), QuickBASIC

7

26.09.2007, 16:25

hmm ok

hab da noch eine frage
die einzelnen bilder wollte ich mir aus einem walkcycle holen

[list]stehenrechts...rechtsgehen
stehenrechtsoben...rechtsobengehen
stehenoben...obengehen
stehenobenlinks...obenlinksgehen
stehenlinks...linksgehen
stehenlinksunten...linksuntengehen
stehenunten...untengehen
stehenrechtsunten...rechtsuntengehen
springenrechts
springenrechtsoben
springenoben
springenobenlinks
springenlinks
springenlinksunten
springenunten
springenuntenrechts

aufspferd setzen
...
reiten
...
schießen
...
vom pferdschießen
...[/list]
wenn ich aber jede animation, in jede richtung brauche
sind das ganz schön viele bilder.
macht das so sinn, oder gibt es da einen einfacheren trick

danke
flo

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

8

26.09.2007, 16:29

in 3d modellieren, animieren und dann als bilder aus verschiedenen perspektiven rendern, so hat blizzard es damals gemacht.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

26.09.2007, 16:32

Zitat von »"Reboot"«


Dann geht das ganze einfacher, als mit so einem Array.


Aber ein Array ist dynamisch und das ist genau das Gegenteil.

Lieber etwas wie:

C-/C++-Quelltext

1
2
3
4
5
6
7
struct Sprite
{
private:
    std::vector< Bitmap* > frames;

   // ... 

};


Metatron:
Im Prinzip brauchst du für jede Bewegungsrichtung einzelne Bilder. Du kannst dir das aber etwas leichter machen in dem die einzelne Frames spiegelst.

Zitat von »"rewb0rn"«

in 3d modellieren, animieren und dann als bilder aus verschiedenen perspektiven rendern, so hat blizzard es damals gemacht.


Das wurd schon bei Doom so gemacht! :)
@D13_Dreinig

10

26.09.2007, 17:41

also ein 3d model machen
die einzelenen schritte abfotografieren
und spiegeln

:D ok

wie schwer ist es denn das 3d model direkt zu benutzen

flo

Werbeanzeige