You are on page 1of 63

VILNIAUS UNIVERSITETAS

MATEMATIKOS IR INFORMATIKOS FAKULTETAS


PROGRAMŲ SISTEMŲ KATEDRA

Mokymo realizavimas trimačiuose internetiniuose


žaidimuose ir VirtualLife platformoje
Learning Implementation in MMORPGs and
VirtualLife Virtual World

Bakalauro baigiamasis darbas

Atliko: Justas Klikna


(parašas)

Darbo vadovas: Doc. Dr. Kristina Lapin


(parašas)

Darbo recenzentas: Doc. Dr. Vytautas Čyras


(parašas)

Vilnius – 2011
Santrauka

Darbe analizuojami trimačiai virtualieji pasauliai – interaktyvios trimatės virtualiosios


aplinkos, kuriose naudotojai save pateikdami grafinių reprezentacijų forma (avatarais) bendrauja
ir bendradarbiauja tarpusavyje. Vis populiarėjantis realaus pasaulio modelių taikymas
virtualiuosiuose pasauliuose skatina tyrinėti mokymo realizavimo galimybes.
Šio darbo tikslas – apžvelgti mokymo realizavimo galimybes dvejuose skirtinguose
virtualiosiose aplinkose: trimatės grafikos internetiniame žaidime Lineage II ir VirtualLife
platformoje. Darbo pirmoje dalyje etnografiškai išanalizuojama Lineage II aplinka ir išskiriami
naudotojų poreikiai, kurie skatina dalyvauti trimačiuose virtualiuosiuose pasauliuose. Gauta
informacija naudojama Europos Sąjungos 7-osios Bendrosios Programos projekte VirtualLife.
Darbe apžvelgiama kuriamos aplinkos veikimo principai, prototipo versijoje realizuotas
funkcionalumas, platformos teikiamos skriptų ir grafinių objektų naudojimo galimybės. Taip pat
sukuriamas demonstracinis skaidrių peržiūros modelis bei pateikiamos problemos, su kuriomis
susidurta jį kuriant, sprendimai.

Raktiniai žodžiai: trimačiai virtualieji pasauliai, mokymas, mokymo realizavimas,


VirtualLife, Lineage II.

2
Summary

The paper analyzes the three-dimensional virtual worlds - interactive three-dimensional


virtual environments where users are placing themselves in the form of graphical representations
(avatars) to interact and cooperate with each other. The popularity of real-world models
implementation into virtual worlds encourage to research learning room
Aim of this work is to analyze the room of training in two different virtual environments:
MMORPG game Lineage II and VirtualLife platform. Ethnographic analysis of MMORPG game
Lineage II allows to identify the user needs, which encourages them to participate in 3D virtual
worlds. Obtained information is used in the European Union's 7th Framework Program project
VirtualLife. The paper reviews the development, operating principles and implemented
functionality provided by scripting language and use of graphics options. There was also created
a demo presentation model and notes of decisions to solve problems encountered in the
development process.

Key words: three-dimensional virtual worlds, education, learning implementation,


VirtualLife, Lineage II.

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

Realaus pasaulio modelių įgyvendinimui virtualių pasaulių aplinkose tampant vis


aktualesne tema, prasminga tyrinėti mokymo realizavimo galimybes.

Šiam tyrimui pasirinkto dvi visiškai skirtingos virtualiosios aplinkos:


− Trimatis internetinis žaidimais „Lineage 2“;
− VirtualLife platforma.

Pagrindiniai šio darbo tikslai, susieti su tiriamais objektais:


1. Išskirti pagrindinius „Lineage 2“ (toliau darbe naudojamas trumpinys L2) naudotojų
poreikius, kurie skatina dalyvauti virtualiuose trimačiuose pasauliuose.
2. Išnagrinėti „VirtualLife“ (toliau darbe naudojamas trumpinys Virtual Life arba VL)
platformos testinės versijos teikiamas funkcionalumo galimybes mokymui
įgyvendinti.
3. Įgyvendinti mokymo objektą VL aplinkoje.

Tikslams įgyventi suformuoti šie uždaviniai:


1. Atlikti MMORPG žaidimo „Lineage II“ etnografinę analizę: išnagrinėti žaidimo
aplinką, grafinės naudotojo sąsajos elementus, apžvelgti naudotojų apmokymo
procesą žaidimo pradžioje.
2. Atlikti VL aplinkos analizę.
3. Apžvelgti ir aprašyti skriptų ir trimačių objektų kūrimo VL galimybes.
4. Sukurti demonstracinį skriptą ir reikalingus grafinius elementus jam realizuoti.

Darbas vykdomas Europos Sąjungos 7–osios Bendrosios Programos projekte


1
„VirtualLife“ (Saugi, patikima ir teisiškai reglamentuojama bendradarbiavimo aplinka
virtualiame gyvenime). Vilniaus Universiteto Matematikos ir informatikos fakultetas, kaip
projekto partneris, suteikė galimybę fakulteto studentams atlikti įvairaus pobūdžio tyrimus,
susijusius su virtualiaisiais pasauliais ir projekte kuriama VL platforma. Seminarų metu
dėstytojai ir studentai dalinosi patirtimi bei gautais tyrimo rezultatais, kurie naudojami kaip
tiriamoji projekto medžiaga. Studentai individualiai, pagal savo darbų tematikas, ruošia
kursinius, bakalauro baigiamuosius ir magistro darbus.
Atsižvelgiant į užduotis, darbe išskiriami šie skyriai, atspindintis darbo vykdymo veiklą:
− 1 skyriuje paaiškinama bendra virtualiųjų pasaulių sąvoka bei aktualumas;

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.

Užduočių įvykdymui buvo naudota VL projekto vykdytojų teikiama dokumentacija bei


išoriniai šaltiniai. Svarbu paminėti, jog VL projektas dar tik konstravimo fazėje, todėl projektų
vykdytojų viešinamoje dokumentacijoje nepateikiama daug techninio pobūdžio informacijos
apie VL pritaikytos Lua skriptų kalbą bei darbą su trimačiais objektais. Dalis funkcijų
nerealizuotos, todėl ne visi turimi skriptų pavyzdžiai sėkmingai veikė, pradinės VL aplikacijos
prototipo versijos nepasižymėjo stabilumu. Užduotims įgyvendinti naudojami išoriniai šaltiniai:
− Lua skripto kalbos kūrėjų portale pateikiama informacija (naudotojų vadovai,
techninės specifikacijos, rekomendacijos).
− OGRE grafikos pateikimo variklio kūrėjų portale pateikiama informacija (naudotojų
vadovai, techninės specifikacijos, pavyzdžiai, trimačio turinio įrankiams pritaikytos
papildomos programinės įrangos naudojimo instrukcijos).

