Saturday, June 27, 2015

PowerShell: The Pipeline, begin/process/end blocks, and You

So, one of PowerShell's strengths is that it works with objects natively instead of strings, like all other shells in existence.  These objects can be passed down the pipeline from one cmdlet to the next, to do a lot of processing on a lot of stuff with a minimal amount of code.  This is nice and all, but can our custom functions get in on this action?

Well, yes.  Yes they can.  You'd be naïve to think otherwise.  If user-written code couldn't fully harness the power of the pipeline, this would be SlightlyStrongShell, not PowerShell.

I'm only writing about this because I've just run across a situation where I was trying to do something and this was the only way it would work.  So basically, this entire post is "just learned why I want to use it, so I gotta share it with others" syndrome.

To me, the annoying part is that hashtables won't work.  Hashtables have a nice, simple shortcut syntax (@{ key1 = value1; key2 = value2; ... keyN = valueN }), which is why I tried to use them first.  But no, even though you can access a hashtable like you would an object, hashtables function more like associative arrays than objects.  What your code will see is a set of keys and a set of values with no relation to one another instead of the neatly grouped and named values you're giving it.

No, you need a real object for this to work.  We can get the definition of said object down to a reasonably short length, but it's still much longer than the shortcut syntax for a hashtable.  Behold.
new-object psobject -property @{ key1 = value1; key2 = value2; ... keyN = valueN }
Yeah, that's the best we can do without getting into aliases, which for whatever reason are present but all PowerShell literature in existence advises against their use.  Strangely, though, type accelerators are fine, even though they, too, can potentially not exist.  Anyone sensible would argue that the default aliases in PowerShell SHOULD (RFC 2119) be safe, but common sense seems to be lost on Microsoft.  Also, this definition makes use of a hashtable, for what that's worth.  Anyway.

Making a function that can process multiple objects via the pipeline takes some extra syntax, but it's worth it in that the result will Just Work™ with full-on cmdlets and any other PowerShell code whose results you can pipe into it.  Note that this is geared towards working with input objects by having the parameterization automatically split them up by property name, which to be honest, I find pretty sexy.  It will remain an exercise for the reader to modify this to work with an entire input object at once.

So, let's get a sample function in here.  It won't do much that's useful, but that doesn't matter.  Grab it from this pastebin and run it in PowerShell.

That code is about the bare minimum, with some basic functionality implemented so we can see results based on easy-to-generate sample inputs.  But wait... begin, process, and end?  Why are they there?  Functions can work just fine, even with pipeline input, without them!

Well, yes, that's technically true.  However, by omitting them, you're limited to one object on the pipeline, period.  If you try to pipe more than one in, the function will only 'see' and operate on the last one.  There may be some obscure use case for that, but in general, when you pipe multiple objects into a function, you want that function to operate on all of those objects.  Now, let's break down what's going on here.

When the function starts up, the begin block runs.  This is where you should put any initialization code, such as variable declarations or opening a database connection.  Next, for each input object, the process block runs.  The vast majority of your function's code should go here.  Finally, once everything has been processed, the end block runs.  This is where you do all your cleanup, such as calling the Dispose() method on any objects that require it, or closing your database connection.  Note that both the begin and end blocks only run once per function call.  Furthermore, all three blocks share the same scope.  Also, that if you want to confuse anyone reading your code, you can reorder the blocks all you like.

