Wie codet man Spiele

Vitali

Grünschnabel
1. Frage was brauch man für Programme um ein komplettes 3D Spiel zu erstellen? Also 3D welten Engine Sounds eben alles was dazu gehört.

2. Das selbe wie bei 1. nur für 2D Spiele.

3. Gibt es eBooks darüber oder hat einer ne gute Quelle für einen Workshop?

4. Thx schonmal für eure Antworten :)

Wenn dieser Thread hier falsch ist dann tuts mir Leid ich wusste nicht genau wohin damit.
 
Man lern "coden", und zwar nicht in VB sonder erstmal C, und dann evt C++. Dann lernt man OpenGL (oder halt Direct3D), und dann hat man mal die Minimalvoraussetzungen.

Unterschätze das nicht!
 
2DGrafik mit WindowsAPI

Wenn du lieber schneller etwas zu stande bringen willst, als dich ewig mit C/C++ und OpenGL/DX zu beschäftigen, dürften für ein 2D-Spiel auch schon mal die Windowsboardmittel reichen.
Sicher schnell und gut ist das nicht, aber ich hab damit n ganz ordentliches Pacmanspiel hingekriegt. Die Rede ist hier von BitBlt.
Dazu musst du in VB das hier im Deklarationsteil einfügen.

Code:
Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long

Public Const SRCAND = &H8800C6
Public Const SRCPAINT = &HEE0086
Public Const SRCCOPY = &HCC0020
Public Const NOTSRCCOPY = &H330008
Public Const SRCERASE = &H440328
Public Const SRCINVERT = &H660046
Public Const DSTINVERT = &H550009

Um nun ein einfaches Bild zu zeichnen(ohne Transparenz) muss man der Funktion als ersten Parameter das Ziel übergeben, gefolgt von der Position und der Größe des Bildes. Darauf muss gibt man das Bild an und die Position im Bild, von der aus gezeichnet werden soll(wenn man nur einen Ausschnitt darstellen möchte). Als letzten Parameter wird einer der obigen Konstanten übergeben. In dem Fall SRCCOPY(das heißt das die Quelle(source->src) einfach kopiert wird).

Als Ziel und als Quelle muss man eine sogenannte hDC übergeben. Das ist eine Zugriffsnummer von Windows für Zeichenflächen. Soweit ich weiß hat ein Formular ein hDC als Parameter(mit dem Namen hDC eben) und Um die Zugriffsnummer auf ein StdPicture zu erhalten deklariert man eine Variable (Datentyp Long) z.B. 'handle'.

Code:
Dim handle as Long

Nun erzeugt man ein Handle mit Hilfe des Zielhandles.
Danach muss man das Bitmap noch mit dem Handle verknüpfen.
Code:
handle=CreateCompatibleDC(hDestDC);
SelectObject handle,BMP
Dabei ist BMP eine Variable vom Typ StdPicture.

Dann das ganze mit BitBlt blitten
Code:
BitBlt hDestDC, zStartX, zoStartY, width, height, handle, sStartX, sStartY, SRCCOPY

Falls ich noch erklären sollen, wie man Bilder vergrößert/verkleinert darstellen kann oder auch Sprites(transparente Bilder) dann postet das einfach. Ich erklärs dann schon. Wie man die StdPicture Variablen aus Dateien erzeugt kann ich nich mehr sagen. Das ganze is schon n paar Jahre für mich her. Aber da is sicher einfach nur ne Funktion "LoadPicture" oder so. Ja ich glaub so wars. Einfach mal in der Hilfe nachschaun...:-)

Mit den beiden Funktionen kann man Pixel schnell setzen und lesen:
Code:
Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Ja okay!:rolleyes: Das sind 3 Funktionen. Aber die SetPixelV Methode is noch schneller als SetPixel, da nicht jedesmal geprüft wird ob der zu setzende Pixel überhaupt sichtbar ist. Die angegebene Position muss einfach sichtbar sein. Sonst passiert irgendwas. Hab keine was, habs nich ausprobiert.:)
 

Neue Beiträge

Zurück