Trimačių modelių kūrimui ir eksportavimui buvo naudotos šios priemonės:


− Trimačiu turinio kūrimo studijos: „Blender“ ir „Autodesk 3ds Max“;
− Objektų eksportavimo į VL OGRE grafikos varikliui priimtino formato rinkmenas
programinė įranga: „Blender Exporter“, „OgreCommandLineTools“, „OgreMax
Scene Exporter“;
− Papildoma PĮ reikalinga aplikacijų paleidimui ir operacijų vykdymui: „Python“,
„Microsoft Visual C++ 2008 Redistributable Package“;
− Tekstinis redaktorius „Notepad++“.
− „Smėlio dėžės“ (angl. sandbox) technologijos PĮ „Sanboxie“2 įgalinanti izoliuotos
programos paleidimo ir vykdymo aplinkos sukūrimą. Naudojant „Sanboxie“ keletas
klientų lokaliame kompiuteryje gali prisijungti prie bendros zonos.

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.

VL aplikacijos testavimo techninės ir programinės įrangos duomenys:


− Operacinė sistema: „MS Windows 7 Professional“ (64 bitų architektūra);
− Procesorius: „Intel Pentium Dual-Core CPU E6700“ (3.20GHz taktinis dažnis);
− Operatyvi atmintis: 4 GB;
− Vaizdo plokštė: „NVIDIA GeForce GTS 250“.

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ė).

1 lentelė. Registruotų naudotojų paskyrų skaičius (milijonai) pagal amžiaus grupes


Naudotojų 2009 2011 2011
amžiaus grupė I II III IV I II III IV I
5 – 10 m. 77 114 152 179 190 211 219 235 272
10 – 15 m. 246 334 367 392 413 444 468 511 561
15 – 25 m. 73 99 117 193 237 273 288 299 313
> 25 m. 18 21 23 25 27 30 34 36 39
Viso 414 568 659 789 867 958 1009 1081 1185

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

1 pav. Virtualiuose pasauliuose registruotų naudotojų augimas

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.

2.1. Žaidimo apžvalga

Šiame skyriuje detaliau apžvelgiama L2 žaidimo aplinka, naudotojo sąsajos elementai bei
kiti valdymo elementai.

2.1.1. Žaidimo aplinka

2.1.1.1. Unikalios specializuotos rasės ir klasės

Ž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ą.

2.1.1.2. Žaidimo tikslas

Ž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.

2.1.2. Naudotojo sąsaja

L2 naudotojo sąsaja (žr. 2 pav.) susideda iš dažniausiai MMORPG tipo žaidimuose


naudojamų elementų.

2 pav. Naudotojo sąsajos pavyzdys

2.1.2.1. Būsenos langas

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.

2.1.2.2. Taikinio langas

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.

2.1.2.3. Nuorodų langas

Į 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.

2.1.2.4. P okalbių ir sisteminių pranešimų langas

Š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ė).

2 lentelė. Bendravimo filtrai ir su jais susijusios komandos.


Filtras Spec. simbolis Paaiškinimas
Paprastas Nėra Žaidėjas norėdamas kalbėti su netoliese esančiais
žaidėjais, tiesiog surenka tekstą ir spaudžia „Enter“.
Klano „@“ (Shift–2) Žinutė siunčiama visiems klano nariams,
nepriklausomai nuo to, kur jie yra.
Alianso „$“ (Shift–4) Žinutė siunčiama visiems aljanso nariams,
nepriklausomai nuo to, kur jie yra.
Kompanijos „#“ (Shift–3) Žinutė siunčiama visiems kompanijos nariams,
(angl. party) nepriklausomai nuo to, kur jie yra.
Prekybos „+“ Žinutė siunčiama prekybos skelbimo formatu.
Individualiam „``žaidėjovardas“ Žinutė siunčiama individualiam žaidėjui.
žaidėjui
Šauksmas „!“ (Shift–1) Paryškinta žinutė siunčiama netoliese esantiems
žaidėjams.
Herojų „%“ (Shift–5) Herojų statusą turintiems žaidėjams siunčiama žinutė.

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ų.

2.1.2.5. Meniu juosta

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

2. Inventorius (pateikia turimų bei naudojamų objektų sąrašą (ekipiruotę))


3. Veiksmai (pagrindiniai, kompanijos bei socialiniai)

4 pav. Langai, pasiekiami iš pagrindinės juostos

4. Įgūdžiai ir burtai – rodomi aktyvūs bei pasyvūs įgūdžiai.


5. Užduotis – iki 25 vykdomų užduočių sąrašas su detalia informacija
6. Klanas – rodo klano informaciją
7. Žemėlapis – pateikia avataro padėtį (žr. 5 pav.).

5 pav. Žemėlapio langai

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.)

6 pav. Sisteminių nustatymų langas

2.1.2.6. Grupės langas

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.

2.1.3. Kiti valdymo mechanizmai

2.1.3.1. Kameros pozicija

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“

8 pav. Skirtingų žaidimo kamerų pavyzdžiai

2.1.3.2. Sparčiųjų klavišų kombinacijos

Žaidime taip pat gausu ir sparčiųjų klavišų kombinacijų, kurios naudingos patyrusiems
žaidėjams (žr. 3 lentelė.).

3 lentelė. Sparčiųjų klavišų kombinacijos


Raktas Funkcija Raktas Funkcija
„Esc“ Atžymi taikinį „Tab/Alt+V“ Atidaro inventoriaus langą
„F1~F12“ Nuorodos „Alt+T“ Rodo Būsenos langą
„Alt+F1~F10“ Perjungia nuorodų „Alt+K“ Rodo įgūdžių/magijos langą
juostas
„Page Up/Down“ Keičia kameros vaizdą „Alt+C“ Rodo Veiksmų langą
„Ctrl “ Atakos mygtukas „Alt+N“ Atidaro klano veiksmų langą

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ą

2.1.3.3. Valdymas komandomis

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.

2.2. Scenarijų apžvalga

2.2.1. Naujo avataro kūrimas

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

2.2.2. Žaidimo pradžia

Ž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

10 pav. Apmokymų scenarijaus pavyzdys

2.2.3. Žaidimas po apmokymų

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.

11 pav. Naujokų instruktorius

2.2.4. Kova su virtualaus pasaulio monstru

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

2.3. Naudotojų skatinimas

Žemiau trumpai pateikiami aspektai, leidžiantys naudotojui “susitapatinti” su savo


