Jump to content

Designing a fantasy adventure


ivanatora

Recommended Posts

I'm trying to build my first official WIG and I decided to try to do an old-style 'you are the hero in this adventure' fantasy story. Gnomes and dwarves, ogres and treasures stuff. Here are some ideas I've got (feel free to comment and add other). I'm very new to game designing, so I will be glad to have some advices :)

 

- various 'fetch-that-item' quests with sidequests on their own

- main story line

- concept of death - if the player is dead, he won't receive a hint for the final-stage geocache

- hidden 'possible-death' zones - like a beast cave. If the player go trough it (and doesn't have certain item like the Beastslayer sword), he will receive a warning that the beast is about to wake up and if he doesn't leave the zone in X minutes, he is dead.

- shops with items - some of the will be useful in sidequests, others will have no other purpose than to have something for the player to spend his money on

- inn where rumors can be learned - main story line rumors will be learned for free, while other misc rumors will have to be paid

- a map will be obtained at some point - it will be a JPG map that is going to lead to the next zone that will be hidden until the player enters it.

 

Some key points in the design:

- the sidequests should really be *side* quests - finishing them will be not required to finish the main story line. However they will have some rewards that can help you in the main story (like an item that can kill the bad wizard, if the player don't have that item he will have to visit another zone and answer a question about it)

- all vital items and zones should be obtained for no monetary charge (the player can spend all his money at some point)

- the JPG map should be clear enough for the player to not get lost

- hidden zones - what do you think about these? I think it will be fun for 'random encounters'. The drawback is that the player can travel around with the mobile device in his bag or pocket where he won't hear the alarm for entering new zone. I could specifically write in the WIG description that the player should carry the mobile device where he can hear or see it.

- max active zones limit - IIRC it is 10 zones for Garmin devices? What about Android or PocetPCs? I think I can fit into 10 active zones at one time if I disable zones I don't need.

- adventure length - the main story line will be about 5km total city and park walk. Optional quests could add a 1-2kms. Does this seems too much for a WIG? If the player knows what he is doing he can take it in about 2 hours, but if he get stuck it will cost him some more time.

- additional geocaches on the route - I will put some small hints in zones whenever there is a geocache around. The player will have to use 3rd party software to find it outside the WIG cartridge. There are 4-5 GCs, so this might add a bit of additional fun to playing the cartridge. Or distracting him and destroying the fantasy atmosphere.

Edited by ivanatora
Link to comment

Hidden zones - Instead of using hidden zones (this will slow the Wherigo Player on some devices), you could use a random timer. If the player is still in the field when the timer expires, a random encounter occurs. This also simulates a monster wandering into the player's party. The downside is you'll have to move a special zone to the random encounter's point so you can detect if the player turned craven (ran away).

 

Max active zone limit - The Garmin devices, particularly the Oregon, are more limiting. While you might want to keep them in mind, support for Garmin devices may start to fade out next year. I'd tend to agree that, with the current Wherigo Players available, ten active zones is a good rule of thumb, with no more than five or six visible at one time so most players won't get lost (unless they have a grasp on what to do). To simplify the load on a Wherigo Player, you could contain a town's zones in a large zone for the town. Upon entry (or proximity), the field timers would be disabled and the town zones will display.

 

Adventure length - Why not split the adventure into a few cartridges? You could design a password to be used in the next cartridge. The password wouldn't be a word, per se, but instead it could represent all the equipment and gold the person possesses at the end of a cartridge, including the place in the storyline. Hmm... Perhaps this might be more trouble than it's worth... Yeah, it just might. Let me try again.

 

Adventure length - The longer the cartridge, the more a Player crash will hurt the experience. I'd suggest having a password system somewhere so, if the Player crashes, you can tell the person the password over the phone and it would at least restore them partway to an expected place in the story so all is not lost. As long as your game is engaging and elements within it make people want to continue, you shouldn't have trouble with as many people not wanting to play the cartridge due to its length. But just keep in mind the more time you expect people to play your cartridge, the better its quality should be. (This is coming from the traveling geocacher in me: the more time I put into a cache, the more epic I want it to be.) Of course, if you want to tie geocaching in the cartridge, you don't have to just have one cache. Every now and then while playing the cartridge, the player could come across a cache to find. I like that, actually: have more than one cache found with the cartridge.

 

Additional geocaches on the route - Oh. And now I read that last part in your post. Here's an idea to make the cartridge better and not destroy the fantasy experience. Hide some caches with props inside. Let's say the person is to find a chest of gold or treasure in the cartridge. Look around in stores to find a container that looks like a treasure chest. Fill this with plastic doubloons and a small log sheet to sign. Put a password inside the chest for the person to enter in the cartridge to say s/he found the chest. Since the prop won't be watertight, put it inside a container that is. Another example is a book of spells. You could find and hide a book somewhere (in another waterproof container). Tape a log sheet to a page in the book and put the spell's name at the top of the log sheet for people to enter into the cartridge. Hiding cartridge-themed caches every now and then will tie your cartridge closer to reality and the geocaching side of the game.

 

-----

 

That's about as much as I can type at the moment. Play around with that last idea, though: I think it could really enhance your (and anyone else's) cartridge. As a geocacher, I'd love to do that.

 

As a software developer, I'm sure you have the capability to create something really exciting because you won't be tied to using any one builder application. My advice is always the same: create the objects and skeleton in the builder of your choice, then open the lua file in notepad and go to town on it, building and testing along the way.

Link to comment

Thanks for the tips!

 

Some of the items in the Player's inventory will be with limited charge or one-time use. How can I remove an item from Player?

I'm giving item to Player with this:

zitem01Flower:MoveTo(Player)

Is there a Remove() method? If not, maybe a workaround would be to create hidden "black hole" character and move the item to him...

Is there some site with documentation of all API methods?

Link to comment

Nice!

 

Another two quick questions:

1) is there a way to format text? For example part of descriptions, or particular strings in dialogs. Formatting may include bold, underline, italic, change front/background color, flashing, etc...

 

