Treasure hunt scripts

 

This is the script for a wearable hud that works with other game features as well. For this example we will use it just to collect tokens for finding gems. You would put this in a wearable object like jewelry,  a badge or a hat etc.

// The actual HUD //
// ——————————————–
// ——————————————–
// declare / define global variables //

integer pCoins = 0;
integer pGems = 0;
integer pScore = 0;
string vhCustomTitle = “Tresure Hunt”;
string vhTitleOffset = ” \n \nThanks for trying the Game Kit.\nBegin by collecting gem.”;
string vhMessageLine = “\n \n “;
string vhCoinString = “”;
string vhGemString = “”;
string vhScoreString = “”;
integer vhAccessCost = 0;
list pPuzzleList = [];
integer pHUDworn = 0;
string gsCardOneName = “config”;
string g_sNoteCardName;
list gOneCard;
list g_lTempLines;
integer g_iLine;
key g_kQuery;

initialize(string _action) {
if (_action == “”) {
loadNoteCard(gsCardOneName);
} else if (_action == “finish”) {
integer i;
for (i = 0; i< 7; ++i)
{
string tLineText = llList2String(gOneCard,i);
if (i == 0)
{
vhAccessCost = (integer)right(tLineText,”:”);
}
if (i == 1)
{
vhCustomTitle = right(tLineText,”:”);
vhCustomTitle = vhCustomTitle + “\n “;
}
if (i == 2)
{
vhTitleOffset = right(tLineText,”:”);
vhTitleOffset = vhTitleOffset + “\n \n “;
}
llListen(999,””, “”,””);
//llListen(reset_channel, “”, “”, “”); // RESET channel

}
}
}

loadNoteCard( string _notecard ) {
g_lTempLines = [];
g_sNoteCardName = _notecard;
g_iLine = 0;
g_kQuery = llGetNotecardLine(g_sNoteCardName, g_iLine);

}

notecardFinished(string _notecard){
if (_notecard == gsCardOneName) {
gOneCard = g_lTempLines;
initialize(“finish”);
}
}

// ——————————————–
// ——————————————–
// define global custom functions //
// these are from the lsl tutorials //

string left(string src, string divider) {
//llSubStringIndex
// find the first appearance of the divider
integer indexLF1 = llSubStringIndex( src, divider );
if(~indexLF1)
// check to see that the appearance falls in a positive number position
//string llDeleteSubString(string src, integer start, integer end)
// remove all of the text that falls to the right of the first divider
return llDeleteSubString( src, indexLF1 + llStringLength(divider)-1, -1);
return src;

}

string right(string src, string divider) {
integer index = llSubStringIndex( src, divider );
string tString = “”;
if (~index)
{
// this fetches the string to the right of the first marker
tString = llDeleteSubString( src, 0, index + llStringLength(divider) – 1);
//llSay(0,”whats left ” + src);
// now we need to get the right half of that
integer indexSR1 = llSubStringIndex(tString, divider);
if (~indexSR1)
{
// here’s the far right side of a 3 part list
tString = llDeleteSubString(tString, 0, indexSR1 + llStringLength(divider) – 1);
}
}
return tString;
}

string center(string src, string divider) {
integer index = llSubStringIndex( src, divider );
string tString2 = “”;
if(~index)
{
tString2 = llDeleteSubString( src, 0, index + llStringLength(divider) – 1);
integer indexC1 = llSubStringIndex(tString2, divider);
if (~indexC1)
{
return llDeleteSubString( tString2, indexC1 + llStringLength(divider)-1, -1);
}
}
return tString2;
}