So, we've got sample code, but we need a set of sample objects to show it off.  You could just make up one such set on your own, using the function's parameters as a guide, but...  You could also be lazy, and just copy/paste the one I'm about to give you.  Also, note that each item in this array is enclosed within parentheses, seemingly needlessly.  After all, array definitions in PowerShell are comma-delimited, right?  However, evaluating it without them throws an exception, so consider this yet another example of "IF IT DOESN'T WORK IN POWERSHELL, THROW MORE PARENTHESES AT IT".
@( ( new-object psobject -property @{ Name = 'Alice'; Age = 16; WearsGlasses = $true } ), ( new-object psobject -property @{ Name = 'Sarah'; Age = 19; WearsGlasses = $true } ), ( new-object psobject -property @{ Name = 'Jennifer'; Age = 23; WearsGlasses = $true } ), ( new-object psobject -property @{ Name = 'Melissa'; Age = 22; WearsGlasses = $false } ) )
Pipe it into Process-SampleObject and you'll see your result:
C:\PS> @( ( new-object psobject -property @{ Name = 'Alice'; Age = 16; WearsGlasses = $true } ), ( new-object psobject -property @{ Name = 'Sarah'; Age = 19; WearsGlasses = $true } ), ( new-object psobject -property @{ Name = 'Jennifer'; Age = 23; WearsGlasses = $true } ), ( new-object psobject -property @{ Name = 'Melissa'; Age = 22; WearsGlasses = $false } ) ) | Process-SampleObject
Processing list of people...

Stay away from Alice, you pedo. Even though those glasses are cute.
Porn, tobacco, and sex are okay for Sarah, but alcohol is not. As a bonus, those glasses are sexy.
Anything goes for Jennifer! Giggity. On second thought, thick-frame glasses? No thanks.
Anything goes for Melissa! Giggity.

Done!
As I stated in the middle of one of those paragraphs up there, modifying this to work with an entire object as opposed to splitting it up into its properties will be left as an exercise to the reader.  One thing to note, though: If you're lazy and don't have a parameter block, then PowerShell provides you with the input object through the automatic variable $_, which you should be used to from undoubtedly having already done countless $objects | where-object { $_.DoesntWork } | foreach-object { $_.Defenestrate() } constructs.  Have fun.

Monday, June 22, 2015

A fun story

Gather 'round, it's story time with XT.  Hey wait, where are you going?  GET BACK HERE!  THERE AREN'T ANY SNACKS OUT THERE!

Anyway.

So for the longest time, we'd been using glorious Windows Internet Connection Sharing so that all the computers in the house could use our internet connection.  This would have been fine, except for the following:
  • The computer running ICS was set to auto-update at 3AM
  • This meant all internet activity experienced a hiccup shortly thereafter while it rebooted
  • This computer also crashed all the time and was generally unstable as fuck, mostly due to all the shit my parents had loaded onto it
  • ICS is annoying to configure for port forwarding and port translation
At some point, my dad brought home a shitty Netgear WGT624 router, "to play around with".  He had no intention of using it in place of Internet Connection Sharing, whatsoever.  His playing around with it eventually led to the ICS computer deciding "you know what?  Fuck being a DHCP server!" and eventually all the DHCP leases expired and nothing had an IP address anymore.  My dad, not being a network administrator despite steadfastly claiming "I RUN OUR NETWORK YOU DON'T CHANGE ANYTHING WITHOUT MY PERMISSION", had absolutely zero clue why he suddenly couldn't do anything on the network.

Apparently the 169.254.x.x link-local IP address he had didn't set off any flags despite his claims of network administratorship.

I realized what was going on when I noticed that my server was still responding to requests from the internet.  This only happened because rather than obtaining an IP address via DHCP, it expressly said "hey motherfucker this is my IP address deal with it".  I looked around on the internet from work (this was back in 2013 when I had the contract job at Silverchair) and found the freakishly simple way to fix it: netsh winsock reset, and reboot the machine.  Done.

Anyway, remember that wireless router I mentioned, and the fact that the ICS computer was unstable as fuck?  Well, yeah.  It completely died and my dad had to order a new motherboard and boot drive, and then borrow my OEM copy of Windows 7 Professional (that I should really get around to installing, so I can reserve a Windows 10 upgrade).  It was going to take a while for the parts he ordered off the internet to arrive, and I needed an interim solution so I could use the internet.

I grabbed the router, did a little pre-configuring by plugging its uplink directly into my computer and setting my IP address to be on its default subnet, and then it was go time.  Set it up with the uplink plugged into the cable modem, plugged the rest of the network into it, and reset the cable modem so it'd learn a new MAC address.  Internet was back, with the added bonus of having a wireless network, which I'd secured the crap out of.  We ended up keeping this setup around after he rebuilt the computer.