2) Can I have Commands in MessageBox? For example I may have a door somewhere with options to knock on it, or to break it open. Should I make a list input for that and use input instead of MessageBox?

Edited by ivanatora
Link to comment

I think I got it - callbacks. Something like this:

 

aCallbacks = {}
function zchar03Shop:OnSeeRoI()
   Wherigo.MessageBox{
       Text=[["You talk too much and drink too less"]],
       Buttons={
           Test={Text="test", Callback = aCallbacks.CB1}
       }
   }
end
aCallbacks.CB1 = function(action)
   Wherigo.MessageBox{Text=[[in callback]]}
end

 

Okay... it is not working that way :) I tried changing Buttons to Commands, but still - I don't have a 'test' button.

 

EDIT: I think I got it again :) It seems there is one 'global' callback for the whole MessageBox, but there can be different Buttons. All of them are triggering the Callback passing the button as argument:

function zchar03Shop:OnSeeRoI()
   Wherigo.MessageBox{
       Text=[["You talk too much and drink too less"]],
       Buttons = {"yes", "no"},
       Callback = aCallbacks.CB1
   }
end
aCallbacks.CB1 = function(action)
   Wherigo.MessageBox{Text=[[in callback: ]] .. action}
end

Edited by ivanatora
Link to comment

Here's some script for you:

function cartivanatora:OnStart()
    Wherigo.MessageBox{Text=[[This message box has one callback and two buttons.]],Buttons={"Right","Wrong",},Callback=cartivanatora.MsgBoxCBFuncs.MsgBoxCB1}
end

cartivanatora.MsgBoxCBFuncs.MsgBoxCB1 = function(action)
    if   action == "Button1" then
         Wherigo.MessageBox{Text=[[The "Right" button was clicked.]],}
    else
         Wherigo.MessageBox{Text=[[The "Wrong" button was clicked.]],}
    end
end

Link to comment

It seems the same as my moment of brightness, right? :)

 

I see you use the cartridge as a namespace for other functions (and probably variables):

cartivanatora.MsgBoxCBFuncs.MsgBoxCB1 ...

 

This is popping a question... For now I'm using only global variables - is it wrong and do they work properly if the player saves and resumes the play? Are there any caveats with save/resuming?

Link to comment

How can I check if the Player is in specific zone? For example I have an item with Use command that in most zones does nothing, but in some of them will do something :)

 

EDIT: Thanks to that post I was able to construct a simple functions, searching Player.InsideOfZones for a given zone, returning true if the player is inside that zone or false if he is not.

 

fnIsPlayerInZone = function(zone)
   bInside = false
   for k,v in pairs(Player.InsideOfZones) do
       if v.Id == zone.Id then
           bInside = true
       end
   end
   return bInside
end

Edited by ivanatora
Link to comment

 

2) Can I have Commands in MessageBox? For example I may have a door somewhere with options to knock on it, or to break it open. Should I make a list input for that and use input instead of MessageBox?

 

I have a cartridge with a door (it's an item inside a zone) and has the command "Unlock". When you perform the action required to unlock it, the command "Unlock" is replaced by the command "Open". And then you can open it. I didn't offer the option "Break it Down" because it's supposed to be one of those ancient oak doors... You'd need a battering ram to destroy it...

 

You can play with the commands like that in items...

Link to comment

Yep, the door can be item. I started using items instead of MessageBoxes at some places, for exactly that purpose to be able to change its commands properties.

 

If Zone Contains player

So, that programming feat I did was not so useful at all :D

 

Speaking of that matter, can I use zone:Contains() to check if a zone contains an item? Like if the player is moving something around.

Link to comment

First field test done good.

I'm pretty much ready with this cartridge. Well, there is some literature to be written and I'm waiting for a friend to draw some illustrations, but all the coding is done. There are 2 physical stages that I will place as soon as I can, but the game is fully playable in the emulator. You are welcome to criticize and applause :) I'm a big fan of the open source movement, so I'm releasing the LUA script as well.

 

There is 1 vital input that can be obtained in field only, but if you look at the LUA file you will get the answer.

 

Some tech details:

Total number of zones: 12

Total number of items: 13

Total number of characters: 7

Total number of inputs: 4

Total number of tasks: 5

 

And again - this is not the final version, but we can call it v.1.0 :)

 

adventure.zip

Edited by ivanatora
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...