Professional Documents
Culture Documents
Justas Klikna - Bakalauro Baigiamasis Darbas
Justas Klikna - Bakalauro Baigiamasis Darbas
Vilnius – 2011
Santrauka
2
Summary
3
TURINYS
ĮVADAS ..........................................................................................................................................7
1. VIRTUALIŲJŲ PASAULIŲ SAMPRATA IR AKTUALUMAS ...........................................10
2. ETNOGRAFINĖ L2 ANALIZĖ ...............................................................................................12
2.1. Žaidimo apžvalga ..........................................................................................................12
2.1.1. Žaidimo aplinka .........................................................................................................12
2.1.1.1. Unikalios specializuotos rasės ir klasės .........................................................12
2.1.1.2. Žaidimo tikslas...............................................................................................12
2.1.2. Naudotojo sąsaja ........................................................................................................13
2.1.2.1. Būsenos langas...............................................................................................13
2.1.2.2. Taikinio langas...............................................................................................13
2.1.2.3. Nuorodų langas ..............................................................................................13
2.1.2.4. P okalbių ir sisteminių pranešimų langas ......................................................14
2.1.2.5. Meniu juosta ..................................................................................................14
2.1.2.6. Grupės langas.................................................................................................16
2.1.2.7. Radaras ..........................................................................................................16
2.1.3. Kiti valdymo mechanizmai ........................................................................................17
2.1.3.1. Kameros pozicija ...........................................................................................17
2.1.3.2. Sparčiųjų klavišų kombinacijos .....................................................................17
2.1.3.3. Valdymas komandomis .................................................................................18
2.2. Scenarijų apžvalga ........................................................................................................18
2.2.1. Naujo avataro kūrimas ...............................................................................................18
2.2.2. Žaidimo pradžia .........................................................................................................19
2.2.3. Žaidimas po apmokymų .............................................................................................19
2.2.4. Kova su virtualaus pasaulio monstru .........................................................................20
2.3. Naudotojų skatinimas ....................................................................................................21
2.4. Gautų rezultatų apibendrinimas ....................................................................................21
3. VL APŽVALGA .......................................................................................................................23
3.1. Teisių užtikrinimas ........................................................................................................23
3.2. Lygiarangių architektūra ...............................................................................................23
3.3. Saugumas ......................................................................................................................24
3.4. Interaktyvumas ..............................................................................................................25
3.5. Naudotojo sąsaja ...........................................................................................................25
3.5.1. Avataro judėjimo valdymas .......................................................................................26
4
3.5.2. Kameros pozicijos valdymas......................................................................................27
3.5.3. Kontekstiniai meniu ...................................................................................................28
3.6. Kiti mechanizmai ..........................................................................................................29
3.6.1. Pokalbiai tarp sistemos naudotojų..............................................................................29
3.6.2. Paieška .......................................................................................................................29
3.6.3. Inventorius .................................................................................................................29
3.6.4. Avataro išvaizdos redaktorius ....................................................................................29
3.6.5. Objektų redaktorius ....................................................................................................30
3.6.6. Draugų sąrašas ...........................................................................................................31
3.6.7. Kontraktai ...................................................................................................................31
3.6.8. Ginčų sprendimo mechanizmas .................................................................................31
3.6.9. El. balsavimas ............................................................................................................31
3.7. Nesklandumai, klaidos ir pastebėjimai .........................................................................31
4. TRIMAČIŲ OBJEKTŲ KŪRIMAS IR EKSPORTAVIMAS Į VL .........................................34
4.1. VL trimačiai grafiniai objektai ......................................................................................34
4.2. Naudota PĮ.....................................................................................................................34
4.3. Objektų kūrimas panaudojant „Blender“ PĮ..................................................................35
4.4. Objektų kūrimas panaudojant „Autodesk 3ds Max“ PĮ ................................................37
5. SKRIPTŲ KŪRIMAS PANAUDOJANT VL–LUA ................................................................39
5.1. Trumpa Lua apžvalga....................................................................................................39
5.1.1. Kintamųjų tipai ..........................................................................................................39
5.1.2. Reikšmių kintamajam priskyrimas .............................................................................39
5.1.3. Kontrolinės struktūros ................................................................................................39
5.2. Trumpa VL–Lua apžvalga ............................................................................................40
5.2.1. Objektų kūrimas .........................................................................................................40
5.2.2. Objektų pozicijų keitimas ..........................................................................................40
5.2.3. Įvykiai ........................................................................................................................40
5.3. Demonstracinio objekto kūrimas panaudojant VL-Lua ................................................40
5.3.1. „KubuLaipteliai.lua“ skripto kūrimas ........................................................................42
5.3.2. „RikiuojamiKubai.lua“ skripto kūrimas ....................................................................43
5.3.3. „Skaidres.lua“ skripto kūrimas...................................................................................45
REZULTATAI IR IŠVADOS .......................................................................................................47
ŠALTINIAI ...................................................................................................................................48
SĄVOKŲ APIBRĖŽIMAI ............................................................................................................49
SANTRUMPOS ............................................................................................................................50
5
PRIEDAI .......................................................................................................................................51
1 priedas. VL kliento naudotojo sąsajos elementai ..............................................................51
2 priedas. „KubuLaipteliai.lua“ skripto tekstas....................................................................57
3 priedas. „RikiuojamiKubai.lua“ skripto tekstas ................................................................58
4 priedas. „Skaidres.lua“ skripto tekstas ..............................................................................60
5 priedas. „Skaidres.lua“ skripto paleidimo instrukcija .......................................................62
6
ĮVADAS
1
Oficiali projekto internetinė svetainė pasiekiama adresu ict-virtuallife.eu.
7
− 2 skyriuje aprašoma L2 etnografinės analizės metu surinkti duomenys bei išskiriami
naudotojų poreikiai, skatinantys dalyvauti virtualiuosiuose trimačiuose pasauliuose;
− 3 skyriuje apžvelgiama VL platforma: jos savybės, mechanizmai, grafinės naudotojo
sąsajos elementai, apžvalgos metu aptiktos klaidos;
− 4 skyriuje trumpai aprašomos trimačių objektų naudojimo galimybės, pateikiamos
detalios instrukcijos, kaip panaudojant įvairią trimačio turinio kūrimo programinę
įrangą, eksportuoti trimačius grafinius modelius į VL aplinką;
− 5 skyriuje aprašomas skriptų kūrimas VL platformoje. Pateikiami detalūs sukurtų
skriptų aprašymai, jų vykdymo rezultatai bei demonstracinio mokymo objekto
sprendimo idėja.
2
Įrankio kūrėjų internetinė svetainė pasiekiama adresu http://www.sandboxie.com/.
8
VL aplikacijos testavimui buvo naudotos skirtingos VL prototipo versijos:
− 0.0.2162, 0.0.2160, 0.0.2082, 0.0.2070 – pirmosios prototipo versijos (toliau šiame
darbe bus identifikuojamos kaip testuojamos prototipo versijos);
− 0.0.2295, 0.0.2201,– stabilesnės ankstesnių prototipo versijų atžvilgiu VL prototipo
versijos.
9
1. VIRTUALIŲJŲ PASAULIŲ SAMPRATA IR AKTUALUMAS
1970 m. II-oje pusėje psichologas Albert Bandura pateikė socialinio mokymosi teoriją
[SLT] kaip metodą mokytis stebint kitų elgesį, ir vėlesni įrodymai atskleidė, jog virtualiuose
modeliuose žmonės socialiai gali būti įtakojami taip pat, kaip ir realaus gyvenimo socialiniuose
modeliuose. Remiantis šia savybe virtualųjį pasaulį galime įvardinti kaip virtualiosios
bendruomenės rūšį [Bis09], kuri kompiuterinėmis technologijomis paremtoje dirbtinėje aplinkoje
tarpusavyje bendrauja, naudoja ir kuria objektus.
Šiandieniniame pasaulyje virtualiojo pasaulio sąvoka atspindi interaktyvias trimates (angl.
trumpinys 3D) virtualiąsias aplinkas, kuriose naudotojai save pateikdami grafinių reprezentacijų
forma (avatarais) bendrauja ir bendradarbiauja tarpusavyje. Nepriklausomai nuo virtualiųjų
pasaulių aplinkų skirtumų galima jiems išskirti 6 bendrus požymius [WIS]:
• viešai prieinama erdvė. (didelis skaičius naudotojų vienu metu gali būti toje pačioje
aplinkoje);
• turtinga grafinė naudotojo sąsają (angl. trumpinys GUI);
• betarpiškumas (visi įvykiai vyksta realiu laiku);
• interaktyvumas (naudotojai gali kurti, modifikuoti ir pateikti įvairų turinį);
• nuolatinis vyksmas (virtualiojo pasaulio veiklos tęsiąsi nepriklausomai nuo to, ar
individualūs naudotojai prisijungę prie sistemos);
• bendruomenė (virtualusis pasaulis įgalina ir skatina naudotojus jungtis į įvairias
grupes);
Portalo kzero.co.uk 3 duomenimis 2011 m. I-ąjį ketvirtį virtualių pasaulių registruotų
naudotojų paskyrų skaičius apytiksliai siekė 1 milijardą 185 milijonus (žr. 1 lentelė).
3
Duomenų šaltinis http://www.slideshare.net/nicmitham/kzero-universe-q1-2011. Daugiau informacijos apie
“KZero Worldswid” kompaniją http://www.kzero.co.uk/thecompany.php [žiūrėta 2011-05-25]
10
Įvertinus registruotų naudotojų pokytį paskutiniuosius ketvirčius (žr. 1 pav.) matome, jog
naudotojų skaičius apytiksliai išaugo net 9,62% ir 2011 m. I-o ketvirčio periode virtualiųjų
pasaulių naudotojų ratas pasipildė net 104 milijonais naujų naudotojų paskyrų. Sparčiai augant
virtualiųjų pasaulių poreikiui, tikslinga analizuoti ir vertinti šių pasaulių pritaikymą ir galimybes,
ne vien komercinėje, bet ir mokymo srityje.
1400
Milijonai
1185
1200
1081
Registuortų naudotojų skaičius, mln.
1009
958
1000
867
789
800
659 5 – 10 m.
568 561 10 – 15 m.
600 511
468 15 – 25 m.
444
414 392 413 > 25 m.
367
400 334 313 Visos amžiaus grupės
288 299
273 272
246 237 235
211 219
193
179 190
200 152
114
99 117
77
73
18 21 23 25 27 30 34 36 39
Ketvirtis
11
2. ETNOGRAFINĖ L2 ANALIZĖ
MMORPG4 žanro žaidimai kuria savitą trimačio virtualaus pasaulio5 (toliau šiame darbe
naudojamas trumpinys „virtualus pasaulis“) erdvę, vidinę sistemą, kur įvairių mitologijų
elementai tarpusavyje jungiasi ir kuria savo atskirą mitologiją. Magijos, antgamtiniai reiškiniai –
šiam žanrui būdingi bruožai. MMO 6 komercinių žaidimų rinkoje maginės fantastikos (angl.
fantasy)7 MMORPG tipo žaidimai žaidimų kūrėjos „Studio 38“ duomenimis 2009 metais užėmė
94,2% dalį8.
Šio skyriaus tikslas – apžvelgti viena sėkmingiausių9 maginės fantastikos MMORPG žanro
žaidimą „Lineage II“ (toliau darbe naudojamas sutrumpinimas „L2“) , išnagrinėti pagrindinius
žaidimo scenarijus ir išskirti pagrindinius naudotojų poreikius, kurie skatina dalyvauti
virtualiuose trimačiuose pasauliuose.
Šiame skyriuje detaliau apžvelgiama L2 žaidimo aplinka, naudotojo sąsajos elementai bei
kiti valdymo elementai.
Žaidime išskiriamos 6 rasės, turinčios savo specialius gebėjimus bei profesines kryptis.
Galimų profesinių klasių pasirinkimo skaičius bei jų gebėjimai įtakoja virtualaus pasaulio
pusiausvyros palaikymą.
Žaidime vartotojai dalyvauja per savo susikurtų veikėjų grafinius atvaizdus (avatarus),
kurie sąveikauja aplinkoje. Žaidėjo sėkmė veikėjo išugdytų įgūdžių (angl. skill) ir patirties (angl.
4
MMORPG (angl. massive multiplayer online role-playing game) – internetinių žaidimų vaidmenimis žanras,
kuriame didelis skaičius žaidėju bendrauja vienas su kitu virtualiame žaidimo pasaulyje.
5
Trimatis virtualus pasaulis (angl. three-dimensional virtual worlds) – interaktyvi trimatės sąsajos dirbtinė
aplinka, leidžianti vartotojams tarsi „įsikūnyti“ į realaus pasaulio erdvę.
6
MMO (angl. massively multiplayer online game) – internetinis žaidimas, įgalinantis šimtus ar tūkstančius
žaidėjų žaisti vienu metu.
7
Maginė fantastika (angl. fantasy) – viena iš fantastikos (t. y. literatūros, kino, žaidimų, muzikos, dailės ir kt.)
atmainų (detaliau aprašoma skyriuje „Sąvokų apibrėžimai“).
8
Internetinio portalo mmosite.com 2010 m. balandžio 21 d. pateiktais duomenimis.
9
Internetinio portalo en.wikipedia.org duomenimis L2 2007 m. kovo mėn. žaidė daugiau kaip 600 tūkst.
unikalių žaidėjų
12
experience), kuri dažniausiai gaunama bendradarbiaujant su kitų žaidėjų avatarais ar vykdant
užduotis.
Būsenos lange (angl. Status Window) pateikiamas avataro vardas bei būsenos rodikliai.
Bet kokių aktyvių burtų ar kitų avatarą veikiančių objektų efektai yra vaizduojami dešinėje šio
lango pusėje. Paspaudus ant šio lango, pažymimas žaidėjo valdomas avataras.
Taikinio lange (angl. Target Window) aktyvuojamas, kai žaidėjas pažymi erdvėje esantį
objektą (pvz. kitą žaidėją, monstrą) arba patį save. Šiame lange pateikiamas taikinio vardas ir
gyvybinių taškų kiekis. Pažymėjus kitą žaidėja rodomas tik to žaidėjo vardas. Spustelėjus ant
rodyklės informacija išplečiama: matomi kitų žaidėjų klano ir aljanso identifikatoriai arba
papildomą informaciją apie monstrus. Spustelėjus „ESC“ mygtuką bet koks taikinio
pažymėjimas atšaukiamas.
Į nuorodų langą (angl. Shorcut Window) žaidėjas gali „drag–and–drop“ principu patalpinti
nuorodas į objektus, veiksmus, aktyvius gebėjimus ar burtų. Tokiu būdų galima suregistruoti iki
120 nuorodų ir sparčiųjų klavišų kombinacijomis visas jas pasiekti. Interfeisas pagal nutylėjimą
rodo tik 1 juostą, tačiau ją galima išplėsti rodyklių arba sparčiųjų klavišų kombinacija „Alt+F1–
F12“. Nuorodos taip pat pasiekiamos ir pelės paspaudimu. Nuorodų langą galima užrakinti arba
13
atrakinti spustelėjus ant spynos ikonos, kuri neleidžia arba leidžia įdėti, perkelti arba ištrinti
nuorodas.
Šis langas (angl. Chat and System Message Window) skirtas pateikti sisteminius bei kitų
vartotojų panešimus. Apatinė dalis sudalinta į skirtingas skiltis, kurios įgalina filtrus: visos,
klano, kompanijos, prekybos arba aljanso žinutės. Pasirinkus norimą filtrą, žinutės pradžioje
atsiranda specializuotas simbolis, nurodantis, kuriai žaidėjų grupei siunčiamas pranešimas (žr. 2
lentelė).
Taip pat žaidėjai gali naudoti ir „MS MSM Mesenger“ servisą bendravimui su draugų
sąraše esančiais draugais ir su draugais už žaidimo ribų.
Meniu juostoje (angl. Menu Bar) randamos nuorodos į kitas pagrindines lenteles:
1. Žaidėjo valdomo avataro būsena (pateikiamos pagrindinės charakteristikos,
nusakančios žaidėjo gebėjimus vienu ar kitu aspektu).
14
3 pav. Langai, pasiekiami iš pagrindinės juostos
15
Sisteminis meniu (žr. 6 pav.) – atidaromas sisteminis langas, kuriame galima kurti
komandines sekas, surasti pagalbos meniu ar koreguoti žaidimo nustatymus (grafiką, garsą ir
pan.)
Grupės (angl. Party Window) langas aktyvuojamas, kai žaidėjas prisijungia į naudotojų
grupę (angl. party). Čia pateikiama kompanijos narių taškai bei burtų ar kitų objektų poveikis
kompanijos nariams. Spustelėjus ant kompanijos narių, jie automatiškai pažymimi. Juostą esant
poreikiui galima sumažinti arba padidinti, o jos elementus individualiai galima išdėstyti su „Alt“
raktu. Taip pat galima pateikti rodyti komandos narių papildomus parametrus arba jų nerodyti
panaudojus mygtuką arba kombinaciją „Alt+F“. Kompanijos lange vaizduojami ir augintiniai
(angl. pets).
2.1.2.7. Radaras
Radaras (angl. Radar) žaidime veikia kaip kompasas (žr. 7 pav.), kuris pateikia
geografinius duomenis apie virtualaus pasaulio šalis. N (angl. North – šiaurė) simbolizuoja
šiaurinę kryptį ir avatarui pasisukus kitu kampu indikatoriai atitinkamai pasisuka į kairę arba į
dešinę. Radare vaizduojama ir vietinė teritoriją, kurios spindulį sumažinti/padidinti leidžia „-“ ir
„+“ mygtukai jo apatiniame dešiniajame kampe.
7 pav. Radaras
16
Kompanijos nariai radare žymi žaliai, o taikiniai raudonos spalvos indikatoriais. Pats
avataras žymimas auksine strėle. Radaras turi keletą nustatymų, kurie pasiekiami kūjo ikona
viršutiniame dešiniajame kampe.
L2 pagal nutylėjimą naudoja III asmens kameros poziciją (žr. 8 pav.), kurios parametrus
galima keisti šiais būdais:
− Sukioti kamerą – laikant dešinį pelės mygtuką
− Artinti/tolinti – sukiojant pelės ratuką
− Pateikti reversą – spausti vidurinįjį pelės mygtuką
− Gražinti į pradinę poziciją – spausti dešinįjį pelės mygtuką
− Keisti asmenį – klaviatūroje spausti „Page Up“ arba „Page Down“
Žaidime taip pat gausu ir sparčiųjų klavišų kombinacijų, kurios naudingos patyrusiems
žaidėjams (žr. 3 lentelė.).
17
Raktas Funkcija Raktas Funkcija
„Alt+Y” Atidaro žinučių langą „Alt+U“ Atidaro užduočių langą
„Alt+M“ Žemėlapis „Alt+Enter“ Perjungia iš langinio rėžimo į
pilno ekrano rėžimą ir
atvirkščiai
„Alt+J“ Paslepia susirašinėjimo „Alt+X“ Atidaro sisteminį meniu
langą
„Alt+H“ Paslepia interfeisą „Alt+R“ Pateikia komandų sekų
valdymo langą
„Alt+O“ Atidaro GM10 „Alt+L“ Atstato nuorodų juostą į pradinę
informavimo langą poziciją
Visi veiksmus žaidėjai gali ir pokalbių lange naudojant sistemines komandas, pvz.
komanda „/target Taikinys“ pažymės objektą, vardu Taikinys, o komanda „/attack“ pradės
puolimą. Komandas taip pat galima sudėlioti į vieną seką ir išsaugoti.
Vos prisijungęs prie serverio, žaidėjas patenka į avataro pasirinkimo langą, kuriame
išrikiuojami jo turimi avatarai (angl. characters). Pirmą kartą prisijungusį žaidėją pasveikina
kompiuterinis gidas, kuris paaiškina žingsnius, reikalingus sukurti savo pirmąjį avatarą.
Žaidėjo avataro sukūrimas prasideda mygtuko „Create“ pagalba (žr. 9 pav.). Paspaudus ant
šio mygtuko, pereinama į kitą langą, kuriame privaloma įvesti vardą, bei panaudojant
pasirinkimo laukus, nustatyti rasę, pradinę klasę, lytį, šukuosenos stilių, plaukų spalvą, bei veido
formą. Pasirinkimas užfiksuojamas mygtuku „Create“. Tokiu būdu suformuotas personažas
atsiranda pradiniame pasirinkimo lange. Spustelėjus ant jo, personažas priartėja arčiau ir
mygtuku „Start“ patenkama virtualų žaidimo pasaulį. Vienam prisijungimo vardui galima sukurti
ne daugiau kaip 7 avatarus, galinčius turėti po 1 pagrindinę klasę bei papildomas 3 subklases.
10
GM (angl. A Gamemaster, Game Master, Game Manager, God Moderator, God Modder) – žaidimo
prižiūrėtojas.
18
9 pav. Naujo avataro kūrimo veiksmų seka
Žaidėją, pirmą kartą patekusį į žaidimo pasaulį pasveikina gidės balsas, pateikiantis
trumpas instrukcijas, kaip valdyti žaidėjo avatarą (instrukcijos rodomas ir tekstiniu pavidalu
specialiame lange). Pirmiausia, žaidėjas paprašomas atlikti kelis nesudėtingus veiksmus,
keičiančius kameros poziciją (veiksmai pateikti punkte „Kameros pozicija“). Po trumpų
apmokymų žaidėjui parodoma ir nuoroda į pagalbos žinyną, kuriame išsamiai aprašomos
papildomos funkcijos (žr. 10 pav.).
Žaidimo valdymas išmokstamas intuityviai – spaudžiant kairįjį pelės klavišą. Šis būdas
galioja tiek judėjimo funkcijai, tiek objektų (pvz. kitų žaidėjų, monstrų) žymėjimui, kuris
atspindimas taikinio lange (detaliau punkte „Taikinio langas“).
Instrukcijų langas
Nuoroda į žinyną
Pokalbių langas
Po pradinių apmokymų, žaidėjas specialiame lange informuojamas, jog turi pradėti kelti
savo patirties lygį. Jam nurodoma kreiptis į naujokų instruktorių (angl. Newbie Helper, žr. 11
19
pav.), kuris pasiūlo įvykdyti, pradines užduotis (pvz. įveikti kelis žemo lygio monstrus arba
nueiti į tam tikrą vietą ir perduoti kitam veikėjui tam tikrą informaciją). Pasirinkus užduotį,
žemėlapyje ir radare pateikiama taikinio ar susijusio užduoties objekto padėtį, o užduočių lange
atsiranda naujas užduoties aprašymas.
Viena iš dažniausiai sutinkamų tokio žanro žaidimo situacijų – kova su virtualaus pasaulio
monstru (žr. 12 pav.). Kova prasideda veikėjus pažymėjus ant taikinio. Po šio veiksmo taikinio
lange pateikiama objekto būsena, o valdymo žymeklis iš rodyklės pasikeičia į durklo
piktogramą. Dar kartą spustelėjus kairiuoju pelės klavišu, prasideda sąveika tarp žaidėjo
valdomo avataro ir atakuojamo objekto. Alternatyviai žaidėjas gali naudoti ir veiksmų juostoje
pateiktas ikonėles. Tokiu būdu galima panaudoti įgūdžius (angl. skills) arba paleisti iš anksto
paruoštą veiksmų seką (angl. macro). Sąveikos metu nuolat atnaujinami objektų būsenas
aprašantys langai, o kiekvienas veiksmo poveikis aprašomas sisteminiame lange. Pasibaigus
taikinio gyvybiniams taškams (angl. hit points), kova baigiama ir atitinkamai pagal monstro lygį
(angl. level) veikėjas įgauna patirties taškų (angl. experience) ir/ar specialių daiktų (angl. items).
Taip keldamas savo patirtį, avataras kelia ir savo lygį, kuris leidžia įgyti naujų gebėjimų, vykdyti
sudėtingesnes užduotis ar dalyvauti specialiuose renginiuose.
20
Taikinio būsena
Veikėjo būsena
Taikinys
Veikėjas
Detali informacija
Veiksmai
12 pav. Kovos ekrano pavyzdys
Atlikus etnografinę žaidimo analizę padaryta išvada, jog virtualaus pasaulio modelyje, kaip
ir realiame, vienos iš pagrindinių skatinimo dalyvauti priežasčių yra poreikiai. Sulyginę dirbtinio
ir fizinio pasaulių aplinkas, galime išskirti šiuos aktualius naudotojui poreikius:
− socialiniai – priklausomumo poreikiai apima poreikį būti priimtam savęs lygiu,
21
− priklausyti socialinei grupei;
− pagarbos poreikiai apima poreikį suformuoti savo teigiamą įvaizdį ir būti gerbiamam
kitų,
− saviraiškos poreikis – noras realizuoti savo potencialą ir tobulėti.
− valdžios – pasireiškia noru daryti įtaką kitiems žmonėms.
Sėkmingas virtualaus pasaulio mechanizmas turi užtikrinti šių poreikių patenkinimą per
sąsają, „naikinančią“ ribą tarp realybės ir dirbtinės tikrovės. Įvertinus virtualiųjų pasaulių šuolinę
plėtrą, galima tobulinimo sritis – pažangesnės avataro valdymo priemonės.
22
3. VL APŽVALGA
VirtualLife projekto tikslas – sukurti saugią, trimatę virtualaus pasaulio aplinką, orientuotą
į patikimumą ir bendradarbiavimą. Aplinkos taikymo sritys: mokymas, el. prekyba (angl. e–
commerce), komercinė veikla ir pramogos. Toliau trumpai pateikiamos pagrindinės platformos
savybės, aprašomi naudotojo sąsajos elementai. Skyriaus gale taip pat pateikiamas problemų ir
nesklandumų, su kuriais susidurta testuojant VL prototipą sąrašas.
11
Schemos šaltinis http://www.computertipsntricks.info/nt_PtoP.htm
23
3.3. Saugumas
VL platforma savo naudotojams užtikrina aukšto lygio saugumą. Visi sistemos naudotojai
turi unikalią identifikacinę kortelę (angl. ID card), kurioje pateikiama tiek virtualaus, tiek realaus
pasaulio naudotojo, valdančio avatarą, identifikacinė informacija (žr. 14 pav.).
Identifikacinėje kortelėje taip pat pateikiami ir pasitikėjimo indikatoriai. Vienas
reikšmingiausių – tapatybės indikatorius, nustatomas pagal atitinkamos sertifikavimo institucijos
turimus duomenis apie naudotojo naudojamus sertifikatus. Identifikacinėje kortelėje taip
nurodomi ekonominiai, pilietiniai ir socialiniai indikatoriai bei kita naudotojo informacija. Visi
indikatoriai nustatomi naudojant reputacijos mechanizmą, kuris vertina naudotojų veiksmus
virtualiame pasaulyje. Toks mechanizmas leidžia naudotojui susidaryti nuomonę apie kitų
naudotojų patikimumą ir reputaciją pagal pastarųjų elgseną virtualaus pasaulio erdvėje.
Pasitikėjimą, privatumą bei saugumą užtikrina PKI (angl. public key infrastucture)
infrastruktūra (žr. 15 pav.), įgalinanti naudotojų tapatybę nustatyti naudojant keletą raktinių porų,
suteiktų autorizuotų regioninių bei tarptautinių sertifikavimo institucijų (pvz. „VeriSign“ 12 ir
„Thawte“13). Tokiu būdu unikaliai kiekvienam naudotojui pagal jo sertifikuotas raktines poras
nustatomas pasitikėjimo indikatorius, užtikrinamas privatus užkoduotas bendravimas tarp
naudotojų bei realizuojamas elektorinių dokumentų pasirašymo funkcionalumas.
12
Daugiau informacijos internetinėje svetainėje adresu http://www.verisign.com/
13
Daugiau informacijos internetinėje svetainėje http://www.thawte.com/
24
15 pav. PKI infrastruktūros diagrama14
3.4. Interaktyvumas
14
Diagramos šaltinis http://en.wikipedia.org/wiki/File:Public-Key-Infrastructure.svg
25
18 pav. VL kliento grafinės naudotojo sąsajos ekrano vaizdas
Naudotojo avataras aplinkoje gali vaikščioti reljefu ir laisvai skraidyti (žr. 19 pav.).
Judėjimas valdomas sparčiųjų klavišų kombinacijų pagalba. Judėjimo reljefu raktai ir jų
funkcijos pateikiamos lentelėje žemiau (žr. 4 lentelė).
Laisvo skraidymo rėžime naudotojo avataras gali savo padėtį keisti visomis trimis
kryptimis: judėti į priekį, suktis 360 lapsnių kampu, kilti ir leistis žemyn. Laisvo skraidymo
rėžimo raktai ir jų funkcijos pateikiamos lentelėje žemiau (žr, 5 lentelė).
26
F
Meniu punkto „View“ arba rakto „F9“ pagalba galima pasiekti laisvo kameros valdymo
rėžimą (meniu punktas „Free Camera“), leidžiantį kamerą valdyti nepriklausomai nuo avataro.
Tokiame rėžime kameros poziciją ir kampą leidžiama keisti naudojant sparčiųjų klavišų
kombinacijas (žr. 20 pav). Pozicijos ir kampo valdymo raktai ir funkcijos pateikiamos lentelėje
žemiau (žr. 7 lentelė).
27
7 lentelė. Laisvo kameros valdymo raktai ir funkcijos
Raktas Funkcija
Pelės ratukas aukštyn, „W“ Priartinti kamerą (angl. zoom in)
Pelės ratukas žemyn, „S“ Atitolinti kamerą (angl. zoom out)
Ankstesnio puslapio klavišas Pakelti kamerą į viršų
Tolesnio puslapio klavišas Pakelti kamerą žemyn
„D“ Paslinkti kamerą į dešinę
„A“ Paslinkti kamerą į kairę
„Ctrl + W/A/S/D“ Pagreitinti kameros kėlimą
Aukštyn („↑“) Pasukti kameros žvelgimo kampą aukštyn
Žemyn („↓“) Pasukti kameros žvelgimo kampą žemyn
Kairėn („←“) Pasukti kameros žvelgimo kampą į kairę
Dešinėn („→“) Pasukti kameros žvelgimo kampą į dešinę
„F9“ Įjungti arba išjungti laisvo kameros valdymo rėžimą
VL naudotojo sąsajoje paspaudus dešinįjį pelės mygtuką (ant kito avataro ar objekto)
įgalinamas specialus kontekstinis meniu (žr. 39 pav., 40 pav.).
Kontekstiniame avataro meniu pasiekiamos šios realizuotos funkcijos:
• Peržiūrėti naudotojo identifikacinę kortelę;
• Pasiūlyti draugystę;
• Pradėti susirašinėjimą.
28
Kontekstiniame objektų meniu pasiekiamos objekto redagavimo funkcijos: transformacija,
savybių redaktorius (detaliau punkte 3.6.5. Objektų redaktorius), perkėlimas į inventorių ir
objekto trynimas.
3.6.2. Paieška
Objektų paieškos mechanizmas taip pat pilnai nerealizuotas. Paieškos lange realizuotos
objektų informacijos ir žemėlapio skiltys (žr. 42 pav.).
3.6.3. Inventorius
29
3.6.5. Objektų redaktorius
VL kliento objektų redaktorius (žr. 46 pav.) leidžia modifikuoti (jei naudotojas turi teisę)
pasirinktą virtualaus pasaulio objektą. Redaktoriaus funkcionalumas ir paaiškinimai pateikiami
lentelėje žemiau (žr. 8 lentelė).
30
3.6.6. Draugų sąrašas
Naudotojo draugų sąraše (angl. Friend List) pateikiamas kitų naudotojų, kurie priėmė
„draugystės kvietimą“ sąrašas (žr. 47 pav., 48 pav.). Draugų sąrašo langelis pateikia visus
naudotojo draugus ir jų būsenas (indikatorius pateikia naudotojų prisijungimo būseną), o
kontekstinis meniu įgalina šias funkcijas:
• pereiti į privatų susirašinėjimą (angl. private chat);
• peržiūrėti draugo identifikacinę kortelę;
• pašalinti naudotoją iš draugų sąrašo.
3.6.7. Kontraktai
Ginčių sprendimo mechanizmas įgalina spręsti virtualaus pasaulio erdvėje iškilusius ginčus
Iškilusio ginčo aprašymas kuriamas ginčų registravimo lange (pasiekiama meniu punktu
„Dispute“). Registravimo formoje pateikiama informacija apie ginčo objektą, trumpas ir detalus
aprašai bei ginčo pusės (žr. 50 pav., 51 pav., 52 pav.). Vienai pusei pateikus ginčo ieškinį, kita
pusė gauna informacinį pranešimą bei savo ginčo sąraše mato kitos pusės pateikto ginčo įrašo
detales. Atsakančioji pusė užpildžiusi savo atsakymą (trumpą ir detaliųjų aprašus) gali sutikti ar
nesutikti su ieškiniu. Ieškančioji pusė informuojama apie kitos pusės atsaką ir ginčas
perduodamas ODRS (ginčų sprendimo sistemos) administratoriui, kuris pagal veiklos schemą
paskiria ieškinį spręsti atsakingai institucijai.
31
− Sistema nepateikia jokio apkrovos ar užimtumo indikatoriaus, todėl testuojant
skriptus nebūdavo aiški jų vykdymo būsena.
− Skriptų redaktoriaus kontekstiniame meniu siūlomos funkcijos klaidina naudotoją
(ne visos funkcijos realizuotos).
− Nėra naudotojų įtraukimo į grupę kontrolės (leidžiama tą patį naudotoją į ta pačią
grupę įtraukti daugiau nei vieną kartą).
− Dalis informacinių pranešimų pateikiama ne realiu laiku (kvietimas draugauti ar
pakvietimas į grupę naudotojui pateikiamas tik iš naujo prisijungus)
− Pakeitus avataro modelį, tarp skirtingų naudotojų modelis dažnai taip pat
atvaizduojamas skirtingai (žr. 22 pav.). Toks modelio pakeitimas neretai įtakoja ir
aplikacijos darbo pabaigą.
− Pakeitus resursų kataloge esančias grafines rinkmenas, sutrinka (žr. Error!
Reference source not found..) sistemos tekstūrų krovimas (aptiktas problemos
sprendimas – VL instaliacijos direktorijoje esančių „.db“ plėtinio rinkmenų
ištynimas).
32
3.8. Keleto VL klientų naudojimas vienu metu
33
4. TRIMAČIŲ OBJEKTŲ KŪRIMAS IR EKSPORTAVIMAS Į VL
Virtualiųjų pasaulių aplinkoms svarbu turtinga naudotojo grafinė sąsaja. Šiame skyriuje
aprašoma, kaip naudojant „Blender“ ir „Autodesk 3ds Max 2011“ trimatės grafikos kūrimo PĮ
paruošti ir išeksportuoti į VL aplinką modelius, suderinamus su „OGRE 3D“ 15 grafikos
pateikimo varikliu (toliau darbe naudojamas trumpinys OGRE 3D arba tiesiog OGRE), kuris
būtent ir pasirinktas VL projekte.
4.2. Naudota PĮ
15
Daugiau informacijos apie OGRE 3D oficialioje internetinėje svetainėje http://www.ogre3d.org/
16
Taip pat palaikomi ir kiti grafinių objektų savybes formuojantys tipai (šriftai, šešėliai), tačiau jie darbe
nenagrinėjami.
17
Oficialios internetinės svetainės adresas http://www.python.org/.
18
Eksportavimo įrankio informacija http://www.ogre3d.org/tikiwiki/Blender+Exporter [žiūrėta 2010-04].
34
PĮ pavadinimas Versija Naudojimo paskirtis
rinkmenas.
OgreCommandLineTools19 1.6.3 Komandinės eilutės įrankis, leidžiantis „Ogre XML“
tipo rinkmenas „Blender“ PĮ-oje eksportuoti į VL
aplinkai priimtinas rinkmenas: „.mesh“, „material“.
Autodesk 3ds Max 2011 13.0 Trimačio turinio kūrimo studija20
(64-bit)
OgreMax Scene Exporter 2.3.10 Autodesk 3ds Max įskiepis leidžiantis „3ds Max“ tipo
scenas išeksportuoti į VL aplinkai tinkamas „Ogre tipo“
scenas.
Microsoft Visual C++ Microsoft Visual C + + 2008 distribucijos paketas (x64),
2008 Redistributable reikalingas Autodesk 3ds Max.
Package (64-bit)21
Notepad++ 5.9 Nemokamas atviro kodo redaktorius naudojamas
daugybiniam „.mesh“ ir „.resourse“ tipo grafinių objektų
rinkmenų pritaikymui VL aplinkoje nustatytiems objektų
sąryšiams
Taip pat svarbu paminėti, jog testavimui buvo naudojami viešai publikuojami
nekomerciniam naudojimui skirti modeliai. 22 Atlikus objektų eksportavimo į VL aplinką
testavimą, demonstracinio skripto kūrimui reikalingi modeliai buvo kuriami savarankiškai.
„Blender“23 – nemokama atviro kodo trimačio turinio kūrimo studija. Norint išeksportuoti
grafinį objektą į VL tinkamą „.mesh“ formatą reikia įvykdyti šią žingsnių seką:
1. Suinstaliuoti reikalingą programinę įrangą: „Blender“, „Python“, „Blender
Exporter“, „OgreCommandLineTools“.
2. „Blender“ aplikacijoje atnaujinti skriptų meniu (meniu punktas „Script“ > „Update
Menus“).
19
Įrankis prieinamas adresu http://sourceforge.net/projects/ogre/files/ [žiūrėta 2010-05-30].
20
Darbui buvo naudojama 30 dienų bandomoji versija.
21
Prieinama internetiniu adresu http://www.microsoft.com/downloads/en/
22
Testavimui naudotų modelių šaltiniai: http://www.blendswap.com/, http://www.3dchaya.com ir
http://www.3dgurukul.com.
23
Daugiau informacijos apie „Blender“ funkcionalumo galimybes http://www.blender.org/features-
gallery/features/ [žiūrėta 2011-05-25].
35
3. Atidaryti trimatį modelį ir skriptų meniu pasirinkti „Export“ > „Ogre Meshes“.
4. Eksportavimo nustatymų lange pasirinkti „OgreXMLConverter“.
Atlikus aukščiau įvykdytą žingsnių seką eksportavimo direktorijoje sukuriamos „.mesh“ ir
„.material“ tipų rinkmenos, kurios suderinamos su OGRE grafikos pateikimo varikliu (žr. 26
pav.). Norint suderinti grafines rinkmenas su VL, reikia papildomai atlikti šiuos žingsnius:
1. „Scene.material“ rinkmenoje esančius medžiagų aprašus išskaidyti į atskiras
rinkmenas, papildant jų viduje esančių klasių antraštes plėtiniu „.material“
(išskaidytų rinkmenų pavadinimai turi sutapti su klasių pavadinimais).
2. Panaudojant tekstinį redaktorių „.mesh“ rinkmenoje esančias nuorodas į medžiagas,
papildyti plėtiniu „.material“ (priešingu atveju VL klientas pateiks klaidos
pranešimą).
3. Perkelti rinkmenas į VL instaliacijos direktorijoje esantį resursų katalogą.
27 pav. „Blender“ trimačių objektų kūrimo studija ir trimatis objektas VL pasaulio erdvėje
36
28 pav. Objektas „Blender“ studijoje ir VL pasaulio aplinkoje
Nepavykus gauti pageidaujamo grafinių objektų eksporto (su tekstūra) rezultatų, kaip
alternatyva pasirinktas „Autodesk 3ds Max“ 24 – trimačio turinio studija, turinti integruotus
modeliavimo, animacijos, perteikimo (angl. rendering) ir kompozicijos įrankius. Norint
išeksportuoti grafinį objektą į VL tinkamą „.mesh“ formatą reikia įvykdyti šią žingsnių seką:
1. Suinstaliuoti reikalingą programinę įrangą: „Autodesk 3ds Max 2011 (64-bit)“,
„OgreMax Scene Exporter“, „Microsoft Visual C++ 2008 Redistributable Package
(64-bit)“.
2. Atidaryti eksportavimo nustatymų langą (meniu punktas „OgreMAX“ > „Scene
Settings...“). Skiltyje „Materials“ spausti „Add..“, įtraukti į eksportuojamų medžiagų
rinkinių sąrašą scenoje naudojamus paketus ir patvirtinti veiksmą (spausti mygtuką
„OK“). Taip pat pažymėti varnele „Copy Bitmaps to Export Directory“ (tokiu būdu
užtikrinama, jog visi reikalingi susieti grafiniai objektai būtų išeksportuoti į
saugojimo metu nurodytą katalogą).
3. Atidaryti trimatį modelį (meniu punktas „Open File“).
4. Pasirinkti modelio eksportavimo funkciją (meniu punktas „OgreMAX“ > „Export“ >
„Export Scene“). Iššokusiame lange nurodyti eksportavimo direktoriją, formatą
(„.mesh“ arba „.scene“) ir spausti „Save“.
Atlikus aukščiau įvykdytą žingsnių seką eksportavimo direktorijoje sukuriamos „.mesh“ ir
„.material“ tipų rinkmenos, kurios suderinamos su OGRE grafikos pateikimo varikliu (žr. 29
pav.). Taip pat sėkmingai išeksportuojamos ir modelių tekstūrų rinkmenos. Norint suderinti
grafines rinkmenas su VL, reikia papildomai atlikti šiuos žingsnius:
1. Naudojant tekstinį redaktorių „.material“ rinkmenose esančius medžiagų aprašus
išskaidyti į atskiras rinkmenas, papildant jų viduje esančių klasių antraštes plėtiniu
„.material“ (išskaidytų rinkmenų pavadinimai turi sutapti su klasių pavadinimais).
24
Daugiau informacijos apie „Autodesk 3ds Max“ funkcionalumas galimybes http://usa.autodesk.com/3ds-
max/features/ [žiūrėta 2011-05-25]
37
2. Panaudojant tekstinį redaktorių „.mesh“ rinkmenoje esančias nuorodas į medžiagas,
papildyti plėtiniu „.material“ (priešingu atveju VL klientas pateiks klaidos
pranešimą).
3. Perkelti visas rinkmenas į VL instaliacijos direktorijoje esantį resursų katalogą.
Kūrimo metu išbandyti skirtingi tekstūrų paketai. Naudojant „Material #25 Standart“ bei
„Bitmap“ tipo tekstūrą jungiant prie požymio „Diffuse Color“ (žr. 31 pav.), pavyko realizuoti
užsibrėžtą užduotį – rasti patikimą įrankį, leidžiantį paruošti trimačius objektus su tekstūra, kurie
bus reikalingi demonstracinio skripto įgyvendinime.
38
5. SKRIPTŲ KŪRIMAS PANAUDOJANT VL–LUA
Virtual Life skriptų kūrimas paremtas Lua skriptų kalba (toliau darbe VL pritaikytos Lua
kalba identifikuojama trumpiniu VL–Lua). Šiame skyriuje trumpai supažindinama su Lua ir VL-
Lua skriptų kūrimo kalbomis, aprašomas demonstracinio objekto kūrimas ir jo metu gauti
rezultatai.
Lua – dinamiška skriptų kalba25, todėl skriptuose kintamiesiems jų tipai nenurodomi. Pats
kintamasis apsibrėžia savo tipą.
Lua kalboje realizuoti 8 pagrindiniai tipai:
• „nil“ tipas – speciali reikšmė parodanti, jog kintamasis neturi priskirtos reikšmės.
• loginis (angl. boolean) – loginių reikšmių aibė sudaro 2 reikšmės: „true“ ir „false“.
„not“ operatorius gali reikšmes invertuoti, o „==“ ir „~=“ operatoriai palyginti du
loginius kintamuosius ir pagal tai ar jų reikšmės sutampa gražinti „true“ arba
„false“.
• simbolių eilutė (angl. string) – bet kokia simbolių seka (išskiriama formatu
`simbolių eilutė`, „simbolių eilutė“ arba [[simbolių eilutė]]).
• naudotojo duomenys (angl. userdata) – pagalbinis duomenų tipas naudojamas
saugoti C programavimo kalbos aplikacijų duomenims.
• gija (angl. thread) – gijų kintamųjų tipas.
• lentelė (angl. table) – saugo kolekcinius duomenis (sąrašai, rinkiniai, ir masyvai).
Reikšmės priskiriamos „=“ ženklo pagalba . Kairėje ženklo pusėje rašomas kintamasis, o
dešinėje – jo reikšmė (pvz., z = "labas"). Lua kalboje taip pat palaikomas ir daugybinis
priskyrimas kairėje pusėje pateikiant kintamųjų vardus, o dešinėje reikšmes.
Lua suteikia tradicines kontrolines struktūras: „if“ sąlyginei kontrolei ir „while“ bei
„repeat“, „for“ ciklinei kontrolei. Tokie kontroliniai blokai sintaksėje pabaigiami „end“. išraiška
(išskyrus „reapeat“, kuriam naudojama išraiška „until“).
25
Detali Lua dokumentacija pateikiama oficialiose Lua internetinėse svetainėse adresais: http://Lua–
users.org/wiki/, http://www.lua.org/manual/5.1/
39
5.2. Trumpa VL–Lua apžvalga
5.2.3. Įvykiai
Tokiu atveju paspaudus kairiuoju pelės klavišu ant esybės, pavadinimu objektas, bus
įvykdyta bloko viduje aprašyta skripto dalis.
Vienas šio darbo uždavinių – panaudojus surinktas trimačių objektų modeliavimo bei
eksportavimo į VL ir VL-Lua skriptų kūrimo žinias, sukurti demonstracinį mokymo objektą –
skaidrių peržiūros stendą (žr. 32 pav.).
40
Skaidrė C
Skaidrė B Skaidrė D
Skaidrė A
Stendo pagrindas
Naudotojo avataras
41
5.3.1. „KubuLaipteliai.lua“ skripto kūrimas
Šio skripto (žr. 2 priedas) paskirtis – sukurti 5 skirtingų spalvų kubus ir panaudojant sferą
(paspaudus žymekliu ant jos), išrikiuoti kubus laipteliais.
Svarbiausių skripto dalių paaiškinimai pateikiami lentelėje žemiau (žr. 11 lentelė).
42
33 pav. „KubuLaipteliai.lua“ skripto vykdymas
Šio skripto (žr. 3 priedas) paskirtis – įgalinti 4 kubų rikiavimą. Panaudojant 2 sferas
(paspaudus žymekliu ant jų), perrikiuoti kubus dviem kryptimis.
Svarbiausių skripto dalių paaiškinimai pateikiami lentelėje žemiau (žr. 12 lentelė).
43
Skripto dalies tekstas Paaiškinimas
sfera2:setPosition(sfera:getPosition()
+ Vector3(0,0,3))
sfera2:setColor(1,1,1)
sfera.onMousePress = function(self, e) Paspaudimo žymekliu ant sferos funkcija
<...>
end
naujosPozicijos[1] = pozicijos[4] Pozicijų perrikiavimo algoritmas sukeičiantis 4
<...>
kubų koordinates.
naujosPozicijos[4] = pozicijos[3]
pozicijos[1] = naujosPozicijos[1]
<...>
pozicijos[4] = naujosPozicijos[4]
for i=1,4 do Ciklo vykdymo metu pagal atnaujintas
keturiKubai.kubai[i]:setPosition
koordinates perstatomi kubai
(pozicijos[i])
end
44
5.3.3. „Skaidres.lua“ skripto kūrimas
Šis skriptas (žr. 4 priedas) įgyvendina demonstracinio skaidrių stendo kūrimą panaudojant
trimačių objektų studijoje sukurtus modelius.
Svarbiausių skripto dalių paaiškinimai pateikiami lentelėje žemiau (žr. 13 lentelė).
45
Skripto vykdymo VL kliento skriptų redaktoriuje rezultatai pateikiami žemiau (žr. 35
pav.). Įvykdžius skriptą, sukuriamas demonstracinis skaidrių stendas. Paspaudus žymekliu ant
navigacinių rodyklių mygtukų, atitinkamai pakeičiamos skaidrių pozicijos. Prieš skripto
paleidimą ištestuotas trimačių objektų kūrimas – įkelti visi stendo grafiniai elementai (žr. 36
pav.).
Atlikus skripto testavimą ir nustačius galutines objektų pozicijas viena kitos atžvilgiu,
buvo atnaujintas skaidrių turinys (žr. 37 pav.). Galutinėje skripto versijoje panaudojamos
atnaujintos trimačių objektų tekstūros, skaidrėse pateikiami skripto kūrimo rezultatai.
46
REZULTATAI IR IŠVADOS
47
ŠALTINIAI
48
SĄVOKŲ APIBRĖŽIMAI
49
SANTRUMPOS
50
PRIEDAI
51
42 pav. Paieškos langas
52
45 pav. Avataro išvaizdos redaktorius
48 pav. Informacinis pranešimas apie kito naudotojo prašymą įtraukti jį į draugų sąrašą
53
49 pav. Kontraktų sąrašas
54
51 pav. Ginčo priėmimas / atmetimas
55
54 pav. Skriptų konsolės ir redaktoriaus langai
56
2 priedas. „KubuLaipteliai.lua“ skripto tekstas
-- kubuLaipteliai.lua
-- Justas Klikna, MIF PS IV kursas 3 gr.
----------------------------------------------------------------------
penkiKubai = zone:createDummy()
penkiKubai.kubai = {}
pradinisVektorius = Vector3(0,0,0)
pozicijos = {
Vector3(0,3,0), Vector3(0,6,0), Vector3(0,9,0),
Vector3(0,12,0), Vector3(0,15,0), Vector3(0,16,0)
}
spalvos = {
Color(0.8,0.2,0.2), Color(0.2,0.8,0.2), Color(0.2,0.2,0.8),
Color(0.2,0.4,0.5), Color(0.8,0.2,0.6), Color(1.0,1.0,1.0)
}
for i=1,5 do
kubas = zone:createCube()
kubas:setColor(spalvos[i])
kubas:setPosition(pozicijos[i])
penkiKubai.kubai[i] = kubas
end
sfera = zone:createSphere()
sfera:setPosition(here())
sfera.onMousePress = function(self, e)
for i=1,5 do
penkiKubai.kubai[i]:setPosition(penkiKubai.kubai[i]:getPosition() +
pradinisVektorius)
pradinisVektorius = pradinisVektorius + Vector3(0,0,3)
end
end
57
3 priedas. „RikiuojamiKubai.lua“ skripto tekstas
-- rikiuojamiKubai.lua
-- Justas Klikna, MIF PS IV kursas 3 gr.
----------------------------------------------------------------------
keturiKubai = zone:createDummy()
keturiKubai.kubai = {}
pozicijos = {}
naujosPozicijos = {}
spalvos = {
Color(0.8,0.2,0.2), Color(0.2,0.8,0.2), Color(0.2,0.2,0.8),
Color(0.2,0.4,0.5)
}
for i=2,4 do
pozicijos[i] = pozicijos[i-1] + Vector3(-3,0,0)
end
for i=1,4 do
kubas = zone:createCube()
kubas:setColor(spalvos[i])
kubas:setPosition(pozicijos[i])
keturiKubai.kubai[i] = kubas
end
sfera = zone:createSphere()
sfera:setPosition(here())
sfera:setColor(0,0,0)
sfera2 = zone:createSphere()
sfera2:setPosition(sfera:getPosition()+Vector3(0,0,3))
sfera2:setColor(1,1,1)
sfera.onMousePress = function(self, e)
naujosPozicijos[1] = pozicijos[4]
naujosPozicijos[2] = pozicijos[1]
naujosPozicijos[3] = pozicijos[2]
naujosPozicijos[4] = pozicijos[3]
pozicijos[1] = naujosPozicijos[1]
pozicijos[2] = naujosPozicijos[2]
pozicijos[3] = naujosPozicijos[3]
pozicijos[4] = naujosPozicijos[4]
58
end
sfera2.onMousePress = function(self, e)
naujosPozicijos[1] = pozicijos[2]
naujosPozicijos[2] = pozicijos[3]
naujosPozicijos[3] = pozicijos[4]
naujosPozicijos[4] = pozicijos[1]
pozicijos[1] = naujosPozicijos[1]
pozicijos[2] = naujosPozicijos[2]
pozicijos[3] = naujosPozicijos[3]
pozicijos[4] = naujosPozicijos[4]
end
59
4 priedas. „Skaidres.lua“ skripto tekstas
-- skaidres.lua
-- Justas Klikna, MIF PS IV kursas 3 gr.
----------------------------------------------------------------------
skaidres = zone:createDummy()
skaidres.skaidre = {} --isskiriamas skaidriu masyvas
--Avataro perkelimas
avataras = client:getAvatar()
avataras.setPosition(avataras,atskaitosPozicija + Vector3(-2,20,0))
60
pozicijos[i] = Vector3(0,0,0)
end
rodykle1.onMousePress = function(self, e)
naujosPozicijos[1] = skaidre1:getPosition()
naujosPozicijos[2] = skaidre2:getPosition()
naujosPozicijos[3] = skaidre3:getPosition()
naujosPozicijos[4] = skaidre4:getPosition()
pozicijos[1] = naujosPozicijos[4]
pozicijos[2] = naujosPozicijos[1]
pozicijos[3] = naujosPozicijos[2]
pozicijos[4] = naujosPozicijos[3]
end
rodykle2.onMousePress = function(self, e)
naujosPozicijos[1] = skaidre1:getPosition()
naujosPozicijos[2] = skaidre2:getPosition()
naujosPozicijos[3] = skaidre3:getPosition()
naujosPozicijos[4] = skaidre4:getPosition()
pozicijos[1] = naujosPozicijos[2]
pozicijos[2] = naujosPozicijos[3]
pozicijos[3] = naujosPozicijos[4]
pozicijos[4] = naujosPozicijos[1]
end
61
5 priedas. „Skaidres.lua“ skripto paleidimo instrukcija
4. Įjungti VL testavimo konsolę (meniu punktas „Test“ > „Open test console“).
26
v0.0.2295 ar naujesnės versijos.
62
5. Aplinkos skiltyje („Environment“) spausti mygtuką „Create Terrain“, iššokusiame
lange pasirinkti „.../desert“ kataloge esančią rinkmeną „desert.xml“ ir spausti „Open“
(žr. 57 pav.).
63