As time went on, this router began repeatedly proving its shittiness.  Here to explain what I mean, is another bullet point rant.
  • It didn't support IPv6.
  • While it supported having more than 10 port forwarding entries, it would only show the first 10 on the config page.
  • No button to reboot the router from the web interface.
  • Periodically it would forget that it was a wireless router, and the wireless interface would just turn off.
  • It would randomly balk at doing more than simple web browsing over the wireless interface, to the point that if I wanted to watch YouTube over it, I had to unplug it and plug it back in to reset it, or face 10 minutes of buffering every 4-5 minutes.  It got so bad that I ended up having to do this every night.
  • Strangely, the wired network was rock solid during all of this.
"Just flash it with dd-wrt!", you say?  Well... I tried.  I'm not an idiot, so I checked the compatibility list first.  The list has the WGT624v1, v2 listed as works in progress, and v4 is listed as compatible, but guess what.  GUESS WHAT.  Yeah, you guessed it.  We had the WGT624v3, which is known incompatible with dd-wrt.  Because I can't easily link you to this, have a screenshot.


Yeah, that fucking sucks.

Well, I coped until recently when my dad got a new modem from Comcast, one of their "all-in-one" things.  Because he likes overpaying for hardware, he leases from them.  Anyway.  The modem and built-in router isn't actually all that bad, save for a completely stupid firewall, which one might argue makes it horrible.  Anyway.  It's leaps and bounds ahead of a Netgear WGT624v3, and that's all that matters.

My dad got around to hooking it up yesterday.  In the meantime, Comcast was doing some things that seriously scared me.  They started EDITING WEB PAGES THAT I REQUESTED to have a note in them saying "lol wtf we sent you a modem and you're not using it".  This prompted me to finally get off my ass and install HTTPS Everywhere.  Anyway.

He activated the router and left configuration to me, ceding to the fact that I've actually been a network administrator and therefore I know my shit.  Because Comcast, I had to search the internet to find the default login information for its web interface because none of the setup materials Comcast had sent us contained it.  I'm guessing a lot of people just hook it up and go, without knowing about the web interface, which is scary considering the default login for the web interface is admin/password.  Dead serious.  That was the first thing I changed, and in doing so, discovered another fail: it only permits alphanumeric passwords.  So I made a long as fuck alphanumeric password.  I also changed the SSID and authentication key so that neither is what's printed on the side of the modem.  Last but not least, I swapped it back to the LAN subnet we'd been using, 192.168.0.0/24, because for some strange reason it defaults to 10.0.0.0/24.

So, one final bullet-point rant, about the modem that Comcast sent us:
  • Shitty firewall options, that only allow for blocking specific incoming ports that so happen to include everything I want to use while not blocking anything else
  • The password for the web interface can only be alphanumeric, so no symbols or spaces.
  • I'm fine with the default SSID and authentication key being printed on the side of the modem, but the giant piece of paper with the activation process on it (which pretty much just says "plug everything in, go to comcast.com/activate, follow the instructions lol") should continue on into setup and direct you to change that shit.  Also, it should have you change the admin password, while it's at it.  The web interface even has a wizard that does this, so it's not like it's overly difficult to explain.
  • Has port forwarding, but no port translation.  This means I can't tell it "listen on this external port and send everything to a local host on this other port" and have easy smoke and mirrors for my web server and SSH, and anything else I want to be accessible that they might want to block.
  • It has port triggering, which is not at all what I want.
  • It has support for dynamic DNS services, but... only for dyndns.org.  No no-ip.com lol what?
  • Comcast is doing this "xfinity wifi hotspot" thing lately that piggybacks on MY internet connection, using MY bandwidth and MY IP address.  Without paying me anything for hosting their shit, or giving me any guarantee that if someone uses the hotspot on my connection for nefarious deeds, that the FBI won't come and take all my shit and send me to prison instead of the guilty party.  And apparently this is opt-out only, but they sneakily turn it back on when you're not looking.  Public Enemy #1: Comcast.