default
{
on_rez(integer start_param)
{

if (llGetAttached() > 30)
{
pHUDworn = 1;
initialize(“”);
llSetText(vhCustomTitle + vhTitleOffset + “\n \n “, <0,0,0>, 1);
}else{
llSetText(“”, <0,0,0>, 1);
llSay(0, (string)llGetAttached());
}

}
state_entry()
{
initialize(“”);
integer messageInt = llListen(1717, “”, NULL_KEY, “” );
integer messageInt2 = llListen(1718, “”, NULL_KEY, “” );
integer messageInt3 = llListen(1719, “”, NULL_KEY, “”);
integer messageInt4 = llListen(1791, “”, NULL_KEY, “”);
integer messageInt5 = llListen(1616, “”, NULL_KEY, “”);
integer messageInt6 = llListen(2654, “”, NULL_KEY, “” );
vhCoinString = “\nTOKENS: “+(string)pCoins;
vhGemString = “\nPRIZES: “+(string)pGems;
pScore = pCoins * pGems;
vhScoreString = “\nPOINTS: “+(string)pScore;
}

touch_start(integer total_number)
{
// if they touch the scorekeeping object – readout the scores
vhCoinString = “\nTOKENS: “+(string)pCoins;
vhGemString = “\nPRIZES: “+(string)pGems;
pScore = pCoins * pGems;
vhScoreString = “\nPOINTS: “+(string)pScore;
if (pHUDworn == 1)
{
llSetText(vhCustomTitle+vhMessageLine+vhCoinString+vhGemString+vhScoreString, <0,0,0>, 1);
}else{
llInstantMessage(llGetOwner(),vhCustomTitle+vhMessageLine+vhCoinString+vhGemString+vhScoreString);
}
}

listen( integer channel, string name, key id, string message )
{
if (channel == 1717)
//llSay(0, (string)channel + ” ” + name + ” ” + (string)id + ” ” + message);
{
string mesR = right(message, “:”);
string mesL = left(message, “:”);
string mesC = center(message, “:”);
integer tValue = (integer)mesR; // convert the coin string to a number
//llSay(0, (string)llGetOwner());
//llSay(0, mesL);
if (mesL == (string)llGetOwner())

// this is the parse for hud owner messages only
{
//llSay(0, “LINE 110: ” +(string)tValue);
pCoins = pCoins + tValue;
// fix according to positive v negative values
vhCoinString = “\nTOKENS: “+(string)pCoins;
vhGemString = “\nPRIZES: “+(string)pGems;
pScore = pCoins * pGems;
vhScoreString = “\nPOINTS: “+(string)pScore;
if (pHUDworn == 1)
{
llSetText(vhCustomTitle+vhMessageLine+mesC+vhCoinString+vhGemString+vhScoreString, <0,0,0>, 1);
}else{
llInstantMessage(llGetOwner(), vhCustomTitle+vhMessageLine+mesC+vhCoinString+vhGemString+vhScoreString);
}
}
// llSay(0, (string)pCoins);
}

if (channel == 1718)
{
string mesR = right(message, “:”);
string mesL = left(message, “:”);
string mesC = center(message, “:”);
integer tValue = (integer)mesR; // convert the coin string to a number
//llSay(0, mesL);
//llSay(0, (string)llGetOwner());
if (mesL == (string)llGetOwner())
{
if (tValue > 0)
{
if (pCoins >= tValue)
{
//llSay(0, “LINE 132: ” +(string)tValue);
pCoins = pCoins – tValue;
}else{
pCoins = 0;
}
}
vhCoinString = “\nTOKENS: “+(string)pCoins;
vhGemString = “\nPRIZES: “+(string)pGems;
pScore = pCoins * pGems;
vhScoreString = “\nPOINTS: “+(string)pScore;

if (pHUDworn == 1)
{
llSetText(vhCustomTitle+vhMessageLine+mesC+vhCoinString+vhGemString+vhScoreString, <0,0,0>, 1);
}else{
llInstantMessage(llGetOwner(), vhCustomTitle+vhMessageLine+mesC+vhCoinString+vhGemString+vhScoreString);
}
}
}

if (channel ==1719)
{
if (message == (string)llGetOwner())
{

if (pCoins >= vhAccessCost)
{
pCoins = pCoins – vhAccessCost;
llSay(1720, “Y”);
vhCoinString = “\nTOKENS: “+(string)pCoins;
vhGemString = “\nPRIZES: “+(string)pGems;
pScore = pCoins * pGems;
vhScoreString = “\nPOINTS: “+(string)pScore;
if (pHUDworn == 1)
{
llSetText(vhCustomTitle+vhMessageLine+”You spent “+ (string)vhAccessCost+ ” tokens to use this object.” +vhCoinString+vhGemString+vhScoreString, <0,0,0>, 1);
}else{
llSay(0, vhCustomTitle+vhMessageLine+”You spent “+ (string)vhAccessCost+ ” tokens to use this object.” +vhCoinString+vhGemString+vhScoreString);
}
}else{
llSay(1720, “N”);
}
}
}

if (channel == 1791)
{
if (message == (string)llGetOwner())
{
// here we should add a list to hold which objects have been acquired. We can do it by storing a list of the
// puzzle boards that awarded gems – and simply ignoring repeat awards – (you could add a message to that effect as well.
list tTest = [id]; // the uuid of the puzzle board
integer foundIndex = llListFindList(pPuzzleList, tTest);
if (foundIndex == -1)
{
pGems = pGems+1;
list insertNameList = [id];
pPuzzleList = llListInsertList(pPuzzleList, insertNameList, 0);
vhCoinString = “\nTOKENS: “+(string)pCoins;
vhGemString = “\nPRIZES: “+(string)pGems;
pScore = pCoins * pGems;
vhScoreString = “\nPOINTS: “+(string)pScore;
if (pHUDworn == 1)
{
llSetText(vhCustomTitle+vhMessageLine+”You earned a prize.”+vhCoinString+vhGemString+vhScoreString, <0,0,0>, 1);
}else{
llInstantMessage(llGetOwner(), vhCustomTitle+vhMessageLine+”You earned a prize.”+vhCoinString+vhGemString+vhScoreString);
}
}else{
llInstantMessage(llGetOwner(), “You have already earned this prize.”);
}
}else{

//llSay(0, message);
key tKeyMes = (key)message;
list tTest = [tKeyMes];
//llSay(0, (string)pPuzzleList);
//llSay(0, (string)tTest);
integer foundIndex = llListFindList(pPuzzleList, tTest);
//llSay(0, (string)foundIndex);
llSay(3719, (string)foundIndex);
}

}
if (channel == 1616)
{
string whoCalled = right(message, “:”);
if (whoCalled == “board”)
{
llSay(1617, ((string)pCoins + “:” + (string)pGems));
}else{
llSay(1417, ((string)pCoins + “:” + (string)pGems));
}
}

if (channel == 2654)
{
llSay(2655, “ScorekeeperReply”);
}

}
dataserver(key _query_id, string _data)
{
if (_query_id == g_kQuery) {
if (_data != EOF) {
g_lTempLines += [_data];
g_iLine++;
g_kQuery = llGetNotecardLine(g_sNoteCardName, g_iLine);
} else {
notecardFinished(g_sNoteCardName);
}
}
}

}


 

