http://alpha-thema-online.uv.ro
Fa-ti si tu propriul forum, pe www.myforum.ro!
Pagina de start a forumului http://alpha-thema-online.uv.ro Autentificare Inregistrare FAQ Membri Cautare

Pagina de start a forumului http://alpha-thema-online.uv.ro » Tutoriale RO » World si Player in DarkBasic
Creaza un subiect nou  Raspunde la subiect Subiectul anterior :: Subiectul urmator 
World si Player in DarkBasic
MesajTrimis: 18/07/2007 15:39 Raspunde cu citat (quote)
Ad_Infinitum
Administrator
Administrator
Ad_Infinitum
Data inscrierii: 23/Iun/2007
Mesaje: 212




Tutorial Alpha Thema

In acest tutorial voi incerca sa va explic cat mai bine cum incarcam un univers si cum setam un “player” intr-un joc facut in DarkBasic.

1)De cele mai numeroase ori programatorii folosesc fisierele BSP sau DBO ce contin toate informatziile despre coliziune,texturi si consecințe distincte pentru a crea cat mai iute un univers.Cand spun incarcare unui univers ma refer la incarcarea in joc a cladirilor,obstacolelor efectelor ,unele setari etc.In acest tutorial voi folosii incarcarea unui model BSP si apoi poate voi face si un tutorial despre crearea si importarea fisierelor DBO.

In mod normal incarcarea unui fisier BSD se face dupa urmatorul cod:
Citat:

Rem Incarcam fisierul BSP
load bsp "world\ikzdm1.pk3","ikzdm1.bsp"

Si este urmat de inca un cod ce are rolul de a incarca “cerul” avand scopul de a complet fisierul BSP.
Citat:

SkyObj=1 : load object "models\sky\am.x",SkyObj

Cod final:
Citat:

Rem Incarcarea universului si modelul cerului
load bsp "world\fisier.pk3","fisier.bsp"
SkyObj=1 : load object "models\sky\am.x",SkyObj


Dupa ce am terminat de incarcat aceste fisiere este recomandat sa setam pozitzia camerei si inaltzimea cerului fatza de planul jocului.

Acesta este codul care seteaza camera:
Citat:

Rem Seteaza camera
set camera range 1,10000
autocam off

Acesta este codul care seteaza inaltzimea cerului

Citat:

Rem Seteaza exemplarul cerului
set object SkyObj,1,0,0,0,0,0,0
scale object SkyObj,20,20,20


Deoarece unele jocuri sunt extrem mari iar incarcarea lor dureaza extrem de mult, va trebuii sa ii afisam un mesaj jucatorului ca acesta sa stie ce se petrece.

Citat:

Rem Selecteaza fontul
set text font "arial" : set text size 16
set text to bold : set text transparent
Rem Incarca textul
sync : center text screen width()/2,screen height()/2,"Loading – plase whait..." : sync


Acest cod afiseaza pe ecran mesajul “Loading – please whait..” precum in imagine.

Deocamdata am invatzat cum sa introducem in DarkBasic un univers si sa setam pozitia camerei, urmand sa va explic cum incarcam modelele in proiect.

Pentru inceput trebe sa stitzi ca limbajul DarkBasic standard poate incarca doar modelele u extensia .3DS , .X , .MDL , .MD2 , MD3.

Exista deosebit de multe programe de modelare 3D ce va pot fii de folos ca de exemplu Pixologic Zbrush , Bryce 6 , Blnder 3D , Milkshape3D , The Google SketchUp , 3D World Studio etc.

Deoarece eșantioane un compus Direct X (.x) incarca mult mai repede va recomand sa folositzi tipul acesta de modele.
Incarcarea unui model in DarkBasic se face dupa urmatorul cod:

Load object “modele\urs.x”,1

In acest cod șablonul este fisierul urs.x iar partea e cod “modele\” este calea catre model.

Ca sa intzelegetzi mai bine incarcarea unui model in scena voi scrie un program ce incarca si afiseaza prototipul la nesfarsit.

Citat:

Rem Incarcam modelul
load object “modele\urs.x”,1
Rem incepe corpul LOOP
do
Rem Vom afisa la nesfarsit tiparul cu ajutorul functiei loop
loop



Dupa ce modelul a fost incarcat este necesar sa-i setam o anumita gravitatzie si sa-i setam tastele care-l controleaza.

Cel mai simplu cod cu ajutorul caruia putetzi controla un obiect in joc ,de exemplu o sfera ,este:

Citat:

Rem Secventza care controleaza obiectul
Rem Atribuie obiectul Y in unghiul aY#
aY# = Object angle Y(1)

Rem Seteaza tastele pentru control
If Upkey()=1 then Move object 1,2
If DownKey()=1 then move object 1,-2
If Leftkey()=1 then aY# = Wrapvalue(aY#+5)
If Rightkey()=1 then aY# = Wrapvalue(aY#-5)

Rem invarte sfera
Yrotate object 1,aY#


Controlarea unui model se poate face si dupa urmatorul cod:
Citat:


rem Control player direction
rotate camera camera angle x(0)+(mousemovey()/2.0),camera angle y(0)+(mousemovex()/2.0),0
rem Control player movement
cx#=camera angle x(0) : cy#=camera angle y(0)
if upkey()=1 then xrotate camera 0,0 : move camera 0,0.2 : xrotate camera 0,cx#
if downkey()=1 then xrotate camera 0,0 : move camera 0,-0.2 : xrotate camera 0,cx#
if leftkey()=1 then yrotate camera 0,cy#-90 : move camera 0.2 : yrotate camera 0,cy#
if rightkey()=1 then yrotate camera 0,cy#+90 : move camera 0.2 : yrotate camera 0,cy#
if wrapvalue(camera angle x(0))>40 and wrapvalue(camera angle x(0))180 then xrotate camera 0,40
if wrapvalue(camera angle x(0))>180 and wrapvalue(camera angle x(0))280 then xrotate camera 0,280
rem Apply simple gravity to player
position camera camera position x(),camera position y()-0.1,camera position z()


Daca nu se potriveste nici un cod in proiectul vostru incercatrzi sa scrietzi voi unu compatibil.
Pe langa ca am setat tastele pentru controlarea modelului, va trebui sa scriem un cod ce pozitzioneaza modelul in centrul scenei si setarea sonora ca sunetul sa aiba proprietatzi 3D.

Citat:

Rem Player is always focal point of sky
position object SkyObj,camera position x(),camera position y(),camera position z()
Rem Position listener at player for 3D sound
position listener camera position x(),camera position y(),camera position z()
rotate listener camera angle x(),camera angle y(),camera angle z()



Deocaamdata inchei acest tutorial si va promit ca voi incepe unul despre matrixuri,texturari urmări etc.

Tutorialul apartzine organizarziei Alpha Thema Romania 2007 si a fost scris de catre Ad_Infinitum.
Vezi profilul utilizatorului Trimite mesaj privat

World si Player in DarkBasic
 Pagina de start a forumului http://alpha-thema-online.uv.ro » Tutoriale RO
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
Ora este GMT + 3 ore  
Pagina 1 din 1  

  
  
 Creaza un subiect nou  Raspunde la subiect  


Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
    Powered by phpBB © 2001-2004 phpBB Group. phpBB Skin by Vjacheslav Trushkin.