valdomu personažu, motyvuojantys dalyvauti virtualiame pasaulyje [Rei05, Kat04, Lof05].
Estetinis patrauklumas. L2 virtualus pasaulis kurią savitą patrauklią erdvę, kurioje
modelių (personažų) detalumas leidžia naudotojui „įsikūnyti“ į savo personažą.
Neribotas funkcionalumas. Žaidimo virtualus pasaulis pateikia platų rangą pasirinkimų,
kurie įgalina kurti savo scenarijus. Naudotojo valdoma siužetinė linija imituoja laisvės pojūtį,
kuris „naikina“ ribą tarp realaus pasaulio ir dirbtinio.
Išmokstamumas. Naujas L2 naudotojas greitai pripranta prie valdymo mechanizmo
realizacijos.
Kompleksinių emocijų patyrimas. Bendravimas ir bendradarbiams virtualaus pasaulio
erdvėje su kitais žadėjais skatina naudotojų emocijas.
Pasitenkinimas. Užsibrėžto tikslo siekimas ir atlygis už tai žaidime kelia naudotojo
pasitenkinimą. Darbo atlygis ir konkurencija su kitais žaidėjais skatina naudotoją įsitraukti į
žaidimą.

2.4. Gautų rezultatų apibendrinimas

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.

3.1. Teisių užtikrinimas

VL platforma – realaus pasaulio teisinės struktūros atspindys. Teisinę sistemą sudaro 3


sluoksniai:
1. Aukščiausioji konstitucija – nustato taisykles tiek nacijos (VL serverio) naudotojui,
tiek ir administratoriams.
2. Virtualios nacijos (serverio) konstitucija – nustato taisykles registruotiems ir
neregistruotiems (turintiems svečio statusą) naudotojams. Kiekvienas naudotojas,
norėdamas patekti į aplinką, turi susipažinti ir patvirtinti, jog sutinka su pateiktomis
taisyklėms.
3. Kontraktai – specializuotos sutartys.
Sistemą taip pat papildo ir kiti mechanizmai: ginčų sprendimo mechanizmas ir elektroninio
balsavimo sistema.

3.2. Lygiarangių architektūra

VL zonų tinklo topologija paremta lygiarangių (angl. peer–to–peer, P2P) architektūra.


Tokioje architektūroje kiekviena tinklo grandis tampa paslaugos tiekėju (žr. 13 pav.). Taip
įgalinamas apkrovos paskirstymas, modališkumas ir plečiamumas.

13 pav. P2P architektūros principinė schema11

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.

14 pav. Naudotojo identifikacinė kortelė

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

VL platforma įgalina 2 rūšių interaktyvumą:


− tarp naudotojų avatarų (avatarai gali bendrauti tarpusavyje, sudaryti naudotojų
grupes, įtraukti kitus naudotojus ir draugų sąrašus);
− tarp avatarų ir įvairių virtualaus pasaulio objektų.

3.5. Naudotojo sąsaja

VL kliento naudotojo sąsajoje išskiriamos šios pagrindinės dalys (žr. 18 pav.):


• Aplikacijos meniu juosta (viršutinėje ekrano dalyje, 16 pav.);
• Avataro ir jį supančios aplinkos atvaizdavimo langas (pagrindinė lango dalis
centre);
• Virtualaus pasaulio meniu (apatinėje ekrano dalyje, žr. 17 pav.) – nuorodos į
pokalbių (angl. chat), paieškos, inventoriaus, avataro, objektų redaktoriaus, draugų,
kontraktų, ginčų valdymo, el. balsavimo (angl. e–voting) langus.

16 pav. Viršutinė meniu juosta

17 pav. Apatinė meniu juosta

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

3.5.1. Avataro judėjimo valdymas

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ė).

4 lentelė. Judėjimo funkcijų raktai


Raktas Funkcija
Aukštyn („↑“) Eiti į priekį
„Ctrl“ + Aukštyn („Ctrl + ↑“) Bėgti į priekį
Kairėn („←“), Dešinėn („→“) Pasisukti į kairę arba į dešinę
Tarpas Šokti į priekį
„F“ Pereinama iš judėjimo reljefu rėžimo į laisvo skraidymo
režimą

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ė).

5 lentelė. Judėjimo funkcijų raktai


Raktas Funkcija
Aukštyn („↑“) Skristi į priekį
Kairėn („←“), Pasisukti į kairę arba į dešinę
Dešinėn („→“)
„+“, „–“ Kilti į viršų arba leistis į apačią
„F“ Pereinama iš laisvo skraidymo režimo į judėjimo reljefu. Paspaudus avataras
iškart nusileidžia ant žemės arba ant po juo esančio objekto.

26
F

19 pav. Judėjimo rėžimai

3.5.2. Kameros pozicijos valdymas

VL kliento grafinėje naudotojo sąsajoje realizuoti 2 kameros valdymo rėžimai: pagal


nutylėjimą ir laisvo kameros valdymo (angl. free camera). Kameros pozicijos valdymo pagal
nutylėjimą raktai ir funkcijos pateikiamos lentelėje žemiau (žr. 6 lentelė).

6 lentelė. Kameros pozicijos valdymo avataro atžvilgiu raktai


Raktas Funkcija
Pelės ratukas aukštyn Priartinti kamerą (angl. zoom in)
Pelės ratukas žemyn Atitolinti kamerą (angl. zoom out)
Ankstesnio puslapio klavišas Padidinti kameros žvelgimo kampą, keliant ją į viršų
Tolesnio puslapio klavišas Sumažinti kameros žvelgimo kampą, leidžiant ją į apačią

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ė).

20 pav. Laisvas kameros valdymas panaudojant sparčiųjų klavišų kombinacijas

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 kliente taip pat realizuotas ir kameros valdymo scenarijaus redaktorius (pasiekiamas


meniu punkto „View“ > „Open Camera Path Editor...“ arba rakto „Ctrl + P“ pagalba), leidžiantis
įrašyti kameros valdymo scenarijų seką (žr. 21 pav.). Tokios sekos elementai – nustatytos
trukmės valdymo scenarijai (kameros judėjimo trajektorijos, jos žvelgimo kampo ir nuotolio
nustatymų rinkiniai).

21 pav. Kameros valdymo scenarijaus redaktorius

3.5.3. Kontekstiniai meniu

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. Kiti mechanizmai

Toliau trumpai aprašomos VL kliento galimybės, pasiekiamos naudojantis apatinės meniu


juostos nuorodomis. Ekranų formos pateikiamos dokumento pabaigoje esančiame priede (žr. 1
priedas. VL kliento naudotojo sąsajos elementai).