This is the notecard you would include in the object as well. Title in config

 

// PAY BOARDS TO PLAY // :5
// HUD GAME TITLE // :Treasure Hunt Game
// INSTRUCTIONS // : Collect gems.


 

And now for the treasure token script put this inside any object you want to award tokens for finding.

 

string pCoinValue = “30”; // um, change the number to make it worth more or less
string pAcquireMessage = “Follow the gems.”; // change the text inside quotes to make it say something different
string CONTROLLER_ID = “A”;
float tAlpha = 0.8; // set this to 1.0 if you want your object to be fully opaque.
// for the adventurous, you could make a random list and choose different things to say
string gsCardOneName = “config”;
list gOneCard;
list g_lTempLines;
string g_sNoteCardName;
integer g_iLine;
string g_kQuery;
integer resetChannel = 3;
integer respawnDelay = 30;
string vhUseParticles = “TRUE”;
float vhTargetOmega = 0.3;

 

//—————– PRIVATE —————————–
string left(string src, string divider) {
integer index = llSubStringIndex( src, divider );
if(~index)
{
return llDeleteSubString( src, index + llStringLength(divider)-1, -1);
}
return src;
}

string right(string src, string divider) {
integer index = llSubStringIndex( src, divider );
string tString = “”;
if (~index)
{
return llDeleteSubString( src, 0, index + llStringLength(divider) – 1);
}
return tString;
}

initialize(string _action) {
if (_action == “”) {
//llSay(0, “1”);
loadNoteCard(gsCardOneName);
} else if (_action == “finish”) {
//llSay(0, “2”);
integer i;
for (i = 0; i< 7; ++i)
{
string tLineText = llList2String(gOneCard,i);
if (i == 0)
{
pCoinValue = right(tLineText,”:”);
}
if (i == 1)
{
pAcquireMessage = right(tLineText,”:”);
}
if (i == 2)
{
string tAlphaString = right(tLineText,”:”);
tAlpha = (float)tAlphaString;
}
if (i == 3)
{
string stresetChannel = right(tLineText, “:”);
resetChannel = (integer)stresetChannel;
integer lHandle5 = llListen(resetChannel, “”,””,””);
}
if (i == 4)
{
string stRespawnDelay = right(tLineText, “:”);
respawnDelay = (integer)stRespawnDelay;
//llSay(0, stRespawnDelay);
}
if (i == 5)
{
vhUseParticles = right(tLineText, “:”);
if (vhUseParticles == “TRUE”)
{
llMessageLinked( LINK_SET, TRUE, CONTROLLER_ID, NULL_KEY );
}else{
llMessageLinked( LINK_SET, FALSE, CONTROLLER_ID, NULL_KEY );
}
}
if (i == 6)
{
string stvhTargetOmega = right(tLineText, “:”);
vhTargetOmega = (float)stvhTargetOmega;
llTargetOmega(<0,0,vhTargetOmega>, 10, 10);
}
}
}
}