So, yeah.  No more shitty Netgear router that I have to reset once every 24 hours, but... Comcast.

Wednesday, June 10, 2015

StreetPass Premium Plaza Revisited

Some were up in arms about the Premium Plaza update costing $5, considering it doesn't really have a lot of content for your $5.  Regardless, there are features and things behind that paywall that made it worth purchasing to me.  Once you've bought it, you gain the ability to skip a lot of the conversation bits that happen with each StreetPass, which greatly speeds up the whole deal.  Without it, the only things you can toggle are greetings, which I leave on anyway, and ratings, which if you turn them off, you're a dick because you can't send Fantastics to people.  Also, Fantastic still isn't the default choice, which saddens me.  There isn't even an option to make it the default choice for those of us who are nice and always send Fantastics.

You also gain access to the VIP Plaza, where you can send Miis that you never want to be deleted for any reason.  The most practical use of this is to toss your friends in there.  That way, if you go to a convention or something and get a ton of StreetPasses, you don't lose your friends.  It's also useful for keeping Special Miis, since they all have a special effect when hired within games that allow you to hire old allies.  It's also useful in general for that Hire Old Allies option, as you can store Miis you've met 7+ times there for use in Find Mii/Find Mii 2.  Miis that you've flagged as VIPs also show up first on the selection screen when you select Hire Old Allies, making it easy to find them.

Last but not least, with the Premium Plaza update, you gain access to StreetPass Birthdays, which isn't really a game, but it does have 22 plaza tickets associated with it, and in keeping with tradition, plaza tickets are behind a paywall.  This makes purchasing this portion of the update required to get all the hats and speech bubbles.  There isn't any real challenge to StreetPass Birthdays, since it basically plays itself as you StreetPass people.  You'll get all 366 eventually, and getting all 366 nets you all 22 plaza tickets.  If you have multiple systems or a roommate that also has a 3DS or whatever, go ahead and change your Miis' birthdays to fill it out, it's okay, nobody's going to judge you for doing it.

The 4.0 update to StreetPass Mii Plaza also brought some nice features that are entirely free.  One I already mentioned, the speech bubbles.  There are a wide variety of them to choose from, whether game-themed or not.  You get a bunch for free after updating, just keep restarting the Plaza a few times, because for whatever reason they chose that as the method for giving them to you.  Without having to get plaza tickets, you get the regular speech bubble, a thought bubble, and bubbles themed around each of the Plaza games that you have.  Some of the ones I like a bit more than the rest are the 3DS cartridge balloon, and the Super Mario Bros. 1-1 balloon.

The Game Vault is handy for preventing games you've completed from bringing up that "you haven't played all the games!" message every time you start the plaza.  You can still launch the games from the vault, and your current group of Miis will follow you in, so there's no functionality lost.  It's essentially a band-aid for all the paid games not recognizing when you have absolutely nothing left to do in them, since they continue to display their exclamation points with each new group.

Being able to rearrange the game icons is nice, but I still wish that the StreetPass games made better use of the touchscreen.

The clear medals are nice for bragging rights.  The criteria for each clear medal is of course dependent on the game, with the paid games having a very loose definition of "complete".  For Puzzle Swap, it doesn't show up until you get all the puzzle pieces.  For Find Mii 1 and 2, you have to beat both and leave them on their victory title screens for it to show up.  However, for the paid games, the clear medal generally shows up when you get the second hat for each game, which happens incredibly early in some games, like Flower Town, and takes forever in others, like Monster Manor.

Completely disappointing is the ability to change the music that plays within the Plaza.  It's limited to just the 7 variations on the Plaza theme.  Likewise, the ability to listen to the Music Player with the system in sleep mode is nice, but it just plays one track on repeat.  It doesn't go through and play all of them, there's no shuffle option, etc.  There could have been a bit more effort in this part of the update.

For those who are paying attention, yes, the most recent version of the Plaza is actually 4.1.  This was a bugfix for the Exchange Booth not rotating daily as it should.

Anyway, the plaza update, both the free and paid portions, are worth getting in my eyes.