3.6.1. Pokalbiai tarp sistemos naudotojų

VL pokalbių mechanizmas (angl. chat) įgalina saugų užkoduotą apsikeitinėjimą


pranešimais. Pokalbių lange (žr. 43 pav.) pateikiamas visų zonoje esančių naudotojų ir draugų
sąrašai, leidžiantys bendravimą ne tik bendrame kanale, bet ir individualiai.
Taip pat numatyta ir bendravimo balsu galimybė, tačiau funkcionalumas pilnai
nerealizuotas ir testuojamoje versijoje balso pokalbių (angl. audio chat) išbandyti nepavyko.

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

Inventoriaus langelyje (žr. 44 pav.) pateikiamas inventoriaus objektų sąrašas. Išnešant


elementą iš sąrašo į pasaulio atvaizdavimo langą, elementas sukuriamas, o įtempiant jį į
inventoriaus langelį – objektas perkeliamas į sąrašą (objektus taip pat galima perkelti į sąrašą
objektų kontekstinio meniu pagalba naudojant komandą „Move To Inventory“ (perkelti į
inventorių)). Testuojamoje versijoje įgyvendinti 2 sąrašai:
• paprastų geometrinių figūrų sąrašas (cilindras, kūgis, kubas ir sfera);
• naudotojo turimų objektų sąrašas.

3.6.4. Avataro išvaizdos redaktorius

Išvaizdos redaktorius (pasiekiamas meniu punktu „Avatar“) įgalina naudotojo valdomo


avataro išvaizdos modifikavimą (žr. 45 pav). Testuojamoje versijoje realizuotas bendros
išvaizdos (angl. general appearance) keitimas pagal lytį (pateikiami 2 modeliai). Taip pat
demonstraciniu tikslu įgyvendintas kūno dydžio keitimas, leidžiantis skalės pagalba sumažinti ar
padidinti naudotojo valdomą avatarą.

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ė).

8 lentelė. Objektų redaktoriaus galimybės


Objekto savybė Parametrai Paaiškinimas
Grafika Pozicija, dydis (angl. X, Y, Z ašims nustatomi grafinio objekto parametrai:
scale), koordinatės, dydis, ir rotacija
rotacija (angl. rotate)
Informacija Vardas Objekto pavadinimas
Identifikacinis kodas Unikalus kodas, identifikuojantis objektą
(„GUID“)
Aprašymas (angl. Laisvo teksto laukas, leidžiantis pateikti kitiems
description) vartotojams objekto informaciją
Grupė Grupė, kuriai priklauso objektas ir matomumas
(privatus, viešas VL, viešas VL ir internete).
Autorius (angl. Objekto autorius (leidžiama peržiūrėti autoriaus
creator) identifikacinę kortelę)
Savininkas (angl. Objekto savininkas (objekto savininkas panaudojęs
owner) funkcija „Give“ (atiduoti) gali perduoti objektą kitam
naudotojui).
Teisės Rolė Rolė, kuriai nustatomos teisės. VL testuojamoje
versijoje realizuotos rolės: VN administratorius, VZ
administratorius, grupė, autorius, savininkas, kiti
naudotojai
Teisės Teisių rinkinys, leidžiantis apibrėžti, kokius
veiksmus atitinkamą rolę turintys naudotojai gali
atliktu su objektu (kopijuoti, trinti, perkelti, pakeisti
savininką, įkelti į inventorių, priskirti grupei, keisti
aprašymą).
Skriptai Skriptų rinkinys Su objektu susietų skriptų rinkinys (funkcionalumas
testuojamoje versijoje pilnai nerealizuotas)

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

Kontraktų valdymo sistemos mechanizmas konstravimo fazėje todėl testuojamoje VL


versijoje jo išbandyti nepavyko. Naudotojo sąsajos lange (žr. 49 pav.) pateikiami tik numatomi
kontraktų tipai: šablonai, pasiūlymai ir sutartys.

3.6.8. Ginčų sprendimo mechanizmas

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.

3.6.9. El. balsavimas

VL numatoma elektroninio balsavimo galimybė (žr. 53 pav.), leidžianti sertifikatų


institucijų patvirtintos tapatybės naudotojams dalyvauti aktyviuose referendumuose.
Testuojamos VL versijos kliente galima tik aktyvių ir buvusių referendumų sąrašo peržiūra.

3.7. Nesklandumai, klaidos ir pastebėjimai

Darbo su VL skirtingomis prototipo versijomis metu aptikta nesklandumų:


− Pirmosios prototipo versijos pasižymėjo aplikacijos vykdymo nestabilumu, dažnai
atlikus bet kokią operaciją būdavo pateikiami įvairūs klaidos pranešimai. Aplikacijos
lyginant su paskutinėmis testuojamomis versijomis veikė daug lėčiau.

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).

22 pav. Avatarų išvaizdos neatitikimas tarp VL klientų

23 pav. Objekto tekstūros pakeitimo rezultatas

32
3.8. Keleto VL klientų naudojimas vienu metu

Nagrinėjant VL galimybes, panaudota „smėlio dėžės“ (angl. sandbox) PĮ („Sanboxie“,


versija v3.54), įgalinanti aplikacijų paleidimą ir vykdymą izoliuotoje aplinkoje. Naudojant
„Sanboxie“ keletas klientų lokaliame kompiuteryje gali prisijungti prie bendros zonos (žr.
prieduose 38 pav.). Kiekviena virtuali „smėlio dėžė“ individualiai saugo vykdymo metu sukurtus
ar modifikuotus duomenis, todėl išvengiama šalutinio poveikio leidžiant du klientus vienu metu
(vieną paprastai ir kitą per „Sanboxie“).
Norint paruošti „Sanboxie“ darbui su VL klientu reikia atlikti šią veiksmų seką:
1. Instaliuoti „Sanboxie aplikaciją“.
2. Sukurti naują „smėlio dėžę“ (meniu punktas „Sanbox“ > „Create New Sanbox“).
3. Nustatymų lange (pasiekiamas kontekstinio meniu „Sanbox Settings“) „File
Migration“ skiltyje uždėti varnelę požymiui „Don‘t issue a message when a file is
too large to migrate“ ir išsaugoti pakeitimus (žr. 24 pav.).
VL klientas paleidžiamas kontekstinio meniu pagalba pasirinkus „Run Sanboxed“ (žr. 25
pav.).

24 pav. „Sanboxie“ nustatymai

25 pav. Kontekstinis meniu

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.1. VL trimačiai grafiniai objektai

VL trimačių objektų grafinėje struktūroje galime išskirti šiuos pagrindinius16 tipus:


• Scenos (rinkmenų plėtinys „.scene“)
• Modeliai (rinkmenų plėtinys „.mesh“)
• Medžiagos (rinkmenų plėtinys „.material“)
• Tekstūros (tradiciniai grafinių rinkmenų formatai: „.png“, „.tga“, „.jpg“, „.raw“,
.gif, .dds“)
Tokioje struktūroje sceną sudaro modelių rinkinys. Modelius dengia medžiagos ir
tekstūros. Scenoje keletas modelių gali naudoti tas pačias medžiagas ir tekstūras (nuorodos į
tekstūras pateikiamos medžiagų aprašų rinkmenose). Grafinių objektų visuma VL kuria aplinkos
reljefą, jo detales bei kitus objektus.

4.2. Naudota PĮ

Objektų kūrimui naudotos programinės įrangos sąrašas (pavadinimai, versijos ir naudojimo


paskirtis) pateikiamas lentelėje žemiau (žr. 9 lentelė).

9 lentelė. Trimačių objektų kūrimui ir eksportavimui naudota PĮ


PĮ pavadinimas Versija Naudojimo paskirtis
Blender 2.57b Trimačio turinio kūrimo studija
Python 2.6.6 Programavimo kalba17, reikalinga darbui su papildomais
„Blender“ įrankiais
Blender Exporter18 „Blender“ trimačių objektų eksportavimo įrankis
įgalinantis eksportavimą į „Ogre XML“ tipo grafines

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.

4.3. Objektų kūrimas panaudojant „Blender“ PĮ

„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ą.

26 pav. „Blender“ išeksportuotos rinkmenos

Objektų eksportavimo ir įkėlimo į VL aplinką rezultatai pateikiami žemiau (žr. 27 pav., 28


pav.). Išbandžius skirtingus eksportavimo įrankio nustatymus, sėkmingai pavyko į VL aplinką
įkelti keletą modelių, susietų su medžiagomis. Atlikus testavimą naudojant tekstūra padengtus
modelius, sėkmingų rezultatų pasiekti nepavyko – nuspręsta ieškoti kitų priemonių.

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

4.4. Objektų kūrimas panaudojant „Autodesk 3ds Max“ PĮ

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ą.

29 pav. „Autodesk 3ds Max“ išeksportuotų ir pritaikytų importavimui į VL rinkmenų rinkiniai

Objektų eksportavimo ir įkėlimo į VL aplinką rezultatai pateikiami žemiau (žr. 30 pav.).


Išbandžius skirtingus eksportavimo įrankio nustatymus, sėkmingai pavyko į VL aplinką įkelti
modelį, susietą su medžiagomis ir tekstūra.

30 pav. Trimatis objektas „Autodesk 3ds Max“ studijoj ir VL pasaulio erdvėje

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.

31 pav. Tekstūrų redaktoriaus nustatymai

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.

5.1. Trumpa Lua apžvalga

5.1.1. Kintamųjų tipai

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).

5.1.2. Reikšmių kintamajam priskyrimas

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.

5.1.3. Kontrolinės struktūros

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

Šiame poskyryje trumpai apžvelgiama realizuotos VL-Lua galimybės, įgalinančios objektų


kūrimą, jų savybių modifikavimą ir funkcijų iškvietimą sąveikaujant su objektas.

5.2.1. Objektų kūrimas

Objektų kūrimas vykdomas panaudojant zonos klasės funkciją zone:createMesh().


Parametruose nurodomas resursuose įtraukto objekto modelio pavadinimas su plėtiniu „.mesh“,
pvz. zone:createMesh(”modelis.mesh“). Sukurtą objektą iškart galima priskirti kintamajam,
pvz. modelis = zone:createMesh(”modelis.mesh“).

5.2.2. Objektų pozicijų keitimas

Objektų pozicija keičiama panaudojant funkciją setPosition(). Parametruose nurodomas


pozicijos vektorius, pvz pozicija = Vector3(3,3,3) modelis:setPosition(pozicija).
Taip pat realizuota ir pozicijos gavimo funkcija getPosition(), kuri gražina objekto
koordinates.
Norint gauti naudotojo valdomo avataro koordinates reikalinga funkcija
client:getAvatar(). Norint pakeisti avataro poziciją reikia įvykdyti avataras =

client:getAvatar() ir avataras.setPosition(avataras, naujaPozicija). Tokiu būdu


kintamajam avataras priskiriamas naudotojo valdomo avataro objektas, su kuriuo galima atlikti
įprastas pozicijų gavimo ir keitimo operacijas.

5.2.3. Įvykiai

VL sukurtos esybės gali reaguoti į įvairius įvykius (pelės mygtukų ar klavišų


paspaudimus). Toks atsakas į nustatytą raktą skripte aprašoma funkcija, pvz.
objektas.onMousePress = function(self, e) <atsakas į raktą> end

Tokiu atveju paspaudus kairiuoju pelės klavišu ant esybės, pavadinimu objektas, bus
įvykdyta bloko viduje aprašyta skripto dalis.

5.3. Demonstracinio objekto kūrimas panaudojant VL-Lua

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

<< Navigacija Navigacija >>

Stendo pagrindas

Naudotojo avataras

32 pav. Skaidrių peržiūros stendo principinė struktūra

Demonstraciniame objekte išskiriamos dalys aprašomos lentelėje žemiau (žr. 10 lentelė).

10 lentelė. Skaidrių peržiūros objekto elementai ir jų paaiškinimai


Elementas Paaiškinimas
Skaidrė A, ..., Skaidrė D Keturios, skaidrės, kurių tekstūros – grafiniai paveikslėliai.
Navigaciniai mygtukai Įgalina pakeisti visų skaidrių pozicijas.
Stendo pagrindas Pagrindas, kuris naudojamas avataro perkėlimui bei likusių
elementų išdėstymui.

Skripto kūrimo darbai buvo išskaidyti į šias užduotis:


1. Paruošti skriptą, kuris įgalina objektų pozicijų keitimą naudojant kitą objektą
(veiksmo įgyvendinimas).
2. Paruošti skriptą, kuris leistų naudojant du objektus perrikiuoti likusius (pozicijų
keitimo dviem kryptimis algoritmo įgyvendinimas)
3. Importavus į VL trimačius modelius, skripto pagalba sukurti visus stendo
elementus bei nustatyti jų pozicijas.
4. Pritaikyti sukurtus skriptus ir įgyvendinti demonstracinio stendo modelį.
Vykdant aukščiau išvardintas užduotis buvo sukurti trys skriptai: „KubuLaipteliai.lua“,
„RikiuojamiKubai.lua“ bei „Skaidres.lua“. Pakeičiant skaidres skirtingų spalvų kubais, o
navigacinius mygtukus – sferomis, palaipsniui sukurti pradiniai skriptai, dalimis realizuojantys
galutinį skriptą. Kiekvieno skripto kūrimas ir gauti rezultatai apžvelgiami punktuose žemiau
(pilni skriptų tekstai bei galutinės skripto versijos paleidimo instrukcija pateikiami dokumento
pabaigoje esančiuose prieduose).

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ė).