loadNoteCard( string _notecard ) {
g_lTempLines = [];
g_sNoteCardName = _notecard;
g_iLine = 0;
g_kQuery = llGetNotecardLine(g_sNoteCardName, g_iLine);
}

notecardFinished(string _notecard){
if (_notecard == gsCardOneName) {
gOneCard = g_lTempLines;
initialize(“finish”);
}
}
//——————————————–

 

default
{
state_entry()
//
{
initialize(“”);
// on stateChange do stuff
//integer lHandle5 = llListen(resetChannel, “”,””,””);
llSetLinkAlpha(LINK_SET, tAlpha, ALL_SIDES);
// set entire prim 100% visible.
//llTargetOmega(<0,0,vhTargetOmega>, 10, 10);
llSetStatus(STATUS_PHANTOM, TRUE);
llSetStatus(STATUS_ROTATE_Z, TRUE);
llTargetOmega(<0,0,vhTargetOmega>, 10, 10);
llVolumeDetect(TRUE);
}
touch_start(integer total_number)

{
float tAlpha = (llGetAlpha(ALL_SIDES/llGetNumberOfSides()));
//llSay(0,(string)tAlpha);
if (tAlpha>0.0)
{
//llInstantMessage(llDetectedKey(0), “You picked up a Spanish Doubloon!”);
// make it invisible
llSetAlpha(0.0, ALL_SIDES);llSetLinkAlpha(LINK_SET, 0.0, ALL_SIDES);
// set entire prim 100% invisible.
llSetStatus(STATUS_ROTATE_Z, FALSE);
llSetStatus(STATUS_PHANTOM, TRUE);
// make it non-physical
// start a timer
// make it reappear after n seconds (n=60)
if (respawnDelay > 0)
{
llSetTimerEvent(respawnDelay);
}
// send a message to the gatherer’s HUD to add 1 coin
llSay(1717, ((string) llDetectedKey(0) + “:” + pAcquireMessage + “:” + pCoinValue));
llMessageLinked( LINK_SET, FALSE, CONTROLLER_ID, NULL_KEY );
//llSay(0, ((string) llDetectedKey(0) + “:” + pAcquireMessage + “:” + pCoinValue));
// llSay(1717, ((string) llDetectedKey(0) + “: 100”)); // would also work now or any integer positive or negative for that matter.
}

}
collision_start(integer num_detected)
{
float tAlpha = (llGetAlpha(ALL_SIDES/llGetNumberOfSides()));
if (tAlpha>0.0)
{
//llInstantMessage(llDetectedKey(0), “You picked up a Spanish Doubloon!”);
// make it invisible
llSetLinkAlpha(LINK_SET, 0.0, ALL_SIDES);
// set entire prim 100% invisible.
llSetStatus(STATUS_ROTATE_Z, FALSE);
llSetStatus(STATUS_PHANTOM, TRUE);

if (respawnDelay > 0)
{
llSetTimerEvent(respawnDelay);
}
llSay(1717, ((string) llDetectedKey(0) + “:” + pAcquireMessage + “:” + pCoinValue));
llVolumeDetect(FALSE);

llMessageLinked( LINK_SET, FALSE, CONTROLLER_ID, NULL_KEY );
}
}
//////
listen(integer channel, string name, key id, string mes)
{

if (channel == resetChannel)
{
initialize(“”);
llSay(0, “Okay, I reset the token”);
llSetLinkAlpha(LINK_SET, 1.0, ALL_SIDES);
if (vhUseParticles == “TRUE”)
{
llMessageLinked( LINK_SET, TRUE, CONTROLLER_ID, NULL_KEY );
}else{
llMessageLinked( LINK_SET, FALSE, CONTROLLER_ID, NULL_KEY );
}
llSetStatus(STATUS_PHANTOM, TRUE);
llVolumeDetect(TRUE);
//llSetTimerEvent(0);

}
}
//////////

timer()
{
//llResetScript();
llSetLinkAlpha(LINK_SET, tAlpha, ALL_SIDES);
if (vhUseParticles == “TRUE”)
{
llMessageLinked( LINK_SET, TRUE, CONTROLLER_ID, NULL_KEY );
}else{
llMessageLinked( LINK_SET, FALSE, CONTROLLER_ID, NULL_KEY );
}
llVolumeDetect(TRUE);
llSetStatus(STATUS_PHANTOM, TRUE);
llSleep(1);
llSetTimerEvent(0);
}
dataserver(key _query_id, string _data)
{
if (_query_id == g_kQuery) {
if (_data != EOF) {
g_lTempLines += [_data];
g_iLine++;
g_kQuery = llGetNotecardLine(g_sNoteCardName, g_iLine);
} else {
notecardFinished(g_sNoteCardName);
}
}
}
}

 