Tuesday, June 9, 2015

StreetPass Games Revisited: Battleground Z

I've completed the vast majority of what Battleground Z has to offer.  I have one plaza ticket remaining, for trying every showdown stage.  I only have one showdown stage left to play, which I can't play yet for a reason I'll get into in a moment.

Battleground Z is definitely shorter than Ultimate Angler.  There are 25 story stages, divided among five areas.  Each stage is designed to take less than five minutes.  The last stage of each area is a boss battle.  From each of the first four bosses, you take a sample.  These samples get analyzed and combined together to formulate a cure that you spread through the air after defeating the fifth boss.  I know, spoilers, right?  Well, no.  I avoided the actual spoilers.  So there.

As you play through the game, you gradually fill in information on the Z-Wiki, which is accessible from the title screen.  It gains information about all the weapons and all the enemies, as well as letting you test out weapons to get acquainted with them.  The weapons are based on the hobbies of the Miis you StreetPass, which means there's 26 weapons in total, each with its own strengths and weaknesses.

Each stage has four objectives for which you earn a medal.  These objectives can be easy, or they can be frustratingly difficult.  There is some in-between, thankfully.  The game has a total of 120 medals that you can earn, although you can get all the plaza tickets and Z-Wiki completion once you've gotten 100 of them.

Beating the story makes the five showdown stages show up.  Each of these requires a multiple of 20 medals to be accessible.  The showdowns are basically challenges to see how many zombies you can defeat in a limited amount of time.  They're all about having good weapons and remembering to use your charge attacks.  The showdown stages also have medals.

Also, within 26 of the 30 stages, you can fulfill a hidden condition and make a rare zombie spawn.  The game hints at what weapon you need to use in which stage to make this happen, via the Z-Wiki.  Finding and defeating the rare zombies is of course completely optional, but it does fill in the Z-Wiki section about them with more information as you do it.  Just to clue you in, there's a graveyard stage, and yes, you have to use the dancing weapon in the graveyard stage to spawn its rare zombie.  Heck, the dance even looks a bit like the Thriller dance.

Returning to the subject of my game completion, I've defeated 25 of the 26 rare zombies, and the last one I need is in the 100-medal showdown stage.  I'm currently sitting at 87 medals, and that specific showdown stage is the last one I have yet to try, so I'll get the game's final plaza ticket when I do play that stage.

Overall, Battleground Z is a bit on the short side story-wise, but what it lacks in story length it makes up for in replayability.  Due to the medals, showdown stages, rare zombies, and the vast array of weapons at your disposal, no two gameplay sesssions are ever the same.

Monday, June 8, 2015

StreetPass Games Revisited: Ultimate Angler

Since I did this for the first batch of games, I'm back to do it again with the second batch.  Now that I've played the second batch of games for a while, what's my progress, and what are my thoughts?  Have I figured anything out that I didn't know when I wrote the original post?  Read on to find out.

Actually, before I get into discussing the gameplay and my completion thereof, I just want to say: The game's music is awesome.  It covers a wide variety of musical styles, and there's a unique song for every fishing spot.  Just think about that.  A lot of work went into the music for this game, and it shows.  If you need some examples, try Clifton Cove, Highland Lake, and Feeding Frenzy.

Progress-wise, I've completed the first five islands and gotten the second hat.  The plaza tickets come in very slowly in this one, as you essentially have to do almost everything there is to do in order to get all of them.  I'm missing the ones for clearing six/seven/eight/all islands, landing 120/all species, and A+ catches for 10 species.

In addition to the plaza tickets, there is a whole set of challenges that the game gives you rewards for completing.  All of the plaza tickets count for these challenges, but the ones that don't give plaza tickets instead give you money or fishing rods.  Not all of them are visible by default, the game only lets you know what the next one in each group is.

The game is pretty fun, even if the RNG is incredibly unforgiving.  You always have the chance to pull up random junk, even if you only have one fish left in an area, you need that fish to progress, and you have a bait that it likes.  Sometimes, the RNG just shits on you.  There's no better way to describe it.  Also, the game tells you that mixing baits improves the chances of getting larger fish, which is necessary to complete in-game challenges, but I haven't noticed any correlation between the number of bait I mix and the size of the fish I catch.