11 lentelė. Skripto „KubuLaipteliai.lua“ dalių paaiškinimai


Skripto dalies tekstas Paaiškinimas
penkiKubai = zone:createDummy() Išskiriamas masyvas, saugoti kubams
penkiKubai.kubai = {}
pozicijos ={ Išskiriamas masyvas, saugantis pradines
Vector3(0,3,0),Vector3(0,6,0),
kubų koordinates (vektorius). Kubai
<...>,
išrikiuojami į viršų stulpeliu.
Vector3(0,16,0)
}
for i=1,5 do 5 kartus vykdomas ciklas, kurio metu
kubas = zone:createCube()
sukuriamas kubas, nustatoma jo spalva ir
kubas:setColor(spalvos[i])
pozicija bei kubas įtraukiamas į masyvą.
kubas:setPosition(pozicijos[i])
penkiKubai.kubai[i] = kubas
end
sfera = zone:createSphere() Sukuriamas sferos objektas ir jo pozicija
sfera:setPosition(here())
nustatoma pagal avataro padėtį.
sfera.onMousePress = function(self, e) Paspaudimo žymekliu ant sferos funkcija
<...>
end
for i=1,5 do Ciklo vykdymo metu pakeičiamos kubų
penkiKubai.kubai[i]:setPosition
pozicijos (vektoriumi (0,0,3) paslenkami į
(penkiKubai.kubai[i]:getPosition() +
dešinę)
pradinisVektorius)
pradinisVektorius = pradinisVektorius
+
Vector3(0,0,3)
end

Skripto vykdymo VL kliento skriptų redaktoriuje rezultatai pateikiami žemiau (žr. 33


pav.). Paspaudus ant sferos, 5 kubai išsidėsto laipteliais (vektoriaus (0,0,3) poslinkiu).

42
33 pav. „KubuLaipteliai.lua“ skripto vykdymas

5.3.2. „RikiuojamiKubai.lua“ skripto kūrimas

Š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ė).

12 lentelė. Skripto „RikiuojamiKubai.lua dalių paaiškinimai


Skripto dalies tekstas Paaiškinimas
keturiKubai = zone:createDummy() Išskiriamas masyvas, saugoti kubams
keturiKubai.kubai = {}
pozicijos = {} Išskiriami du masyvai: kubų koordinačių
naujosPozicijos = {}
saugojimui ir kubų rikiavimui. Pradinėms
for i=1,4 do
koordinatėms nustatomas nulinis vektorius.
pozicijos[i] = Vector3(0,0,0)
end
pozicijos[1] = Pirma kubo koordinatė pakeičiama jį
here() + Vector3(-5,0,0)
atitraukiant nuo naudotojo avataro. Likusios 3
for i=2,4 do
koordinatės apskaičiuojamos pagal prieš tai
pozicijos[i] = pozicijos[i-1] +
Vector3(-3,0,0) masyve esančią pozicijų koordinatę pridedant
end vektorių (-3,0,0).
for i=1,4 do 4 kartus vykdomas ciklas, kurio metu
kubas = zone:createCube()
sukuriamas kubas, nustatoma jo spalva,
kubas:setColor(spalvos[i])
pozicija ir kubas įtraukiamas į masyvą. Tokiu
kubas:setPosition(pozicijos[i])
keturiKubai.kubai[i] = kubas būdu grafinėje sąsajoje priešais naudotojo
end avatarą sukuriami 4 kubų eilė.
sfera = zone:createSphere() Sukuriamos 2 sferų objektai
<...>
sfera2 = zone:createSphere()

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

Skripto vykdymo VL kliento skriptų redaktoriuje rezultatai pateikiami žemiau (žr. 34


pav.). Įvykdžius skriptą, sukurta 4 kubų eilutė, bet 2 sferos. Paspaudus žymekliu ant kiekvienos
iš jų, kubai persirikiuodavo pirmąjį kubą perkeliant į eilės galą ir atvirkščiai – paskutinįjį kubą
iškeliant į eilės priekį. Toks modelis panaudojant VL geometrinius primityvus leido atskirti
bendrą skaidrių stendo funkcionalumą nuo sudėtingesnių grafinių elementų kūrimo ir
pozicionavimo užduočių.

34 pav. „RikiuojamiKubai.lua“ skripto vykdymas

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ė).

13 lentelė. Skripto „Skaidres.lua dalių paaiškinimai


Skripto dalies tekstas Paaiškinimas
pagrindas = Sukuriami stendo pagrindo ir navigacinių
zone:createMesh("pagrindas.mesh")
mygtukų objektai.
rodykle1 =
zone:createMesh("rodykle1.mesh")
rodykle2 =
zone:createMesh("rodykle2.mesh")
pagrindas.setScale(2.2) Atliekamos objektų dydžio koregavimas:
rodykle1:setScale(0.5)
padidinamas pagrindas bei sumažinamos
rodykle2:setScale(0.5)
rodyklės.
skaidres = zone:createDummy() Sukuriamas skaidrių masyvas
skaidres.skaidre = {}
skaidre1 = Sukuriami grafiniai skaidrių objektai.
zone:createMesh("slide1.mesh")
Kiekvienas objektas išsaugomas masyve.
skaidres.skaidre[1] = skaidre1
<...>
skaidres.skaidre[4] = skaidre4
atskaitosPozicija = Vector3(0,2.5,0) Nustatoma stendo kūrimo atskaitos pozicija,
avataras = client:getAvatar()
kurios atžvilgiu formuojamos grafinių stendo
avataras.setPosition(avataras,
elementų pozicijos. Naudotojo avataras taip pat
atskaitosPozicija + Vector3
(-2,20,0)) perkeliamas virš stendo. Tokiu būdu įvykdžius
skriptą, naudotojo valdomas avataras iškart
atsiduria ant stendo pagrindo platformos.
pagrindas:setPosition(atskaitosPozicij Objektų pozicijų nustatymai.
a + Vector3(6.5,-0.2,0))
<...>
skaidre4:setPosition
(atskaitosPozicija + Vector3(1,2,3))
rodykle2.onMousePress = Paspaudus ant rodyklių atliekamas skaidrių
function(self, e)
pozicijų rikiavimo algoritmas.
<...>
end

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.).