———————————————————————————————————————————————————————————————————————————————————————————-and the notecard for the token is also titled config

How many credits is this token worth? :30
What message should this token say? :Nice find! These Gems will help you on your path.
How opaque is this token?(range is 0.0-1.0) :1.0
What channel number should be used for reset? :3
How many seconds delay before respawning? :30
The token should use particles? (TRUE or FALSE) :TRUE
Speed / direction of spin? (range -1.000 – 1.000) :0.0
// never delete a colon
// Spin speed can be set to 0.0 for no spin
// If you use a HUD, message length should not be longer than about 60 characters.
// resetting any value above is entirely optional.
// Set respawn delay to a negative integer to prevent respawning
// You can reset any token using the channel defined above (if for example you left it channel 3, type ‘/3 ‘ and enter

 

Who do you see

Who do you see when you look at me?
Do you see who I am and who I hope to be?
Who do you see when you look at me?
that you would condemn or hope to admire?
If you’re looking high, look lower.
If you’re looking low, look higher.
I am a child of anger...

 

Who do you see when you look at me?
Do you see who I am and who I hope to be?
Who do you see when you look at me?
that you would condemn or hope to admire?
If you’re looking high, look lower.
If you’re looking low, look higher.
I am a child of anger with a ones of her own,
A loving mother whose children adore.
Do you see a harlot, a disgrace to her home,
a devoted wife who could not be more?
Is that what you see when you look at me?
That you would condemn or you would admire?
If your looking high, look lower.
If your looking low, look higher.
Lazy in deed, even at play,
A loyal worker doing her best,
ashamed and alone, forgetting to pray,
A faithful Christian never at rest?
Whomever you see when you look at me,
do not condemn or hope to admire.
For all of who I am, it is all of me,
If you’re looking high, look lower.
If you’re looking low, look higher.

 

Multiverse Masters Moon Base Proof of concept

 

Slide Show Presented at the CUNY gaming conference in New York City via distance with the assistance of Professor Mark Lewis.

The Best Practices discussion will include an educational game-play prototype  and educator resources as well as content examples to demonstrate how socially-networked learning environments in a three dimensional virtual world and gamification in the virtual world can be beneficial for distance learners and education applications. The main focus for this paper will be a “Best Practices” discussion with a question and answer session in world. During live events technical issues are always a possibility. This is especially true with participants who have never interacted with the technology before. Back up systems can be put in place that allow for participation through other means. This could be a simultaneous meeting in Skype or zoom to combat any sound or access issues. Even live streaming on Youtube may be an option.

The short discussion on Best Practices can be proceeded or followed by individual exploration. The independent walk about will consist of game features and curriculum examples. Guidance may be provided through live in-world chat and voice if pre-scheduled. The participants will likely be educators who are exploring virtual worlds and looking for resources and best practices. Participants may enter the virtual world via a pre-made avatar through a virtual world viewer such as Firestorm or use their own avatar. They can also customize their avatar with freebies offered on site.The participants will need to have some experience in the virtual world and be comfortable with all basic movement and navigational tools.  For those who are not, resources will be made available to other virtual worlds designed with tutorials and tips on these functions.

Preparation for users who have never entered a virtual world is extensive. In a complete pilot program creating your own content to teach students how to use the technology and navigate the tool is ideal however lots of resources exist to help beginners learn how to navigate virtual worlds. Providing links and resources, even when created by others and giving the necessary credit is a viable option. An online resource to get started is the Virtual World Survival Guide (Marie, E. 2016) It is a course designed by another virtual world group. Also creating a support website and support documents or links to other support documents and websites created by third parties is beneficial in the preparation aspect of a a full pilot.  Even in considering an educator’s help guide, important information for educators were found in the actual kitely.com website under terms and conditions and privacy. Another important resource is the educators commons on OSGRID and social sites online by this and other groups. By making this information easily accessible within the learning environment I am reducing unnecessary duplication of resources.