Powering up and improving your fishing rods uses a fairly straightforward crafting system, but oh boy does it ever drain your in-game money.  Everything gets more expensive the farther you go.  The best rod in the game reportedly takes 1.2 million to max out, and you can't even hold that much money at once.

You actually benefit from being a completionist early on in this game.  A good number of fish show up in multiple places, so if you catch them early on, you don't have to worry about them later and can blitz your way through islands only having to catch the fish that completes the challenge for a given fishing spot.

Also, you can farm for money, rank, and rods.  On the first island, the fish you have to catch to clear the island coughs up a good amount of money and rank points, and being a three-star fish, gives you a chance at a two-star or three-star rod.  Combining rods and improving their stats is directly related to your success in this game, so you'll probably want to farm at some point.

Adding some spice to the proverbial gumbo are the mysterious fish available in some locations.  You can't see what bait you need to catch them by default.  The only way to find out is through StreetPass.  Every 10 times you StreetPass the same person who doesn't have the game, they'll tell you about one of the mysterious fish.  If you StreetPass someone who has the game and has already spotted one of them, they'll tell you about it.  Special Miis always tell you about one of them.

Regardless of how you find out about it, its location and the necessary baits get revealed for that session and that session only.  In the case of finding out about the fish from someone who already owns the game, you get to continue from where they left off trying to catch it.  If you don't catch it, you'll send it to other owners of the game and they get to try from where you left off.  As you could infer, they take a lot of effort to catch, so hopefully you have more than one of the baits that you need.  So far, I've seen and caught one mysterious fish, due to the requirement that you have to have completed the island where it can be found before people will tell you about it.

Feeding frenzies happen every now and then, and are denoted by the water sparkling.  The sparkling gets more and more noticeable as the frenzy gets closer to happening.  Once it starts, you get to tap icons on the touchscreen in a panic and catch tons of fish without using any bait at all.  These happen fairly often, and are a good source of extra money and rank points.  Occasionally I've gotten a species I haven't caught before from a frenzy, so be on the lookout for that.

Overall, I'm not disappointed with my purchase in the slightest.

Saturday, June 6, 2015

Fossil Fighters: Frontier - Quick Addendum

I can't believe I completely forgot to mention the game's StreetPass functionality.  It's actually really good.

Once you get past a certain point in the game, you gain access to a number of NPCs and other things to interact with.  One of them is a trainer that lets you train your Vivosaurs to get them experience and possibly level them up outside of combat.  You get two choices here:
  • Daily Training, which is cool because if you don't get a lot of StreetPasses with data for this game, it means you can still make use of the trainer.
  • StreetPass Training, where you can set a greeting and a single Vivosaur to send, and other people can train their Vivosaurs using yours (and vice versa).
Choosing the right Vivosaur to use for training is important, because if you choose one with an elemental advantage, it gets bonus points.  It's also far more advantageous to select a Vivosaur that's significantly below the level of the one you're training with, because it'll get more points than if the two are closer in level.  I fully recommend doing the Daily Training, because it lets your Vivosaurs train with each other.  Daily Training lets you train a maximum of 10 Vivosaurs, and while each StreetPass gives you one Vivosaur to train with, the game maxes out at 25 StreetPasses.

It's worth noting that the game decides when you can do Daily Training again by the clock on your 3DS, so maybe there's potential for an exploit if you keep changing your date.  Or maybe they thought of that, like how some games stop giving you daily things for a couple days if you change your system's date/time.

Now, since I use HomePass, for any game I can usually get a lot of StreetPasses to utilize their StreetPass functionality.  Even after HomePassing for several hours, two days in a row, I have yet to get a single Fossil Fighters: Frontier StreetPass that wasn't one of my 3DSes.  In comparison, I can easily max out the StreetPass queues for games like Bravely Default, Super Smash Bros., and even Ridge Racer 3D.  This is probably an indicator of the popularity of this game.