35 pav. „Skaidres.lua“ skripto bandomosios versijos vykdymas

36 pav. „Skaidres.lua“ skriptui reikalingų grafinių objektų kūrimas ir eksportavimas į VL

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.

37 pav. „Skaidres.lua“ skripto vykdymas

46
REZULTATAI IR IŠVADOS

Atlikus MMORPG žaidimo L2 etnografinę analizę, išnagrinėta žaidimo aplinka, grafinės


naudotojo sąsajos elementai, apžvelgtas naudotojų apmokymo procesas žaidimo pradžioje.
Išskirti naudotojų poreikiai, skatinantys dalyvauti virtualiuose trimačiuose pasauliuose.
Padaryta išvada, jog vieni pagrindinių veiksnių, motyvuojančių naudotojus dalyvauti tokių
aplinkų veiklose yra: estetinis patrauklumas, neribotas funkcionalumas, intuityvi naudotojo
sąsaja, kompleksinių emocijų patyrimas ir pasitenkinimas. Naudotojams taip pat svarbūs ir
socialiniai bei saviraiškos poreikiai.
Taip pat išnagrinėta ir VL platforma: bendri mechanizmai, grafinės naudotojo sąsajos
elementai, užregistruotos prototipe aptiktos klaidos ir nesklandumai. Panaudojant pavyzdžius ir
papildomą literatūrą, aprašytos trimačių objektų naudojimo galimybės, pateiktos detalios
instrukcijos, kaip panaudojant įvairią trimačio turinio kūrimo programinę įrangą, eksportuoti
trimačius grafinius modelius į VL aplinką. Panaudojant „Autodesk 3ds Max“ trimačio turinio
kūrimo studiją, sėkmingai pavyko sukurti demonstraciniam objektui reikalingus modelius.
Darbe glaustai aprašytas ir VL-Lua skriptų kūrimas. Detaliai paaiškinami sukurtų skriptų
tekstai, pateikiami jų vykdymo rezultatai bei demonstracinio mokymo objekto sprendimo idėja.
Pritaikius trimačių objektų kūrimo ir eksportavimo žinias, paruoštas primityvus demonstracinis
mokymo objektas – interaktyvus skaidrių peržiūros stendas.
Padaryta išvada, jog darbe naudojamos VL prototipo versijos negalima lyginti su išbaigta
L2 aplinka. VL projektas dar tik konstravimo fazėje, sudėtingesnių mokymo objektų
realizavimui trūksta detalesnės dokumentacijos. Realizuota ir tik dalis VL-Lua skriptų kalbos
funkcijų, todėl ypač sudėtinga išgauti pageidaujamą funkcionalumą. Didelę laiko dalį užėmė
reikalingų funkcijų ar jų alternatyvų paieškos, kas ir nulėmė sukurto mokymo objekto
paprastumą.
Nepaisant iškilusių keblumų realizuojant mokymo objektą, galima įžvelgti VL kaip
saugios, trimatės virtualiojo pasaulio aplinkos, orientuotos į patikimumą ir bendradarbiavimą
viziją, kurioje patenkinami naudotojams svarbūs socialiniai ir saviraiškos poreikiai.

47
ŠALTINIAI

[Bis09] Jonathan Bishop. Enhancing the understanding of genres of web-based


communities: The role of the ecological cognition framework. International
Journal of Web-Based Communities, 2009. [žiūrėta 2011-05-15]
Prieiga per internetą:
http://www.jonathanbishop.com/Library/Documents/EN/docOCPaper_IJWBC.pdf
[Coo09] Ann D Cook. A case study of the manifestations and significance of social
presence in a multi-user virtual environment, 2009. [žiūrėta 2011-05-15]
Prieiga per internetą:
http://library2.usask.ca/theses/available/etd-09102009-
012757/unrestricted/ann_cook_thesis_edt_submission_2.pdf
[Kat04] George Katsionis. A cognitive theory for affective user modelling in a virtual
reality educational game, 2004. [žiūrėta 2011-04-15]
Prieiga per internetą:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.1.5804&rep=rep1&type
=pdf
[Lof05] Tom Loftus. Bringing emotions to video games, , 2005. [žiūrėta 2011-04-15]
Prieiga per internetą:
http://www.msnbc.msn.com/id/4038606/
[Rei05] R.Reimann. Personas, Goals, and Emotional Design. [žiūrėta 2011-04-15]
Prieiga per internetą:
http://www.uxmatters.com/mt/archives/2005/11/personas-goals-and-emotional-
design.php
[SLT] Social Learning Theory (Bandura). [žiūrėta 2011-05-10]
Prieiga per internetą:
http://www.learning-theories.com/social-learning-theory-bandura.html
[WIS] What is a Virtual World? [žiūrėta 2011-05-10]
Prieiga per internetą:
http://www.virtualworldsreview.com/info/whatis.shtml

48
SĄVOKŲ APIBRĖŽIMAI

MMO (angl. massively multiplayer online game) – internetinis žaidimas, įgalinantis


šimtus ar tūkstančius žaidėjų žaisti vienu metu.
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.
Maginė fantastika (angl. fantasy) – viena iš fantastikos (t. y. literatūros, kino, žaidimų,
muzikos, dailės ir kt.) atmainų. Magine fantastika siekiama sukurti savitą kūrinio erdvę, vidinę
sistemą, kurioje vyksta
Naudotojo sąsaja (interfeisas) – tam tikras bendravimo susitarimas tarp dviejų
programinių ar aparatinių komponentų.
P2P (angl. peer–to–peer) – tinklo modelis, kuriame naudojai, naudodami ta pačią ar to
paties tipo PĮ resursais keičiasi tiesiogiai tarpusavyje.

49
SANTRUMPOS

APS Aplikacijų programavimo sąsaja


VL VirtualLife
VRE Virtual Reality Engine – virtualios realybės variklis
MMO Massively Multiplayer Online Game
MMORPG Massive Multiplayer Online Role–Playing Game
PKI Public Key Infrastructure
CA Certification Authority – sertifikavimo institucija
VN Virtual Nation – virtuali nacija
VZ Virtual Zone – virtuali zona
VC Virtual Client – virtualus klientas
ODRS Online Dispute Resolution System
GUI Graphical User Interface

50
PRIEDAI

1 priedas. VL kliento naudotojo sąsajos elementai

38 pav. Du naudotojų avatarai

39 pav. Kontekstinis avataro meniu

