Game app prototyping help!


#1

Hi I am currently prototyping an app for my board game, its just starting to get really complicated now and any help on it would be super helpful!

So basically I have a a potential of 2-6 players and 11 routes (11 routes as there are 11 different countries they can visit) and each route has a total of 6 quests that the players must compete before then going home and winning. Once they select their route they are taken to the game play page which shows them a page with all the players routes with an icon for each quest checkpoint. Any player can press any quest at anytime to do it. Essentially I am struggling figuring out how to code, once a route has been created and they press e.g. quest 1 and then the quest 1 page opens (where there are 11 dynamic panels, due to there being a variation of 11 countries depending which route they have) to open the right one.

I am currently at the stage where I have got it to open on quest 1 to one of the players quest 1 tasks but if another player tries to go to their quest 1 it just keeps opening the same one. The one that opens is the one highest on the cases list in interactions and I am not sure how to not make it ‘if’ and then ‘else if’ but rather something ‘depending’.

Hope this all makes sense, any help would be greatly appreciated, this is part of my final year project for university.

Thank you


#2

If and “depending” are basically the same thing. You need to add a condition though.

If “some condition” then do something.

I think in your head you’re thinking, “Depending on the player, do different things.” But how does the computer know “depending on the player”? You need to tell it. Computers are very good at doing exactly what we tell them to, so you need to plan out exactly what you need to tell it and how you will do it. For example you can use a variable to track which player is the current player. You’ll of course need a way for that change to change, so you need some event, somewhere, that changes that at an appropriate time.

So, “if currentPlayer equals 1” would be an example of a condition, where currentPlayer is a variable you created.

If you hover over the event, you’ll see a button that says “enable cases.” If you click this, you’ll get the case editor and you can add conditional logic to your cases. Let’s say you’re using a global variable to track something, your cases might look like:

Case 1
If variable equals 1
  Do something

Case 2
Else if variable equals 2
  Do something else

Case 3 
Else if variable equals 3
  Do the third thing

Case 4
If true (no condition)
  Always do this no matter what, after the others

Read here for more information:


#3

Hi,

Thank you for your response!

I do have cases already in place and that is the issue kind of. It’s hard to explain but basically if someone clicks quest 1 their quest one (which is different to everyone else’s) should appear but the same one keeps appearing no matter which players quest 1 you press but it’ll be one of the quest ones from one of the routes one of the players have selected not a completely random one.
So how do I make it so it almost forgets which quest 1 was previously pressed before and come up with the right one?

Thank you


#4

How are you currently tracking which player’s quest should show? If you have conditions but it’s not working, then your conditions are wrong. You say you have cases in place, but do you have conditions on those cases?

I understand your problem and desired outcome, but I don’t understand what you’ve already tried, and I can’t tell you why it’s not working if I can’t see it.

The only thing I can guess is that you’re maybe using a dynamic panel with different states, and you’re hiding and showing it, but never actually changing the state of the panel. if you have a panel, set it to state 2, show it, then hide, then show it again it will still be on state 2.


#5

Hi,

If i upload the file (its pretty huge) do you think you could take a look? The info you’d be looking between mainly would be on pages ‘Game Play’ and ‘Quest 1’

Thank you


#6

I don’t see an uploaded file. You could start with just a screenshot of the cases in question


#7

Here is a screenshot, let me know if you need any other screenshots! Screenshot shows only first 3 cases and there are 11 in total but they are in theory the same


#8

Well they way you have it setup, you’re showing the “Rockbridge_Quest1” widget if any of those variables are set to 1. So if player two has their route variable set to 2, but the player one route variable is set to 1 still, then “Rockbridge_Quest1” will still show. There’s no concept here of who’s turn it is so it naively checks every player’s route, when really you probably only care about checking the route of the current player. After all, does it matter what route player 1 is on when player 2 is looking at their quest for the route? I would bet money this why the first one comes up no matter what.

So likely to fix this with your current setup, whenever you change one of those player route variables, make sure to invalidate all the other ones at the same time, perhaps by setting them to 0 so this first case will fail.

Here’s how I would structure this: I would keep the player route variables as you have them, I assume you might need to preserve these vales for other reasons. I would then add a new variable to track which player’s turn it is. Lastly, I would create a dynamic panel with a state for each quest. Name each state 1 through 6 (or however many there are).

Then I would make the case look like this:

OnPageLoad
If playerTurn equals 1
  Set state of questPanel to state: [[Player1_Route]]

If playerTurn equals 2
  Set state of questPanel to state: [[Player2_Route]]

etc...

This works because you can use a variable to match the state names of a panel in the Set Panel State action, so you can dynamically choose which state to set it to.

There might also be better ways of structuring your data, but it’s hard to say for sure without seeing the entire document. Essentially, this is a data modeling issue, where you need to find the best way to model the data required by the game such that you can make good use if it within the confines of Axure’s interaction options.

When dealing with logic like this, I find it helpful to say it out loud an natural language and see if it makes sense with what I want to happen.

“If any player route is 1, show Quest 1”. This is also easier if you do it while look at the current state of all variable in the variable inspector in the live preview. It’s the [x] looking button in the top right. The values of the variables might be different from what you thought they’d be.


#9

I will give this a go! Thank you so much for your help!