The game design itself is very simple for teachers to implement with students of all ages. The goal is to have the student engage in the activities, be rewarded by tokens that can earn free objects in world, avoid obstacles and traps that will slow progress or remove tokens, and earn prizes or earn points by taking quizzes. Subject matter can be placed in-world in slideshows, text, displays, video and note-cards inside objects or spoken via voice files or text by NPCs. The tokens earned can then be redeemed to purchase special in world items, thus motivating the student to participate further. Added exploration, such as finding other freebies and surprises as you explore, (in the moon base example, finding aliens, avoiding spaceships etc), and interacting all add to the motivational factor.

Being supervised if the student is younger also aids in reducing the complexity of having to learn the tools. For the actual project and pilot, those choosing to participate with no prior virtual world experience will need to prepare in advance or be willing to have an online virtual meeting within the world to gain the one to one support needed for beginners and be directed to the vast resources available from other educators and world owners from around the OpenSim community.

Virtual worlds allow for  synchronous and asynchronous learning activities as demonstrated by Dr. Kay McLennon through the Educators Commons and the Open Simulator Community Conference (OSCC), which I hope to demonstrate in the Best Practices discussion by engaging with those who participate. The Best Practices discussion is a first step in the process when introducing the environment or its potential to educators. This can be done through voice or text and once the technological aspect is learned the participants can then explore independently.

The pilot is built in the virtual world using opensource objects not for commercial use and open source scripts not for commercial use. Also used is objects built from scratch by me, and a few objects built by a 9 year old. Objects built in the virtual word can be used for commercial use and even sold for virtual money to be used in the open sim community or actual money. For these purposes I have chosen to keep my creations CC (Creative Commons) BA (Attribution) NC (Non Commercial)SA (Share Alike) Discussing choices like this and educating the participants is an example of some of the topics that can be discussed in the Best Practices discussion. Prepared slide shows on various example topics can be placed in-world and used as needed depending on the participants interests.

The Space maze is a simple game where you enter a maze of moving stars, navigate to quizzes to win cool space themed prizes, stop along the way for a dance party, find aliens, avoid spaceships, take a 3d photo of yourself, and other surprises. At the end of the maze players will find space craft rides, obstacle courses and scavenger hunts for more aliens. The avatars used in game play are able to be customized and with the space theme you can win space suits and accessories to further customize your avatar. You can even become an alien or robot with other space themed avatars as prizes. These rewards can be won through short quizzes or trivia. An example of an adapted open source quiz/trivia script is provided. Video walk through of the area will also be provided for independent viewing. It can be visited online in Kitely as it is an open world by opening a compatible viewer and entering the world through the website https://www.kitely.com/virtual-world/Salie-Davis/Multiverse-Masters . Though the Space Math Maze and quiz boards are currently set up with math questions it can be tailored for general trivia or any subject matter, or just for fun.

The benefit of interactive virtual world learning is situated cognition, simply stated that knowing is not able to be separated from doing. One theory I connect this with is the concept and application of backwards design in education. Backwards design is goal driven learning, essentially project based learning where you have a final goal in mind. In backwards design you start with the end result, the goal, and then explain to the participants the steps they need to take to achieve this goal. This is in line with gamification and game-based learning and can be used as a motivational tool that will bring them a personal sense of achievement and deeper understanding of the value of knowledge in accomplishing a goal. Research has shown that “…games show higher learning gains than simulations…” (Merchant et al 2014).