40 pav. Kontekstinis objekto meniu

41 pav. Meniu juosta

51
42 pav. Paieškos langas

43 pav. Pokalbių langas

44 pav. Inventoriaus langas

52
45 pav. Avataro išvaizdos redaktorius

46 pav. Objektų redaktoriaus langai (grafika, informacija, teisės ir skriptai)

47 pav. Draugų sąrašas

48 pav. Informacinis pranešimas apie kito naudotojo prašymą įtraukti jį į draugų sąrašą

53
49 pav. Kontraktų sąrašas

50 pav. Sukurtas ginčas

54
51 pav. Ginčo priėmimas / atmetimas

52 pav. Informacinis pranešimas apie naudotojo atsakymą į ginčo ieškinį

53 pav. El. balsavimo langas

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)
}

--Nunuliname pradines 4 objektu pozicijas


for i=1,4 do
pozicijos[i] = Vector3(0,0,0)
end

--Apskaiciuojame pradines 4 objektu pozicijas


pozicijos[1] = here() + Vector3(-5,0,0)

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)

-------------------- Objektu perkelimas i prieki ------------------------

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]

--Perkeliame objektus pagal atnaujintas pozicijas


for i=1,4 do
keturiKubai.kubai[i]:setPosition(pozicijos[i])
end

58
end

----------------------- Objektu perkelimas atgal ------------------------

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]

--Perkeliame objektus pagal atnaujintas pozicijas


for i=1,4 do
keturiKubai.kubai[i]:setPosition(pozicijos[i])
end

end

59
4 priedas. „Skaidres.lua“ skripto tekstas

-- skaidres.lua
-- Justas Klikna, MIF PS IV kursas 3 gr.
----------------------------------------------------------------------

---- Demonstracinio pagrindo ir navigaciniu nuorodu sukurimas ----

--Pagrindo plokstes sukurimas


pagrindas = zone:createMesh("pagrindas.mesh")
pagrindas.setScale(2.2)

--Navigaciniu rodukliu sukurimas


rodykle1 = zone:createMesh("rodykle1.mesh")
rodykle2 = zone:createMesh("rodykle2.mesh")
rodykle1:setScale(0.5) --sumazinamas rodykles dydis
rodykle2:setScale(0.5)

----------------------- Skaidriu sukurimas -----------------------

skaidres = zone:createDummy()
skaidres.skaidre = {} --isskiriamas skaidriu masyvas

--1 skaidres sukurimas ir priskyrimas i masyva


skaidre1 = zone:createMesh("slide1.mesh")
skaidres.skaidre[1] = skaidre1

--2 skaidres sukurimas ir priskyrimas i masyva


skaidre2 = zone:createMesh("slide2.mesh")
skaidres.skaidre[2] = skaidre2

--3 skaidres sukurimas ir priskyrimas i masyva


skaidre3 = zone:createMesh("slide3.mesh")
skaidres.skaidre[3] = skaidre3

--4 skaidres sukurimas ir priskyrimas i masyva


skaidre4 = zone:createMesh("slide4.mesh")
skaidres.skaidre[4] = skaidre4

-------------- Pradiniu objektu poziciju nustatymas --------------

pozicijos = {} --skaidriu poziciju masyvas


naujosPozicijos = {} --naujai apskaiciuojamu poziciju masyvas

--Pradiniu koordinaciu nustatymas


atskaitosPozicija = Vector3(0,2.5,0)

--Avataro perkelimas
avataras = client:getAvatar()
avataras.setPosition(avataras,atskaitosPozicija + Vector3(-2,20,0))

--Nustatomos pradines objektų pozicijos


pagrindas:setPosition(atskaitosPozicija + Vector3(6.5,-0.2,0))
rodykle1:setPosition (pagrindas:getPosition() + Vector3(-7,0.3,2.4))
rodykle2:setPosition (pagrindas:getPosition() + Vector3(-7,0.3,-0.4))

skaidre1:setPosition (atskaitosPozicija + Vector3(0,2,0))


skaidre2:setPosition (atskaitosPozicija + Vector3(1,2,-3))
skaidre3:setPosition (atskaitosPozicija + Vector3(1.6,2,0))
skaidre4:setPosition (atskaitosPozicija + Vector3(1,2,3))

--Nunulinamos pradines skaidriu pozicijos


for i=1,4 do

60
pozicijos[i] = Vector3(0,0,0)
end

-------------------- Objektu perkelimas i prieki ------------------------

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]

--Perkeliame objektus pagal atnaujintas pozicijas


for i=1,4 do
skaidres.skaidre[i]:setPosition(pozicijos[i])
end

end

---------------------- Objektu perkelimas atgal ------------------------

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]

--Perkeliame objektus pagal atnaujintas pozicijas


for i=1,4 do
skaidres.skaidre[i]:setPosition(pozicijos[i])
end

end

61
5 priedas. „Skaidres.lua“ skripto paleidimo instrukcija

1. Archyvo skaidres.zip turinį (žr. 6255 pav.) išarchyvuoti VL duomenų resursų


direktorijoje, pvz. „C:\Program Files (x86)\VirtualLife2\data\resources“

55 pav. Katalogo turinys

2. Paleisti VL klientą26 ir pasirinkti „Skip to world!“


3. Jei gaunamas klaidos pranešimas, patikrinti ar neegzistuoja resursų duomenys tuo
pačiu vardu. Konfliktuojančius duomenis iškelti iš VL katalogų ir pabandyti įvykdyti
2 žingsnį. Taip pat rekomenduojama ištrinti visas „.db“ tipo rinkmenas duomenų
kataloge (žr. 56 pav.), pvz. „VirtualLifeClient002.db“ (kliento paleidimo metu,
rinkmenos bus sugeneruotos iš naujo).

56 pav. Failo trynimo patvirtinimo langas

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.).

57 pav. Aplinkos pasirinkimas

6. Įjungti skriptų redaktorių (meniu punktas „Script“ > „Script Editor“).


7. Pasirinkti „File“ > „Load“ ir iššokusiame lange nueiti į 1 žingsnyje įkeltą katalogo
direktoriją (pvz., „C:\Program Files (x86)\VirtualLife2\data\resources\skaidres“).
Pažymėjus rinkmeną „skaidres.lua“, spausti „Open“.
8. Paleisti skriptą („Script“ > „Run“).
Sėkmingai įvykdžius aukščiau aprašytą žingsnių seką, ekrane turėtų būti sukurtas skaidrių
demonstravimo objektas (avataras automatiškai perkeliamas prie objekto).

58 pav. Skaidrių demonstravimo objektas

63

You might also like