Von BB zu B3D

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Inso

Betreff: Von BB zu B3D

BeitragSo, Nov 20, 2011 1:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Ich hab endlich vor mal auf B3D "umzusteigen"
hab schon ewigkeiten darin meine 2D BB Spiele geschrieben, und nun doch mal Lust und Zeit mich an 3D ran zu tasten.

Also meine BB Kentnisse, bzw vorherigen 2D Projekte waren bisher:
-2D-RPG-"SNES-Like" Demo
-Mapeditor für das RPG mit 4 layern, speichern, laden, Tilesets, usw.
-Snakeklon mit 2 Spielermodus
-eine variante von diesem Spiel, bei dem man Drogen (text/einfache grafik basierend) gewinnbringend von einem Stadtviertel zum nächsten verkaufen muss etc ^^ kA wie das original doch gleich hieß
- ein kurzes Jump 'n Run
-verschiedene nie fertig gewordene kleine Sachen

also ich denke mit BlitzBasic könnt ich 2D mäßig gesehen mit etwas Ausdauer alles umsetzen was ich mir vornehmen würde.
Deshalb such ich jetzt die Herrausforderung.

Wie ich z.B. ne Map lade, und drauf rumlaufe weiß ich schon, oder die Cam-Range einstelle.
Jetzt kam ich aber zu dem Punkt "kollisionen" und komme gar nicht weiter.
Kennt vielleicht jemand ein gutes Tutorial in dem man evtl Schritt für Schritt ein kleines Spiel (nicht das Spaceshooter tutorial!) programmiert? Vielleicht ein ganz einfaches 3D Jump n Run, muss nicht mehr beinhalten als 4 Wände, und ein klotz auf dem man eventuell drauf springen kann Wink

Hoffe ich konnte mich verständlich ausdrücken, und jemand kann mir weiter helfen

mfg Inso
 

bjh

BeitragSo, Nov 20, 2011 4:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ich will dir mal ohne tut helfen:

also erstmal musst du den entities einen kollisionstyp mit BlitzBasic: [AUSKLAPPEN]
EntityType entity,irgendeinezahl
hinzufügen. danach musst du mit BlitzBasic: [AUSKLAPPEN]
Collisions irgendeinezahl,irgendeineanderezahl,methode,kollisionsart
die kollision "aktivieren".

und in der haupschleife kommt dann noch ein BlitzBasic: [AUSKLAPPEN]
UpdateWorld
am besten vor renderworld.

ein beispiel:
BlitzBasic: [AUSKLAPPEN]
timer=CreateTimer(60)
Graphics3D 0,0,32,1
SetBuffer BackBuffer()

a=CreateSphere()
EntityType a,1
MoveEntity a,2,2,2

b=CreatePlane()
EntityColor b,200,200,100
EntityType b,2

c=CreateCube()
EntityColor c,100,100,100
EntityType c,2

cam=CreateCamera()
MoveEntity cam,0,10,-10
TurnEntity cam,45,0,0

light=CreateLight()
TurnEntity light,45,45,0

Collisions 1,2,2,2

While Not KeyHit(1);ESC
If KeyDown(57) MoveEntity a,0,.1,0 Else MoveEntity a,0,-.1,0
If KeyDown(17) MoveEntity a,0,0,.1
If KeyDown(31) MoveEntity a,0,0,-.1
If KeyDown(32) MoveEntity a,.1,0,0
If KeyDown(30) MoveEntity a,-.1,0,0

UpdateWorld
RenderWorld

WaitTimer timer
Flip 0
Wend
End


leertaste: springen bzw. fliegen
awsd: moven^^
ESC: beenden

sollte funktionieren
was die befehle genau machen kannst du auch noch in der online-hilfe nachschauen.

ich hoffe, ich konnte helfen.
wenn noch was ist einfach dazuschreiben.
 

Inso

BeitragSo, Nov 20, 2011 4:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, danke für das beispiel, aber leider gehts bei mir um eine .x datei(map) und der camera. Das klappt iwie nicht. Mit deb b3d primitives funktioniert bei mir die collision schon Smile
 

bjh

BeitragSo, Nov 20, 2011 4:52
Antworten mit Zitat
Benutzer-Profile anzeigen
sollte trotzdem funktionieren.

probier mal das:
BlitzBasic: [AUSKLAPPEN]
timer=CreateTimer(60)
Graphics3D 0,0,32,1
SetBuffer BackBuffer()

xdatei=LoadMesh("datei.x")
EntityType xdatei,2

cam=CreateCamera()
EntityType cam,1

Collisions 1,2,2,2

While Not KeyHit(1)
TurnEntity cam,MouseYSpeed()*.2,-MouseXSpeed()*.2,-EntityRoll(cam)
MoveMouse 800,600
If MouseDown(1) Xor MouseDown(2) MoveEntity cam,0,0,MouseDown(1)-MouseDown(2)

UpdateWorld
RenderWorld

WaitTimer timer
Flip
Wend
End


.x dateien sollten genauso wie b3d primitives funktionieren.
 

Inso

BeitragSo, Nov 20, 2011 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahhh danke! Hatte das "collisions" aussehen stehen Very Happy
Allerdings hab ich gleich das nächste problem:

Wenn ich gegen die wand laufe, seh ich ein stück von dem was hinter der wand ist..
user posted image

Lobby

BeitragSo, Nov 20, 2011 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem entsteht dadurch, dass standardmäßig sehr nahe Dreiecke nicht gezeichnet werden. Sieh dir hierzu einmal den Befehl CameraRange an Wink .
Wenn Du den Startwert kleiner machst, z.B. 0.1, sollte sich das Problem vermeiden lassen. Achte darauf, dass der End-Wert nicht mehr als 10.000 mal so groß sein sollte als der Startwert.

Das Problem ließe sich auch umgehen, indem Du den Kollisionsradius deines zu bewegenden Objektes vergrößerst, z.B. über EntityRadius.
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux
 

Inso

BeitragSo, Nov 20, 2011 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahh, super! Danke.
na dann mal schauen wann ich das nächste problem kriege Wink
 

PacMani

BeitragSo, Nov 20, 2011 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Achtung bei CameraRange: Bitte versuchen zu vermeiden, die Spanne zwischen Nah- und Fern-Wert nicht zu groß zu wählen. Sonst leidet die Genauigkeit des Tiefenbuffers darunter, sprich: Wenn weiter entfernte Mauern ziemlich nah beieinander liegen, fangen sie an zu flackern und sogenanntes Z-Fighting tritt auf Wink

Meine Empfehlung: Den Nah-Wert nicht mit mehr als einer Nachkommastelle besetzen, also nicht kleiner als 0.1 und den Fern-Wert nie größer als 5-stellig, wenn nicht sogar 4stellig schon ausreicht.
 

Inso

BeitragSo, Nov 20, 2011 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry wegen doppelpost, wollte nur fragen ob BB die Lichtquellen in den .x Dateien ignoriert ^^

edit
hm als .b3d exportiert klappt das mit dem licht plötzlich =D


edit2: aber so richtig komm ich mit dem licht nicht klar..
Kennt irgendwer ein gutes licht-tutorial?
Hab bisher nix vernünftiges finden können was genauer drauf eingeht..

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group