MaxB3D - Installationsanleitung

Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Neue Antwort erstellen

Thunder

Betreff: MaxB3D - Installationsanleitung

BeitragSo, Feb 05, 2012 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich habe mich entschlossen eine kurze Schritt-für-Schritt-Anleitung, wie man MaxB3D installiert, zu schreiben.

Was ist MaxB3D?
Eine 3D-Engine, inspiriert von MiniB3D und gewartet vom User kfprimm aus dem englischen Forum.

Wieso eine Anleitung?
Weil die Informationen, die man braucht, quer über das Netz verstreut sind und ich ein, zwei Hürden erkannt habe, an denen man nicht scheitern sollte.

Wozu MaxB3D?
MaxB3D wird wahrscheinlich für die meisten uninteressant sein, weil es genügend andere, verbreitetere 3D-Engines für BlitzMax (minib3d) und solche, die mit BlitzMax kompatibel sind (Irrlicht, Leadwerks ...), gibt. Aber an das kleine Prozent, das MaxB3D doch eventuell interessiert, geht dieser Beitrag!

Ich werde im Folgenden ein paar Ordnerangaben machen. Die sind kursiv markiert. Oft wird der Pfad eurer BlitzMax-Installation gebraucht. Ich nehme an, dass die im Ordner "BlitzMax" ist. Ihr müsst gegebenenfalls einen anderen Ordnernamen verwenden.

Schritt 1. Die nötigen Archive beziehen.
Wir brauchen ...
das MaxB3D-Modul: https://github.com/kfprimm/maxb3d
prime.mod: http://github.com/kfprimm/prime.mod
pub.maxml: http://www.blitzmax.com/Commun...opic=56469

Hinweis: Bei den GitHub-Seiten gibt es im oberen Teil der Seite einen Block mit verschiedenen Reitern "Code", "Network" ... Unter diesen gibt es links einen Button mit einem Pfeil nach unten in dem auch "ZIP" steht. Auf diesen sollte man klicken, um das Archiv herunterzuladen.

Schritt 2. Kommandozeile starten.
Auf Windows "Eingabeaufforderung" auf Linux "Terminal" (oder auch anders - müsst ihr wissen) starten und in den Ordner BlitzMax/bin bewegen. Das Fenster offen lassen, wir brauchen es dann später (ich nenne es ab jetzt Terminal).

Schritt 2. Pub.MaXML installieren.
Das heruntergeladene Archiv öffnen und den ordner "maxml.mod" in den Ordner BlitzMax/mod/pub.mod extrahieren.

Hinweis für Linux-User (eventuell auch MacOS): Geht in den Ordner BlitzMax/mod/pub.mod/maxml.mod/ und benennt die Datei "MaXML.bmx" in "maxml.bmx" um. Ansonsten kann es passieren, dass folgendes nicht funktioniert:

Jetzt in's Terminal wechseln und diese Zeile eingeben:
Windows-Code: [AUSKLAPPEN]
bmk makemods pub.maxml

Linux-Code: [AUSKLAPPEN]
./bmk makemods pub.maxml

Ich gebe später nur noch den Code für Windows an, weil das "./" der einzige Unterschied ist.

Schritt 3. Prime-Module installieren.
Das Archiv öffnen, den Ordner (heißt bei mir "kfprimm-prime.mod-326...") nach BlitzMax/mod extrahieren und in "prime.mod" umbenennen.
Wieder in's Terminal!
Code: [AUSKLAPPEN]
bmk makemods prime


Schritt 4. MaxB3D installieren.
Das Archiv öffnen, den Ordner nach BlitzMax/mod extrahieren (hat wieder so einen komischen Namen) und in "maxb3d.mod" umbenennen.
Terminal:
Code: [AUSKLAPPEN]
bmk makemods maxb3d


Schritt 4.1 (nur Windows). DXGraphics "tweaken".
Damit der D3D9-Treiber funktioniert, muss das Modul BRL.DXGraphics leicht modifiziert werden. Nach der Zeile, in der pp:D3DPRESENT_PARAMETERS definiert wird, muss dieser Code eingefügt werden:
BlitzMax: [AUSKLAPPEN]
Function CheckDepthFormat(format)
Return _d3d.CheckDeviceFormat(0,D3DDEVTYPE_HAL,D3DFMT_X8R8G8B8,D3DUSAGE_DEPTHSTENCIL,D3DRTYPE_SURFACE,format)=D3D_OK
End Function

If flags&GRAPHICS_DEPTHBUFFER Or flags&GRAPHICS_STENCILBUFFER
pp.EnableAutoDepthStencil = True
If flags&GRAPHICS_STENCILBUFFER
If Not CheckDepthFormat( D3DFMT_D24S8 )
If Not CheckDepthFormat( D3DFMT_D24FS8 )
If Not CheckDepthFormat( D3DFMT_D24X4S4 )
If Not CheckDepthFormat( D3DFMT_D15S1 )
Return False
Else
pp.AutoDepthStencilFormat = D3DFMT_D15S1
EndIf
Else
pp.AutoDepthStencilFormat = D3DFMT_D24X4S4
EndIf
Else
pp.AutoDepthStencilFormat = D3DFMT_D24FS8
EndIf
Else
pp.AutoDepthStencilFormat = D3DFMT_D24S8
EndIf
Else
If Not CheckDepthFormat( D3DFMT_D32 )
If Not CheckDepthFormat( D3DFMT_D24X8 )
If Not CheckDepthFormat( D3DFMT_D16 )
Return False
Else
pp.AutoDepthStencilFormat = D3DFMT_D16
EndIf
Else
pp.AutoDepthStencilFormat = D3DFMT_D24X8
EndIf
Else
pp.AutoDepthStencilFormat = D3DFMT_D32
EndIf
EndIf
EndIf

