- by Rachael Hosein
Now that we’re putting the finishing touches on the Desert Sands environment, we’re moving into creating the lobby, or main entry point, for the game.
The entry of the game had to fit with the theme - An explorer going on expeditions throughout the world. After brainstorming a few ideas, we came up with the concept of starting the game in your study, where you plan out your expeditions and keep all the relics you’ve acquired during your travels.
Next came figuring out the flow. We really wanted all of the options to feel like they are part of the room, so we figured out ways to integrate them into objects around you. We also didn’t want to get too clever with how we presented the options since the obvious choice is usually the best.
Since it felt natural for the environment selection and tutorial section to share the same space, we plotted the flow for the user.
The visual representations of the options came pretty naturally. We decided on an actual map for the environment selection.
The exit option will be the door leaving the room and the controller and sound options presented on a panel beside the door.
The credits shown as images hanging on the wall.
Now that we have our plans in place, it’s time to start solidifying the art direction and get into modelling!
- by Rachael Hosein
Here's a sneak peek at what the gameplay looks like in Lost Cities VR's first environment, the Desert Sands.
We have a couple copies of the game making their way around Oculus Connect 2, so if you're there and you run into either Lesley or Landon, they may be able to be coerced into letting you try it out!
- by Rachael Hosein
Our Desert Sands environment is almost complete and we're now testing out an early alpha version of the game, which we've brought to Oculus Connect 2.
The major component to all of the Lost Cities environments is the playing area. We can make the most awesome environments to sit it, but if we don't nail the game table then it will be all for naught.
Once we had the basic table top interface set, we moved onto developing the actual models.
1. Create reference materials
Sam developed our concept art, so we created a document with reference materials and a table layout diagram to help inform the design concepts.
We also gave her a visual of Les' interface concept.
2. Develop initial concepts
From there, Sam created three concepts for the team to review.
We loved them all.
3. Finalize the concept
Once we narrowed down the concept we wanted to move forward with, we put together a document that detailed some minor edits to polish it off.
Once the edits were incorporated, we finalized the concept.
4. Set the starting dimensions
Getting the scale right is critical. We based the tabletop interface on 6cm x 6cm cards that are about 1m off the ground, so this was the starting point for setting out our table dimensions.
5. Develop the 3D model
Once we had our starting dimensions set, Liem started modelling a detailed version of the table in ZBrush.
This version was almost there, but we needed to change the position of the player cards from flat to sitting up at an angle. The main reason for this was to avoid neck strain and increase legibility of the cards. Keeping the cards viewable at a natural head position would make for the most comfortable experience.
Since the player will be mostly focused on their own hand, it was important that we raised the position of the cards to a comfortable height. We also needed to angle the cards in the expedition areas so that the player doesn't want to try to lean closer to see the cards at the back. The Gear VR doesn't have positional tracking, so everything needed to be set up in a way that wouldn't frustrate the players.
6. Check in VR
Once we had the first draft of the table, we put it in our pre-alpha build (which is our playable version that contains just the cards using developer graphics). We went through quite a number of iterations to get things feeling just right.
One other thing you'll also notice in the image above is that there's now a shelf under the player's hand. Once we had the cards positioned correctly for player comfort and visibility, we realized the table would feel unnaturally far away from the player's own position. To compensate for this, we added a shelf or extension to the table that makes it feel closer to the player.
This was one of those little tricks you sometimes have to employ in VR to make things feel right. Feel is the most important thing. You can get away with a lot in other areas, just as long as it feels right.
7. Add in texture, lighting, and effects
Once we had the model set, Sam created the texture map, then Graham came in to add in some lighting and effects!
As part of the texture map, we added hieroglyphs to connect the table with the other ancient Egyptian elements of the scene, including Anubis, the god of the afterlife.
We're now testing the game out with as many people as possible to polish up any of the remaining elements. Once we've made our final set of tweaks, we'll move onto creating the environment for the Himalayan Mountains!
Thanks for reading about the development process of our game's table. Stay tuned for updates about artwork, music, and more!
- by Rachael Hosein
The desert sands environment is really starting to come together. Here's a little preview of where things are sitting!
- by Rachael Hosein
We are so stoked to be able to share what we've learned during the making of Lost Cities at this year's Oculus Connect 2 conference in Hollywood.
If you're heading down, check out Les' talk on Wednesday, From Paper Cutouts to Virtual Cards: Making the Tabletop Interface for Lost Cities.
Huge thanks to Facebook and Oculus for having us. Check out the Oculus Connect 2 website for conference info!
- by Landon Butterworth
By Landon Butterworth
About a month ago, I started on the task of creating an artificial intelligence system for our Lost Cities VR game. It's a fairly simple game concept compared to many board games, but it provides some unique challenges from an AI perspective.
The game consists of 60 cards, separated into 5 expeditions, or "suits" in classic card game terminology. Each expedition consists of 3 investment cards and the numbers 2-10 for a total of 12 cards in each. The point of the game is to finish the game with a higher score than your opponent. Each player is dealt 8 cards, and points are earned by playing cards on a player's expedition.
Cards must be played in ascending order and the act of playing the first card on a new expedition comes with a cost of -20 points. Cards are worth the value shown on the card with the exception of investment cards, which must be played before any numerical card and act as an incremented multiplier. For example playing 1 investment card at the beginning of an expedition changes it from 1x points to 2x, if you add another investment card it becomes 3x the points with a maximum of 4x points (3 investment cards).
There is an additional bonus if a single player has 8 or more cards played in one expedition, their initial -20 points for that expedition gets wiped out. If you need a better explanation than that, take a few minutes to check out this YouTube video - "Lost Cities Instructions".
If we break the game down to its simplest form and look at it from strictly an AI perspective, we can say that it is an adversarial two player zero-sum game with imperfect information.
Goals for the AI
We began by establishing a few goals that we felt were important to the resulting gameplay.
1. It must be fair
It would have been easy to create a system that has access to all the information related to the game, including what cards were in the pickup pile, the other players hand, etc. But we didn't want users to feel cheated or have a disadvantage beyond how they choose to play their hands.
That being said, we thought an AI with a perfect memory would still be fair. It's not too much of a stretch to memorize every card that has been discarded, or the order they appear in each discard pile, nor is it unlikely that if your opponent picks up a card from a discard pile that any human player would note that action and retain that information to affect their strategy going forward.
2. It must be consistent
We wanted to create an AI system that consistently came up with good scores. Now I know this sounds like a very obvious thing, but there is a balancing act that between the maximum score and the average score. It's very easy to create a system that comes up with a maximum score that blows everything else out of the water but that tends to be more risky, meaning that the minimum score after many games would be as bad as the max score was good (we're talking in the -115 area).
We ended up setting a target average score of 30 points, with a minimum no lower than -20.
3. It must be adjustable
We wanted to create a system that could be easily adapted for different difficulty levels. Essentially we wanted everything in the system to be affected by changing 2 or 3 values that would allow different weights for different actions. We also wanted to be able to adjust when or even if the AI would play an investment card through tweaking evaluation thresholds.
Each person on our team has a very different idea of the best way to approach Lost Cities. For example, Les will often write a whole expedition off early on and start discarding every card that he comes across from that expedition. John waits and waits... and waits for investment cards on an expedition he feels is strong, even if it means throwing out some other valuable cards, Rachael tries very hard to only play a few expeditions but almost always ends up with cards played on all five, and I play almost entirely based on the cards in my hand. If I can get points from an expedition, chances are I've already started playing it.
We wanted to incorporate some of our personal playing styles into the AI system. This could be easily solved by adding in flag variables or additional weights to allow for certain play styles when they are enabled or disabled.
However, because of the way the game is structured, specifically the initial -20 points when starting a new expedition, evaluating the current utility of the game state cannot be based on a player's actual score. This has implications for some of the greedy algorithms I was looking at using as well.
One thing about Lost Cities that is very interesting is if you have the cards 2, 3, 4, 5, 6 in the same expedition that still only adds up to 20 points, which has a net value of 0.
A human player understands that playing those cards would be a smart move because there is a chance to pick up a 7, 8, 9, or 10 and you are very close to getting the 8 card bonus. But from an AI perspective, playing the first card is -18 points and that's 5 turns (10 ply's) in the negative before seeing any benefit.
In a simulation-based system it is likely that such a move would be pruned from any game tree early on and not even evaluated to see the long term benefit. So we had to come up with an alternative way of evaluating the utility of a player's hand other than score.
Monte Carlo Tree Search
This realization led me to a Monte Carlo Tree Search (MCTS) system. MCTS systems are most often used in games with perfect information (games where all the information is available to both players) such as Chess, Checkers, Connect 4, and Go.
But recently this system has been adapted to play games like Poker and Settlers of Catan where very little information is known about the opponent, so I thought this would be a prime candidate for our Lost Cities AI and began diving into research papers covering the topic.
MCTS is a simulation based approach that uses randomness to decide which branch to explore and expand. Typically each simulation would be played out until the end state of the game is reached, but with Lost Cities having a minimum of 22 turns for each player (44 ply's), that's not really feasible.
Also the number of simulations required to get a "good" decision is related to the branching factor of the game tree since randomness is involved to increase the possibility of every option being explored, you must increase the number of simulations or make the pruning algorithm more aggressive.
Here is where we hit an impasse: This all has to be done in the background, on a mobile phone, while continuing to render the game at 60 FPS.
To see any real benefit from a Monte Carlo style simulation for a game like Lost Cities you need to run around 350 simulations, and as I mentioned earlier, those simulations have to go at least 5 turns deep (10 ply's).
While this isn't impossible, the delay in game play caused by these simulations would undoubtedly cause some players to get frustrated and quit playing, and increasing the aggressiveness of the pruning often eliminates what would turn out to be the best move.
Her name is Gwen, and she is beautiful...
In the end, we were forced to move away from the Monte Carlo Tree Search method in favour of a more efficient but "dumber" method that I have affectionately named Gwen.
I came up with a general strategy evaluation function that performs consistently well at a very low cost. She follows my playing style very closely by evaluating each expedition in her hand separately and comparing the results. She uses an investment threshold to ensure she will not play an investment card on an expedition that returns a value lower than the threshold and a play threshold to play an expedition without an investment card.
There are quite a few extras to the method and a bunch of edge cases surrounding it, but the core function came down to this:
result += ( ( result * ( number of cards higher than the current card + 1 – number of cards higher that are visible ) ) / (cards remaining * 2) * average value of numeric cards in same expedition )
The result generated by this equation determines when it is appropriate to start an expedition and whether or not to play an investment card on it. It executes this calculation for each card in each expedition starting with the lowest and working its way up. The result is obviously cumulative.
The importance of this is that it accounts for the number of potential cards remaining in the pickup pile that are higher than the card being evaluated.
Outside of this initial decision, we also maintain "to play" and "to play next" lists that track which cards are left to play before the game is over and which cards should be played on the next available play, respectively.
If you have played a yellow 5 and you have a yellow 8 in your hand and you can see your opponent has played a yellow 6 and 7, the yellow 8 should be the card you play next. There is nothing that you can possibly pick up that would make that a bad play.
It also compares the number of items in these lists with the number of cards left. If there are less cards left than 2x the number of items in the list (meaning there are less turns left than cards left to play), it will pick up any card from the discard piles to extend the gameplay.
We don't want to give everything that's happening behind the scenes away, but we want to give you a little insight into the development process and the thought that went into making a robust and intelligent system.
Creating multiple AI personalities
As I stated earlier, one of our goals was to have different personalities for the AI to create a different experience depending on which character you're facing. All of the different personalities will use this core equation to calculate the utility of each expedition, but depending on a few flag variables that information could be handled very differently.
For example, John's play style is to wait for as many investment cards on a high scoring expedition before playing. For that personality we simply set the flag "waitForInvestment" and try to play the expedition with the 2nd highest utility (if it is above the play threshold of course). That will continue while there is something else playable or if there is a safe discard available (meaning it won't benefit the opponent or be detrimental to the AI).
To create Les's play style we simply mark an expedition early on as a throw away and stop evaluating that expedition. We're still figuring out which personalities to ship with, because based on the early experiments the average score drops in both of the above cases, but for the overall player experience and storyline they might just add that extra little something to the gameplay. We won't know for sure until we do more outside play testing.
While we're not finished with the AI yet, this is where we stand now after about a month of R&D. I am still holding out hope that we will be able to come up with a more efficient way of using the Monte Carlo system. Maybe we will be able to find a balance between efficiency and intelligence that will work on mobile devices.
As we start working on the menu system, audio, models, graphics, and animations, it will remain in the back of our minds and whenever there is a break in these other areas, we will keep improving the AI until we're completely happy with our final solution.
- by Rachael Hosein
We're starting on the card design!
The Lost Cities board game has five sets of cards, each themed to a particular expedition. In each set, there are 3 investment cards (I like to refer to these as the temptress cards that most likely will lead to your downfall) and 9 numbered cards (running from 2 to 10).
Here's the Neptune's Realm card set from the board game.
Rethinking the design for VR
We love the artwork on the original cards. They lead you through the story of finding ruins of a lost city. It would have been great to carry this reference into the VR version of the cards, but we had to keep readability in mind so the card numbers definitely had to use as much real estate as possible.
One of the current limitations of the Gear VR is that it doesn't have positional tracking - this means that your head is fixed in one spot. You can look around to see a full 360º view of the environment, but you can't lean in to take a closer look at the elements in the environment so all the card numbers have to be readable from one set position.
Keeping the hardware limitations along with the environment research, scale guidelines, and table concepts in mind, we came up with a few parameters to base the card development on:
- Square 6cm x 6cm cards
- Large bold font
- Each set should reference that expedition (ie. Desert Sands cards should look like they came from the desert)
Here is Sam's first go at the card design.
After some changes, here's how the concept started getting more refined:
And after some more back and forth, here's a visual of the final card design:
We're super excited to get started on the design for the rest of the expeditions, and will keep you updated here as we go!
- by Rachael Hosein
By Rachael Hosein
This is my first time conceptualizing the look and feel for a game…well, a "game" game at least. I’ve done the illustrations, art direction, and planning of many e-learning activities, a few game jam games, and started and stopped a couple mobile games, but for this one the pressure is on. Lost Cities VR Edition is The Campfire Union’s first commercial game, and my first go at leading the visual style for a full virtual reality production. Scary, but also pretty cool.
So where do I start?
Step two was meeting with the rest of the team and getting a feel for what art style excited everyone. We crawled the internet and pulled some reference images, talked about what historical timeframe we were going with, and did a fair amount of daydreaming.
Next came the research phase. Lost Cities is a game where you go on expeditions to five different locations in search of lost cities - the Desert Sands, Himalayan Mountains, Neptune’s Realm, the Brazilian Rainforest, and an ancient volcano.
I spent a couple weeks putting together research documents for each of these locations - historical info, weather, vegetation, animal life, what kind of gear an explorer would need, and anything else that might help us dream up these virtual worlds. Although only a portion of what we learned will actual make it into the game, it was important for two reason; cred (obviously) and to make sure that all our design decisions are grounded - everything will have a reason and place.
As much as I would have loved to just jump into illustrating at this point, designing for a mobile virtual reality experience definitely has some restrictions that I needed to keep in mind - the main rule of thumb is less is more… or maybe it’s that less usually works better and more often doesn’t work at all.
There are a ton of unknowns in the process. Art for VR is a bit of a trip in that way. It’s very much a give and take between art direction, models, textures, the number of objects, effects, lighting and much more. So, hard to plan for from a designer’s perspective since it involves pretty much everyone on the team (3D modelers, technical artists, Unity developers, and probably a bunch of other roles that I don’t even know of yet). The key is balance (What main thing will "make" the environment? What do we want to spend our resources on?) and flexibility (Don’t fall in love with anything, there is great potential you will have your heart broken).
With all of this in mind, I started on conceptualizing the style with the following guidelines:
- Simple shapes that are deep with textures
- A clean minimalistic approach that feels rich and luxurious
- Objects that are placed in a way that creates depth and invokes a desire to explore
- Colours that stretch a little beyond reality
Now, a little peak at my work in progress. This is the starting point that will guide the visual direction of the game. They are the building blocks for what will be the core of the environment. I still have some adding and refining to do, but they give a good sense of where we're heading.
The desert sands environment is the one we’ve been featuring on this site. Check out the home page for the version with a cool little parallax effect.
I was going for an eerie but beautiful jungle feel for the Brazilian rainforest.
For the Himalayan mountains, I was stoked on trying to achieve that snowstorm whiteout feeling (you fellow Winnipeggers know what I’m talking about).
Neptune’s realm is my favourite so far, partly because light in water is my new jam but mainly because the Miami Vice colour scheme is at the top of my colour pallet list.
The ancient volcano is still a little too early on to show, so stay tuned for more!
Once the finishing touches are complete, we'll start putting together reference materials for our art team to explore how these ideas will translate into virtual reality and make these environments places that you'll never want to leave.
- by John Luxford
Here's Landon testing the gameplay of Lost Cities VR in the DK2 against his AI, affectionately named Gwen. We're about to start integrating graphics and artwork, but the game itself is playable!