Jump to content

  • Log in with Facebook Log in with Twitter Log In with Google      Sign In   
  • Create Account

Welcome to BZPower!

Hi there, while we hope you enjoy browsing through the site, there's a lot more you can do if you register. The process is easy and you can use your Google, Facebook, or Twitter account to make it even faster. Some perks of joining include:
  • Create your own topics, participate in existing discussions, and vote in polls
  • Show off your creations, stories, art, music, and movies and play member and staff-run games
  • Enter contests to win free LEGO sets and other prizes, and vote to decide the winners
  • Participate in raffles, including exclusive raffles for new members, and win free LEGO sets
  • Send private messages to other members
  • Organize with other members to attend or send your MOCs to LEGO fan events all over the world
  • Much, much more!
Enjoy your visit!


Photo

How to navigate the Drifts in MNOLG II

Drifts MNOLG Wastes

  • Please log in to reply
6 replies to this topic

#1 Offline Makuta Luroka

Makuta Luroka
  • Members
  • Encountering Protodermis

  • 839 posts
  •  

Posted Mar 21 2014 - 11:48 PM

My question here is pretty straight forward. Man, 2001-2003 LEGO really loved those nintendo-hard randomization mazes. I was wondering if there is a specific way you could determine your way through the drifts, because it seems to me that it is endless. I have no idea even how many "rooms" there are in it or what any of the mechanics are, other than that if you keep going straight, you will eventually find either Kantai's hut, the Temple of Peace, or the cliff. In my current instance of the game, Hahli enters from the northern edge of the first room. Heading west leads to the cliff. Heading straight from the first room, continuing in the direction Hahli faces for each room she enters leads to Kantai's hut, after 11 rooms. That is all I know.


  • 0

--:m::a::k::u::t::a: :l::u::r::m_o::k::a:

card_newmat.png
biofighter_banner_platform.png

 

OOC: So now we get to fight in a burning magnetic cyberspace castle, above a tsunami filled with magnetic flying explosive sharks, where bricks and sharks are being magnetically flung around the room, two people are hugging/tickle-dancing, one person has had his chest explode, and the rules of time and space have completely forgotten that they are supposed to exist. This round is awesome.


#2 Offline Gatanui

Gatanui
  • Reporters
  • Senior News Finder

  • 10,917 posts
  •   BZP Reporter

Posted Mar 22 2014 - 06:55 AM

Last time I played it, I tried to figure it out and played. I did find some patterns by which I reached certain destinations, but the exit was not among them. :P I think it's totally different each time but I don't know by which logic the maze is generated. May be worth a look at the source code.

-Gata signoff.png

  • 0
Please don't use my avatar without permission, thanks ^_^

#3 Offline The Malicious Phantom

The Malicious Phantom
  • Members
  • Submerged!

  • 1,173 posts
  •  

Posted Mar 22 2014 - 08:08 AM

If you don't want to get lost, just use the flags. It's so much easier in the long run, although gathering the materials may take a little time. But make sure you have a large supply of them, because the snow constantly falls and covers them up. Gosh, LEGO really did have it out for us when we said MNOG I was too easy...


  • 0

#4 Offline Gatanui

Gatanui
  • Reporters
  • Senior News Finder

  • 10,917 posts
  •   BZP Reporter

Posted Mar 22 2014 - 08:24 AM

If you don't want to get lost, just use the flags. It's so much easier in the long run, although gathering the materials may take a little time. But make sure you have a large supply of them, because the snow constantly falls and covers them up. Gosh, LEGO really did have it out for us when we said MNOG I was too easy...

From my experience, the flags are basically useless as they disappear too fast.

-Gata signoff.png

  • 0
Please don't use my avatar without permission, thanks ^_^

#5 Offline Makuta Luroka

Makuta Luroka
  • Members
  • Encountering Protodermis

  • 839 posts
  •  

Posted Mar 22 2014 - 12:38 PM

 

If you don't want to get lost, just use the flags. It's so much easier in the long run, although gathering the materials may take a little time. But make sure you have a large supply of them, because the snow constantly falls and covers them up. Gosh, LEGO really did have it out for us when we said MNOG I was too easy...

From my experience, the flags are basically useless as they disappear too fast.

-Gata signoff.png

 

I hate that the flags disappear so quickly. Makes it even more nintendo hard. I'm never gonna get the crystal of peace.


  • 0