Danach nicht auf das neu kompilieren vergessen, also ab in's Terminal und dies eingeben:
Code: [AUSKLAPPEN]
bmk makemods brl

(bin mir nicht sicher, ob es reicht nur brl.dxgraphics zu bauen)

Schritt 5. Dokumentation neubauen.
In der MaxIDE Program -> Rebuild Documentation klicken. Damit werden die MaxB3D-Befehle farblich hervorgehoben.

Jetzt sollte alles funktionieren. Ich habe MaxB3D auch erst seit gestern auf Windows - und seit heute auf Linux (ich hatte Probleme mit bmk, die mit dem Hinweis aus Schritt 2 zu beheben sind) und daher noch nicht viel probiert, aber ihr könnt eure Installation mit diesem Code testen:

BlitzMax: [AUSKLAPPEN]
Rem

Kurze Testdatei zu MaxB3D.

EndRem


SuperStrict
Import maxb3d.drivers

Local timer:TTimer=CreateTimer(50)

AppTitle = "Mein Test"
Graphics 800,600

Local i:Int, manuell:Int

Local cam:TCamera=CreateCamera()
'Local light:TLight=CreateLight()


Local wuerfel:TMesh=CreateCube()
Local kugeln:TMesh[6]
kugeln[0]=CreateSphere(16, wuerfel)
kugeln[1]=CreateSphere(16, wuerfel)
kugeln[2]=CreateSphere(16, wuerfel)
kugeln[3]=CreateSphere(16, wuerfel)
kugeln[4]=CreateSphere(16, wuerfel)
kugeln[5]=CreateSphere(16, wuerfel)

SetEntityPosition kugeln[0], 0, 0, 5
SetEntityPosition kugeln[1], 0, 0, -5
SetEntityPosition kugeln[2], 5, 0, 0
SetEntityPosition kugeln[3], -5, 0, 0
SetEntityPosition kugeln[4], 0, 5, 0
SetEntityPosition kugeln[5], 0, -5, 0

SetEntityPosition wuerfel, 0, 0, 15



Repeat
Cls

i:+1
SetEntityColor wuerfel, (i/2.0) Mod 256, i Mod 256, (i*2) Mod 256

If manuell Then

'Manuelle Steuerung
If KeyDown(KEY_LEFT) Then
If KeyDown(KEY_LCONTROL) Then
TurnEntity wuerfel, 0, 0, -1
Else
TurnEntity wuerfel, 0, -1, 0
EndIf
EndIf

If KeyDown(KEY_RIGHT) Then
If KeyDown(KEY_LCONTROL) Then
TurnEntity wuerfel, 0, 0, 1
Else
TurnEntity wuerfel, 0, 1, 0
EndIf
EndIf

If KeyDown(KEY_UP) Then TurnEntity wuerfel, 1, 0, 0

If KeyDown(KEY_DOWN) Then TurnEntity wuerfel, -1, 0, 0

Else

TurnEntity wuerfel, 1, 1, 1

EndIf

If KeyHit(KEY_SPACE) Then manuell=Not manuell ; SetEntityRotation wuerfel, 0, 0, 0


RenderWorld

' 2D-Befehle nun nicht nur nach RenderWorld, sondern auch von DoMax2D - EndMax2D einschließen!

DoMax2D

If manuell Then
DrawText "Druecke Leertaste, um das Objekt automatisch rotieren zu lassen.", 0, 0
DrawText "Oben/Unten Pfeiltaste : Rotiere um X-Achse", 0, 20
DrawText "Linke/Rechte Pfeiltaste : Rotiere um Y-Achse", 0, 40
DrawText "Linke/Rechte Pfeiltaste + linke Steuerung : Rotiere um Z-Achse", 0, 60
Else
DrawText "Druecke Leertaste, um das Objekt manuell zu rotieren", 0, 0
EndIf

EndMax2D

Flip 0
WaitTimer timer
Until KeyHit(KEY_ESCAPE) Or AppTerminate()
End


Ich hoffe, das ist nützlich.

Man liest sich,

Thunder


Edit: Anleitung ist jetzt inhaltlich richtig.
  • Zuletzt bearbeitet von Thunder am Mo, Feb 06, 2012 14:26, insgesamt einmal bearbeitet
 

klepto2

BeitragSo, Feb 05, 2012 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr schön,

allerdings sollte man etwas richtig stellen:

Max3d ist tot. Diese Engine hat nichts mit dem original zu tun sondern ist von minib3d inspiriert.
Max3D war komplett in c++ geschrieben und nutzte nur OpenGL . Diese Engine heist MaxB3D.

Ansonsten sicherlich hilfreich.
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

Thunder

BeitragMo, Feb 06, 2012 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm... da habe ich wohl das b überlesen, als ich im englischen Forum gestöbert habe. Ich ändere das gleich, denn ich dachte, ich habe wirklich Max3D vor mir...
Danke für's Richtigstellen Smile

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group