So, in summary, the game's StreetPass functionality is really good, but good luck getting the StreetPasses to fuel it.  Definitely make use of Daily Training, though.

Thursday, June 4, 2015

Fossil Fighters: Frontier - First Impressions

It took me until now to get around to firing up the game, even though I got it with my New 3DS.  The game is more or less what I was led to believe it was from the eShop description.  I played the entire introductory portion of the game, up to the point where you can travel to other regions.  This took about two and a half hours, some of which was derping around, but I stayed focused for the most part.

In a nutshell, you drive around in your vehicle, called a Bone Buggy, and dig up dinosaur fossils.  You then revive these fossils to create what the game calls Vivosaurs.  Vivosaurs have elemental affinities (Water > Fire > Air > Earth > repeat, plus Neutral) and attack abilities, and you use yours to fight other Vivosaurs.

I'm actually kind of surprised.  For a game whose ESRB rating is E-10 (Everyone 10 and over), the game sure throws a lot of stats, indicator symbols, and mechanics your way.  I'm still trying to figure it all out.  It has various conveniences that make me think it was targeted at a younger audience, but at the same time, it's got the complexities of a game meant for an older audience.

Since I'm sure you'd like some examples of the conveniences and the other things that make me think it's targeted at a younger audience, I'll list a few.
  • Each Warden Office is laid out almost identically with regards to critical NPC locations and other things you'll need to interact with.
  • Each explorable area contains several "service stations", which function as fast travel as well as completely refilling your battle items on demand.
  • If someone in the current area absolutely needs to talk to you, they run up to you and stop you in your tracks.
  • Similarly, while the location of your objective is shown on the map, you often can't get anywhere near it before being interrupted by the next event.
  • Each Vivosaur has a few "fluff" stats such as diet (herbivore, omnivore, carnivore), region (where it can be found), type (related to species), original time period, etc., that don't seem to affect anything.
  • On several occasions, NPCs have given me, the player, life advice, such as "always have good manners!".
Yet, to contrast, in battle you have:
  • Elemental types, with the aforementioned strength/weakness circle
  • Stances, with strengths and weaknesses to other specific stances
  • Accuracy, so attacks might not always hit
  • Critical hit chance
  • Status ailments
  • A Boost Gauge that goes up as you do regular moves, and unleashes a special ability when you fill it up
  • Not in battle, but nowhere else to put it: when digging up fossils, if you're not careful you can damage the fossil and this affects the Vivosaur's strength
So, yeah.  It's having a little trouble deciding what its target audience is.

The graphics and music are fine.  I have to give the game a knock, though, for the lack of configurable controls.  There are a lot of different things to do that have unique control sets, but surely the driving controls could have been made configurable.  In addition, I find the fossil-digging controls to be kind of awkward.  You dig using the touchscreen, and pan your view around with pretty much anything else.  It's lacking the ability to zoom in/out, which I find myself wanting pretty much every time I'm digging stuff up.

The game also has some things you can unlock by way of scanning AR cards.  There are 11 in total, and you can find all the AR cards here.  Even though that's the official link, they wouldn't scan for me there, but all of them worked when scanned from this page instead.  No need to print them out, just load up the page and scan them directly from your monitor.  It's a bit finnicky, so be patient and hold your 3DS steady.  From these AR cards, you can get 9 Vivosaurs and 2 Bone Buggies.  This stuff can give you a jump start in the early game if you're having trouble, and later on it's necessary if you're going for completion.

There seems to be a wide variety of Vivosaurs available to find and use, and each has a normal set of fossils and a rare set.  The rare set gives the Vivosaur different skills in battle, and you can swap them out if you have them available.  Battles themselves are turn-based, with up to two AI-controlled allies whose Vivosaurs you can buff during battle but otherwise can't affect them.  Your Bone Buggy is also upgradeable and customizable, and more options get unlocked as you progress through the game.

Overall: It seems like a game without a lot of depth at first, but... so far it's just been a lot of fun.  It does seem a little confused about what its target audience is, but if you can overlook that it's an enjoyable experience.