--:m::a::k::u::t::a: :l::u::r::m_o::k::a:

card_newmat.png
biofighter_banner_platform.png

 

OOC: So now we get to fight in a burning magnetic cyberspace castle, above a tsunami filled with magnetic flying explosive sharks, where bricks and sharks are being magnetically flung around the room, two people are hugging/tickle-dancing, one person has had his chest explode, and the rules of time and space have completely forgotten that they are supposed to exist. This round is awesome.


#6 Offline XONAR

XONAR
  • Premier Member
    BioniLUG Member
  • Premier Members
  • Encountering Protodermis

  • 838 posts
  •  

Posted Mar 22 2014 - 02:17 PM

I just aimlessly trek through the Drifts until I end up at either the hermit's house or the Temple of Peace. You'll get there eventually if you keep at it for long enough. :P I tried using flags once, but they weren't much help at all.

 

It'd be pretty hilarious to see BZP do a playthrough of MNOLG II and get stuck in the Drifts...


  • 0
-XONARsig.png
 
mnolg_dvd_bzp_banner_2.jpg
 
Feel free to add this banner to your sig!
 





#7 Offline JrMasterModelBuilder

JrMasterModelBuilder
  • Outstanding BZPower Citizens
  • Descending into Protodermis

  • 990 posts
  •   Outstanding BZPower Citizen

Posted Mar 22 2014 - 05:37 PM

Here is the function resposible for creating the maze. Yes, it is randomly generated, though the scenes as consistently linked. I haven't tried to reverse-engineer the logic, but it appears that KantaisEntrance is set to the furthest link from the entrance, and KokoroRuinsApproach and KokoroWastesDeadEnd and positioned next to each other in a ramdon location somewhere in the maze.

function createMaze()
{
    connectionsList = [];
    var i = 1;
    while (i < 10)
    {
        connectionsList.push({name: "Scene" + i, direction: "north", link: ""});
        connectionsList.push({name: "Scene" + i, direction: "south", link: ""});
        connectionsList.push({name: "Scene" + i, direction: "east", link: ""});
        connectionsList.push({name: "Scene" + i, direction: "west", link: ""});
        ++i;
    }
    finalResults = [];
    startNode = connectionsList[random(connectionsList.length)];
    startNode.link = {name: "KokoroWastesEntrance"};
    var j = 0;
    while (j < connectionsList.length)
    {
        if (0 != (connectionsList[j].name == startNode.name) & 0 != (connectionsList[j].direction == startNode.direction))
        {
            connectionsList.splice(j, 1);
            --j;
            break;
        }
        ++j;
    }
    finalResults.push(startNode);
    var picking = 1;
    while (picking == 1)
    {
        fromNode = connectionsList[random(connectionsList.length)];
        if (fromNode.name == startNode.name)
        {
            picking = 0;
        }
    }
    safetyCount = 0;
    while (connectionsList.length > 1)
    {
        var toNode = connectionsList[random(connectionsList.length)];
        ++safetyCount;
        if (0 != safetyCount > 10 & 0 != (0 != (toNode.name != fromNode.name) | 0 != (toNode.direction != fromNode.direction)))
        {
            safetyCheck = 1;
        }
        else
        {
            safetyCheck = 0;
        }
        if (0 != (toNode.name != fromNode.name) | 0 != (safetyCheck == 1))
        {
            safetyCount = 0;
            fromNode.link = toNode;
            toNode.link = fromNode;
            finalResults.push(fromNode);
            finalResults.push(toNode);
            var j = 0;
            while (j < connectionsList.length)
            {
                if (0 != (connectionsList[j].name == fromNode.name) & 0 != (connectionsList[j].direction == fromNode.direction))
                {
                    connectionsList.splice(j, 1);
                    --j;
                }
                else if (0 != (connectionsList[j].name == toNode.name) & 0 != (connectionsList[j].direction == toNode.direction))
                {
                    connectionsList.splice(j, 1);
                    --j;
                }
                ++j;
            }
            var picking = 1;
            while (picking == 1)
            {
                fromNode = connectionsList[random(connectionsList.length)];
                if (fromNode.name == toNode.name)
                {
                    picking = 0;
                }
            }
        }
    }
    lastNode = connectionsList[0];
    lastNode.link = {name: "KantaisEntrance"};
    finalResults.push(lastNode);
    selectingNode = 1;
    while (selectingNode == 1)
    {
        secondExitNode = finalResults[random(finalResults.length)];
        if (0 != (secondExitNode.link != "start") & 0 != (secondExitNode.link != "exit"))
        {
            selectingNode = 0;
            thirdExitNode = secondExitNode.link;
            secondExitNode.link = {name: "KokoroRuinsApproach"};
            thirdExitNode.link = {name: "KokoroWastesDeadEnd"};
        }
    }
    _root.KokoroWastesMaze = finalResults;
    _root.KokoroWastesFlags = [];
}

 
Since the code is mostly JavaScript compliant, here is a JavaScript copy you can use to use if you want to analyze what it's doing, but basically it's creating a bunch of scenes, and asigning links between them:
 