Cognitive learning that is interdisciplinary and project based can also enhance the engagement of participants. “The assumption underlying the rapid rise in the use of desktop-based virtual reality technology in instruction is the unique affordance that it offers in enhancing learners’ cognitive skills” (Merchant et al (2014). Beyond simply teaching a subject, through immersion experiences applicable concepts are learned that deepen understanding. Students experience situated learning when they learn through actual application of skills to achieve the set goals. It is more than just having a full understanding of the material presented in the discussion; it also requires knowing the techniques needed to apply the concepts in their own designs. The reason project based learning is effective in the cognitive modeling process is that the learner is able to see the end goal and then through the process of and steps presented in order to create the project, the student comes to a cognitive understanding of how the knowledge learned is applied in a real world scenario. The reason this works is because each project can be tailored to the learning level of the audience in order to teach the learning standards required for their level.  With online virtual world customization, the benefit exists to tailor the world for specific participant needs.

During the event, the primary gauge of successful implementation will be the questions and answer session’s level of participation. This is observational evaluation by the presenter. After the event feedback or return visits from participants to explore the content discussed can be monitored and evaluated. The event can be recorded through the use of screencastomatic or Zoom with the permission of participants for individual evaluation of content effectiveness or sharing on social media to expand the reach of the content and goals. Contact information and follow up surveys can be provided to encourage self evaluation, for example asking the participant if they were able to apply the concepts and best practices discussed to their own projects. It is also possible to “poll” participants through messaging them via the kitely messaging system. Reaching out to participants for feedback will help determine if they were able to navigate the virtual world and find all the resources available when visiting before or after the discussion, and if the signage and NPC directions were adequately designed to guide participants to the different areas. Separate tracking monitors will show which areas of the virtual world is most visited. This will help determine if the majority of visitors prefer the educators resources, the gaming environment or the sandbox area. Three separate message devices, two drop boxes for “mail” and one for text message recording will allow for feedback from participants and also signify which areas attract the most participants.

The Best Practices discussion will serve as an overview for educators who have not yet considered the use of virtual worlds for educational games. The focus will be on expanding the participants knowledge to move beyond the concept of the virtual world as a simulated environment alone, into an interactive game-based space using scripting in objects and gaming concepts to engage students and encourage active learning. I will be using examples in virtual world game play that are designed to instruct the educator on possible uses of the virtual world environment to enrich the learning experience of students. This will incorporate educator resources, examples and game play prototypes. The goal will be to encouraging transactional discussion with a short overview and “Best Practices” and a question and answer session. Independent exploration of resources and the examples will be done before or after the Best Practices discussion at the participants leisure.

The virtual world environment is an under utilized resource by educators in the creation, exploration, and effective use of Game-Based Learning (GBL) in distance and education. The research has shown “… a significant gap between teachers’ perceptions of the importance of integrating technology and their classroom use of these skills.” (p.  111, Carver, 2016) The virtual world can be designed to be an immersive environment requiring movement and social interaction with the instructor and other participants to encourage active learning. The incorporation of games and gamification through prototype exploration and testing will demonstrate the benefit of incorporating game-based learning in higher education to engage students.  Game play in simulated environments encourage active learning in the three step phase of observation, doing and reflection and has proven to be more effective in knowledge retention. Game-based learning activities can create authentic experiences which have been proven to shorten the time requirement and increase the retention of material. Virtual worlds can be designed to create immersive and authentic environments in ways that commercial games can’t.

Educators have the ability to customize the game to better serve student needs. In addition avatar interaction in a three dimensional world increases the level of attentiveness and participant engagement.  Virtual worlds are identified as supporting collaborative learning and social interaction increases productive learning. Research overwhelmingly supports the benefits of learning in immersive virtual worlds for students of all ages. “The contemporary notion of learning environments recognizes that meaningful, active learning takes place in complex, multi-model environments in which the learner plays an active role in constructing knowledge” (p. 2, Dickey, 2010). Research shows that 3D virtual worlds supported “…exploration of identity, community and personal representation.” (p. 3 Dickey, 2010) In addition, though not fully immersive compared to virtual reality rooms and glasses, “… desktop-based 3D virtual environments … (are) shown to enhance learners’ engagement” (Merchant 2014).  “Research has indicated that technology can increase student motivation, attitude, engagement and self-confidence, while improving organization and study skills.” (p. 110, Carver, 2016)

Especially for distance learners in education, the virtual world environment offers a viable solution to facilitate and enhance active participation through game-based learning. The inexpensive solution that virtual environments offer educators is a concept that needs to be explored, understood by participants and then shared with colleagues.

References

Carver, L. B. (2016). Teacher Perception of Barriers and Benefits in K-12 Technology Usage. Turkish Online Journal Of Educational Technology – TOJET, 15(1), 110-116. Retrieved on April 15, 2017, from https://eric.ed.gov/?id=EJ1086185

Dickey, M. D. (2011). The pragmatics of virtual worlds for K-12 educators: investigating the affordances and constraints of Active Worlds and Second Life with K-12 in-service teachers. Educational Technology Research And Development, (1), 1.  Retrieved on Dec, 2017, from http://eds.a.ebscohost.com.library.esc.edu/eds/pdfviewer/pdfviewer?vid=2&sid=701fa5b8-b55b-4784-9597-e3a821c56084%40sessionmgr4009

McLennan, K.  founder of the Educators Commons. (2017). Help guide for educational virtual open source. OSgrid Wright Plaza. Retrieved on Dec, 2017 from and accessible through Virtual World Viewer at https://OSgrid/region/Wright%20Plaza/207/30/21

McLennan, K. , Opensimulator Conference (2017) Presentation and talk. Dec 10, 2017 at http://conference.opensimulator.org/2017/  Slides accessible at https://tulane.app.box.com/s/hev3iverk9zcs7jiooa5fcbhyet4pxoi

Marie, Evie, Virtual World Survival Guide, (2016) retrieved from, http://inspiration-island.com/educational-projects/virtual-world-survival-guide/

Merchant, Z., Goetz, E. T., Cifuentes, L., Keeney-Kennicutt, W., & Davis, T. J. (2014). Effectiveness of virtual reality-based instruction on students’ learning outcomes in K-12 and higher education: A meta-analysis. Computers & Education, 7029-40. doi:10.1016/j.compedu.2013.07.033. Retrieved on Dec, 2017, from http://resolver.ebscohost.com.library.esc.edu/openurl?sid=EBSCO%3aedselp&genre=article&issn=03601315&ISBN=&volume=70&issue=&date=20140101&spage=29&pages=29-40&title=Computers+&atitle=Effectiveness+of+virtual+reality-based+instruction+on+students%27+learning+outcomes+in+K-12+and+higher+education%3a+A+meta-analysis&aulast=Merchant%2c+Zahira&id=DOI%3a10.1016%2fj.compedu.2013.07.033&site=ftf-live

Game Play Example provided as an online resource.

The second presentation and live discussion segment.

 

 

 

Game theory, dynamics and elements for Minecraft analysis

Minecraft can be played on a console or a pc but for this version I used minecraft PE (pocket edition) and played it on a tablet. Minecraft has different modes which change the structure of the app. Creative mode is a simulation mode. Survival is a game mode and adventure is a developers mode that can be either simulation or game based. The important difference with adventure mode is that it protects the structure of the game from players purposefully or inadvertently destroying the build. Tne app features the ability for customization in building your own world, or computer generated builds and even the option for purchased elaborate builds. In creative mode the goal is to explore and build. In survival mode the goal is to survive, collect trophies and level up. In adventure mode specific games can be played that others have built or that you build yourself with command blocks and other tool features in the game.

The Game play aspect of minecraft in survival mode is very difficult. It doesn’t come with a tutorial, at least not in the PE version. Basically you play in creative and discover what all the tools do then when you enter survival you start from scratch and have to find and build everything you need to survive. The good thing is you re-spawn when you die. The bad thing is, unless you put your resources in a chest which you have to make or find, or buy mods and add-ons you lose everything you have gathered. I wasn’t very good at it.I like the different modes and levels because it is like scaffolding. Beginner uses creative, then you can adjust the level in creative from peaceful to easy to hard. Then you can go into survival and again you can adjust the level. You can also start with small worlds so you don’t get lost.

It also follows the Self Determination Theory in being able to customize your avatar, cause and effect of your actions and the ability to join others via the internet in game play. This last option I have not tried but I have watched my daughter play with her nephews on their gaming system in two person mode. There is Intrinsic Motivation in being able to create your own environment. This is what appealed to me the most, however when not in peaceful mode I was very upset when “creepers” blew up my creations- the creeps. Extrinsic Motivation is involved in survival mode because you can earn trophies that you can then display and if playing online others can see. Ther is no distributed learning per say in Minecraft. It can be developed and used for learning, in fact there is an educational publication, “Unofficial Minecraft Lab for Kids: Family-Friendly Projects for Exploring and Teaching Math, Science, History, and Culture Through Creative Building (Hands-On Family)” that offers plans for lessons designed by educators. It also explore gamification and game design. Yes it is on my Christmas list but I may not wait till Christmas.

Since the game doesn’t have a “how to guide built in it does improve a students Testing/Spaced Retrieval skills. Otherwise you have to buy books, watch other peoples videos they have made on youtube, search the internet or just learn by doing and exploring. It does have a set goal which is named in one of its modes, to survive. The rules are not as clear as to how you survive, maintain health and what goals you need to achieve to succeed at survival unless you invest in guides or are guided by other players. This cooperation aspect of the game is very popular among many players. I appreciate that you have choices to play independently, privately with a friend on a console or in a large social setting online as the game is adaptable to different preferences and needs.

The aspect of survival gives minecraft the escape theme but with the ability to develop games in adventure mode and work with other online players the race theme is also possible. This increases the opportunity for competition themed play. Collecting, acquiring, and allocating resources in minecraft survival mode is really the core of the game, from mining to farming, logging down trees and using all these resources gathered to build tools, homes and keep yourself alive is all part of the core of minecraft. There is Mystery and discovery in the villages and mansions and strongholds and temples that the game can randomly generate. Defined parameters, such as creatures spawning at night or in dark spaces, allow for strategy where you can predict outcomes, prepare and plan for timed events and allocate resources. The ability to create new and unique structures is what appeals to me most in the game. It is very visual based but to tell you the truth it took awhile for me to recognize the block colors and symbolism and I appreciated the text based descriptions.