_root = {};
function random(max)
{
    return Math.floor(Math.random()*max)
}

function createMaze()
{
    connectionsList = [];
    var i = 1;
    while (i < 10)
    {
        connectionsList.push({name: "Scene" + i, direction: "north", link: ""});
        connectionsList.push({name: "Scene" + i, direction: "south", link: ""});
        connectionsList.push({name: "Scene" + i, direction: "east", link: ""});
        connectionsList.push({name: "Scene" + i, direction: "west", link: ""});
        ++i;
    }
    finalResults = [];
    startNode = connectionsList[random(connectionsList.length)];
    startNode.link = {name: "KokoroWastesEntrance"};
    var j = 0;
    while (j < connectionsList.length)
    {
        if (0 != (connectionsList[j].name == startNode.name) & 0 != (connectionsList[j].direction == startNode.direction))
        {
            connectionsList.splice(j, 1);
            --j;
            break;
        }
        ++j;
    }
    finalResults.push(startNode);
    var picking = 1;
    while (picking == 1)
    {
        fromNode = connectionsList[random(connectionsList.length)];
        if (fromNode.name == startNode.name)
        {
            picking = 0;
        }
    }
    safetyCount = 0;
    while (connectionsList.length > 1)
    {
        var toNode = connectionsList[random(connectionsList.length)];
        ++safetyCount;
        if (0 != safetyCount > 10 & 0 != (0 != (toNode.name != fromNode.name) | 0 != (toNode.direction != fromNode.direction)))
        {
            safetyCheck = 1;
        }
        else
        {
            safetyCheck = 0;
        }
        if (0 != (toNode.name != fromNode.name) | 0 != (safetyCheck == 1))
        {
            safetyCount = 0;
            fromNode.link = toNode;
            toNode.link = fromNode;
            finalResults.push(fromNode);
            finalResults.push(toNode);
            var j = 0;
            while (j < connectionsList.length)
            {
                if (0 != (connectionsList[j].name == fromNode.name) & 0 != (connectionsList[j].direction == fromNode.direction))
                {
                    connectionsList.splice(j, 1);
                    --j;
                }
                else if (0 != (connectionsList[j].name == toNode.name) & 0 != (connectionsList[j].direction == toNode.direction))
                {
                    connectionsList.splice(j, 1);
                    --j;
                }
                ++j;
            }
            var picking = 1;
            while (picking == 1)
            {
                fromNode = connectionsList[random(connectionsList.length)];
                if (fromNode.name == toNode.name)
                {
                    picking = 0;
                }
            }
        }
    }
    lastNode = connectionsList[0];
    lastNode.link = {name: "KantaisEntrance"};
    finalResults.push(lastNode);
    selectingNode = 1;
    while (selectingNode == 1)
    {
        secondExitNode = finalResults[random(finalResults.length)];
        if (0 != (secondExitNode.link != "start") & 0 != (secondExitNode.link != "exit"))
        {
            selectingNode = 0;
            thirdExitNode = secondExitNode.link;
            secondExitNode.link = {name: "KokoroRuinsApproach"};
            thirdExitNode.link = {name: "KokoroWastesDeadEnd"};
        }
    }
    _root.KokoroWastesMaze = finalResults;
    _root.KokoroWastesFlags = [];
}
createMaze();
for(var o, i = -1; o = _root.KokoroWastesMaze[++i];)
{
console.dir(o);
}

Edited by JrMasterModelBuilder, Mar 22 2014 - 05:55 PM.

  • 1

banner.png
{ If you have BIONICLE: The Legend of Mata Nui, PM me . . . NOW! }
I'm well over the age of 13, so if you work for LEGO, you can talk to me. :)





0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users