Sunday, April 17, 2016

Wasteland 2

I've been playing Wasteland 2 on the Xbox lately.  I loved the original, although I've never gotten into the whole Fallout series.  They left a lot of the quirks in the game, and I was panicked when my surgeon was dying and I didn't have a backup surgeon available (fortunately, I had skill points I hadn't spent).  And the part where I have to find rad suits to get from point A to point B gave me flashbacks.

Here's Kyle.  I feel bad that I haven't flushed out his biography.  Contrary to that pistol in his hand, he's usually running around with a shotgun and a machine gun he hasn't trained up in yet.  He's not great in a long range fight, but he's been instrumental in taking out several wounded enemies who get close in.  And he's got some good "kiss ass" skills modified by both a trinket and a perk.  I missed his chance to kiss ass a little tattle tale who saw me bust open some doors because I was a point short.  That won't happen again.

"I know my shotgun is big, but you seem so dangerous you don't need a gun.  You could probably take me on without one..."



Sunday, March 20, 2016

Richard III - Theatre in the Round

We went to Richard III at Theatre in the Round not so long ago (next up, The Magic Garden).  It's one of my favorites because I studied the Tudors for almost five years as an undergrad and the liminal between Richard III and Henry VII and the changes to the government were fascinating.  So this sits right on the start of what I studied.  It usually feels like one of the most accessible plays to me as well.  How difficult is to understand a piece of propaganda where the main character is pretty much a total dick.  That translates in action, if not in language.  Eryn picked up most of it, and she's not a big fan of Shakespeare at TiTR.  Guy kills all his relatives, marries their wives, wants to marry his niece (this skeeved Eryn the most).

It helps to have all the history and know that it's a piece of Tudor propaganda.  Sure there were humps and nefarious deeds, but history is written by the victor.  Even more so if you're trying to back up a claim to a crown you're not really queued up for.

Lucas Gerstner (you work at Imation in your free time, Lucas?  That's cool) as Richard III was extremely good and really captured the conniving nature of the character in his tone and action.  He really made the play.

And Tyrrel and Ratcliffe as sort of hipster/Portlandesque assassins played by Daniel Vopava and Matthew Englund?  That was a good touch. They had solid, semi-sniveling, do-what-we're-told, lackey vibe.


Unity on iPhone

I have to say, the Unity app for the iPhone seems to be lacking without bluetooth, but the fact that I can just wire it in and run my app simultaneously on a PC desktop and iPhone is amazing.  Seriously cool.  Having to download 22 GB of install because I didn't grab the iPhone/Android/et al packages the first time?  Not so cool.  But that was my own fault.  It's slick to point the app at multiple platforms with so little effort.


I know what you did in the bathroom

This does get the point across that you shouldn't use this particular stall.  But it also looks like perhaps there's some sort of bio emergency underway.  Perhaps a nice sign just doesn't cut it when it comes to conveying urgency.


Postpourri

Some links I don't want to lose, but don't want to track in my inbox...


Saturday, March 12, 2016

Keep Talking and Nobody Explodes

I've been thinking about Keep Taking and Nobody Explodes since I saw Felicia and Ryon Day play it on their show.  So tonight Eryn and I gave it a play test so I could see whether it would make a good game to play as a team building exercise at work.  I'm sold.  Our videos don't catch the back and forth well because you don't hear me, but you'll get the idea.  Great interaction game.  We set up a little station with a chair and light (and manual) outside the computer room instead of going with the VR.

I'd add that the little blurb of music at the end sounds VERY like Red Dwarf music which made it that much more fun.

Felicia and Ryon playing. You don't have to use body-part imagery when you play with a kid.

Eryn's and I play our first game...

A more complicated game...

And we blow up. That multi-word puzzle was rough. Not sure if you can hear it but at one point I tell her Uh uh, and she goes with Uh Huh. Or vice versa. I knew exactly what she'd done once it happened.
And Pooteewheet plays a few games with Eryn. It was amusing that they had a much harder time communicating what the shapes on the keypad were.

Friday, March 11, 2016

Troubleshooting

The presenter in the Scavengers tutorial barrels along faster than I can type, and I'm not slow.  I was pretty sure I'd miss something.  And I did.  My food and soda wouldn't pick up and it took me a long time to realize I'd misnamed my method with 2d instead of a 2D.

But what really got me wasn't something I could control.  When my level was resetting, it wouldn't recreate the board.  I changed from a deprecated method to the new loadscene version.  And then I started putting in debug.log statements (didn't I say this felt like old school VB once before?).  After trying to narrow it down, it appeared my Awake function wasn't triggering, so the board wasn't repopulating.  I compared their completed version with my version of the script, and the prefab, everything else, all to no avail.  Finally, in this five year old post (long before the current version of Unity) someone mentioned that Awake() doesn't always refire and you have to code it up under OnLevelWasLoaded() to catch logic after the first time.  I dropped it in there - cut and paste rather than appropriate refactoring - and success!  So for anyone else who's getting Awake() or InitGame() events that aren't firing when they expect them to, OnLevelWasLoaded() is a good place to call your logic again to be sure it triggers.

You can see the affect of the bug on not rebuilding subsequent levels in the video.

Monday, March 07, 2016

Disturbing

I messed up the animation script for the roguelike tutorial in Unity.  It's a little worrisome looking.  I said at one point he was just standing around wanking.  Seems even shadier in this video.


Saturday, March 05, 2016

Adventure Game, Progress

I took a short break during some coding to go for a bike ride.  Darn nice out there, although still a bit chilly on the gloved hands if you're moving fast.

I ran into a few issues getting the basic board controller working.  I dragged the sprites onto the game objects rather than into the sprite controllers, so when I ran the board creation loops, there was nothing to create.  Had me at a loss because my code looked spot on but I was still seeing a great big empty field.  Took a lot of work to clean it all up because modifying the prefabs resulted in messing up my board controller.



The tutorial walked me through a singleton pattern attaching the game controller to the camera by checking for the singleton instance.  I'm never going to believe a Unity programmer again when they tell me they don't know any software patterns.

There's my Win32 meltdown that crashed Unity.  I'm pretty sure it's because I made an instance of the prefab and then deleted the prefab in an attempt to make a new prefab.  I can't be certain, but I suspect it's like having an instance of an object with no object?  The important thing is not to do it - very messy.


80/20

The 80/20 rule (Pareto Principle) applies to playing around in Unity3d as well.  80% of the work comes from 20% of what you're working on.  I decided to move on beyond the Space Shooter tutorial when I got to the part where I'd need the Apple or Android SDK (or Windows).  Not that I'm adverse to using them or can't, I've used all three, but I thought learning more basics rather than significantly more configuration work was preferable.  So I started the 2D adventure game tutorial series.

1.) I was immediately amused because I'd had an intern candidate telling me about his Game Conference challenges using Unity2d and he'd discussed a "cookbook" game with a demon hooking to a JSON data source.  The Scavengers setup sure seems like the base application his team likely modified for their competition.  Wish I had played around with it before the interview.  I don't think he was expecting an interviewer who'd touched Unity (recently).  I asked a number of questions related to prefabs and how they compared to a traditional OOP structure and whether coroutines were threading (they're not, and there are a few tutorial videos out there on the topic of yielding to the main thread versus spawning new threads in C#).

2.) Getting back to the Pareto Principle, during the first real lesson after the introduction, I did something that eliminated my main camera.  So when I went to watch my little adventurer bounce up and down like he was wanking to pass the time, I couldn't find him.  Or his two wanking monster buddies.  I had no problems putting the camera back, but the default settings weren't the same.  I eventually had to boot up a new project and check the defaults.  Unity was resetting the Transform.z to 0 instead of -10 and the depth to 0, instead of -1.  I updated the values and there they were.  Like looking for a needle in a haystack.  Here's a default Main Camera, should I ever need to get my mitts on it again.  It took quite a while of dicking around with settings and looking online before I gave up and did the new project.  Seriously - I'm still trying to make it work in my head - I assume because my characters were at 0 and my camera was at 0, that I was in some sort of Flatworld universe where I couldn't see them.


Friday, March 04, 2016

Skateboard

Yesterday, during a management meeting, there was a lively - as lively as possible given the topic - discussion about the skateboard model and Minimum Viable Product (MVP).  The idea is that you focus on features rather than an end state.  So instead of building a car by creating wheels and then a steering wheel and then an engine, you instead build a skateboard, then a bike, then a scooter, then a motorcycle, then a car.  You can see it laid out here.  As a bicyclist, I have a problem with the model, because I'm happier with a bike. I never get to car.  My focus is on what can I do with less, but still get more (I can afford multiple cars, no gas, less maintenance, more "intent" in my destinations, time with friends to talk, exercise, less maintenance, I can still haul most things in my trailer >> e.g. I don't need an engine on my app, I need a two wheeled trailer).

Around here we think the car is the goal, regardless of how much you might like the bike.  One of the architects echoed that sentiment and said, "What if I want a hovercraft?  I might like a hovercraft."  To which I wanted to scream, "MY HOVERCRAFT IS FULL OF EELS!"  Now I'll never know if my coworkers are Monty Python fans or if I'd have received a written warning.  We've got a lot of new focus on MVP, so perhaps I'll get another chance.

Tuesday, March 01, 2016

Enemies

Reorg day!  The best, right? This one looks like it will be "directionally correct" in that I go from several business units to just one (but one with multiple people) all pointing at similar functionality even though it's in multiple products.  One of my rules has always been that if you can minimize business units, you're better off.  Gives your life a focus you don't get with half a dozen of them competing for your priorities and you ending up feeling like you're not making anyone feel special (or happy).

But on to a bit of code.  Although, as I think I've said before, I'm not sure this counts as anything other than configuration coding as long as I'm generally following video instructions.  But fun.  I got the enemies running with tilt and shooting, so altogether, it actually looks like a real game.

One of the things I noticed is that my bolts weren't deinstantiating even though I'd set it up.  Eventually I realized that it had to do with turning off the GameController which was the object controlling destruction of the bolts after a while.  It's just a checkbox, but it makes a big difference.  It also controls whether the enemy ships can actually destroy your player ship, so it's pretty obvious when you've temporarily disabled it.


Here's the video of the full game in action.  I upgraded to a record with sound so you can appreciate the music and the explosions.

Sunday, February 28, 2016

The Bride Wore Black

Kyle, Lisa, Pooteewheet, and I went to The Bride Wore Black at the Trylon tonight.  I thought the Jeanne Moreau series looked interesting (there are two going on in town simultaneously), and the fact that Truffaut (the director) thought Bride wasn't right for his own tastes struck me as something I'd probably enjoy, particularly coming from someone who directed Fahrenheit 451.  

It's a revenge tale and parts of it are very amusing, although it's difficult to know whether they were originally supposed to be.  Particularly the blatant sexist entitlement of all the French men (a politician to be notes that women love politicians because they can rationalize that he set aside all of France for me for one night).  Killing someone via duct-taping them in Harry Potter's closet under the stairs and the whole scene with the child who can't communicate that Julie is not his teacher are also amusing, but not outside a bit of suspended disbelief.  What still comes through is that Julie is single minded in her desire to eliminate those that wronged her, which resonates with a lot of the revenge tales that have been filmed since The Bride Wore Black.  Ebert loved it in a review written before I was born.


This has nothing to do with the movie, but I thought it was fun to poke my camera phone into the window before the film started.  Eryn is looking forward to a seat being named after Peter Venkman.




Tuesday, February 23, 2016

Unity Bug #2 - That was Fast (and funny)

Thought I'd be smart and fix the increasing difficulty Vector3 issue by just making the velocity of the asteroids faster and faster based on the wave count.  So I exposed the wave count on the Game Controller and accessed it via the move script where asteroids keep set their velocity based on a public property.

I forgot to account for my wave array being 0 based.  I failed to account for the fact that my shots and asteroids were tied to the same velocity/move script, meaning my bolts go faster as the asteroids go faster.  Perhaps not a bad thing, although strange.  And my ship's movement isn't tied to the same movement script, so it doesn't get faster as the rocks start to shoot down the screen at breakneck speed.


My first bug

I've got music and waves going and scoring and restart in my Unity3d game.  And then I tried to get fancy and add a value that slowly moved the waves closer and closer.  I thought I should add:

1.) waves move closer and closer or faster and faster.
2.) objects that aren't shot, but pass the player and destroyed against the boundary are negative points.
3.) each shot is potentially a negative point (because I'm a dick)
4.) a shot counter and objects destroyed to track a few stats to show at the end
5.) a ship destruction value (because I'm a dick)
6.) potentially a few lives with the ability to get more with a higher score.  I hope that rolls over and gives infinite lives because it would be old school.

So I started on #1 and moved the asteroids 5 units closer after the first wave.  Result...unshootable asteroids that, after the first wave, became ghost asteroids.  It seemed to be a float value and I was adding an int, so I modified it and tried again.  Same behavior.  So I use the range for the y value like the x value and added the number directly as an int and then a float.  Same behavior.  It's exciting to have a coding challenge, even if it's minor.

I feel like I'm coding VB COM again.  A lot of setting .Text against text objects and just sort of attaching things to each other to use them.  It would be nice if some of the students I interviewed played around with the Unity tutorials just long enough to talk through the object structure and why you have to locate the game controller rather than instantiate try to access it from every instance of a tumbling rock.  Good lessons there.

Sunday, February 21, 2016

Unity3d - the Asteroids

I've made it as far as adding the asteroids on a wave basis and allowing for explosions between the shots and the rocks and the rocks and the ship.

I'm also reading Nystrom's Game Programming Patterns, which make sense in the context of the mesh and transforms I'm using, but is much more about traditional software patterns.  Still, a very good read.

Peep Show

I've been watching Peep Show while I bike.  Today's viewing included The Man Show (season 2, episode 5).  I like this two part quote, spread out during the episode...

"I'm staring into the abyss.  I don't like the abyss.  Maybe I can fill the abyss with lots and lots of [business] calls."


And later... "I have entered the abyss.  I have bought a house in the abyss.  I am forwarding my post to the abyss."

And I like that bathrooms are called bogs, although that would confuse the cranberry growers in the state next to mine and, potentially, really upset them if they thought someone was defecating in their cranberry bogs.

Friday, February 19, 2016

Sploosh!

My feet are still wet.  Eryn went to bed and almost immediately started yelling, "I HEAR LEAKING! I HEAR LEAKING!"  We weren't sure what she was talking about at first, but she was right.  The seal on the bottom of her fish tank gave out and was spilling water all over the place.  We seem to have saved everyone, but it's a serious mess. Pooteewheet is down there scraping and ruining the strainer for ever being pasta-safe again.  Messy.


Minnedemo 22

I went to Minnedemo 22 last night at the Depot in downtown Minneapolis.  I tried to have dinner at Zen Box beforehand, but I was looking for food prior to 5:00 p.m., so it was a no go.  I ended up over at the Crooked Pint eating a peanut butter juicy lucy.  Good.  But not as good as the Blue Door (Longfellow) which, I have to say, is my favorite (and Eryn likes their wings; and it's close to guitar lessons) after Chetek, WI.  But that just might be sentiment speaking.

I will admit, I didn't stay for the whole thing.  I got downtown too early, so I was getting squirrely after a few presentations.  I watched Who's Driving, an app for coordinating car pools if you have kids in extracurricular events.  My sentiment was I'm really happy I never have to carpool and even consider using that app. I see the happy people on the app website and think, "They're so happy they're f***ing over their friends."

I watched Twistjam, which involved an Asian guitar player (does his race matter?) sitting on stage not really playing guitar for 7 minutes.  The app is cool, but Mike and Eryn told me you have to enter your own cords which is a pain in the ***.  They're playing with it to see what the limitations are.  It's a Rock Band style guitar-learning app.

Litejot.com, notable for being presented by a U of MN student.  Dude.  Come work for me.

Homi, which I shared with Charlotte because it was created by a Carleton econ alum.  She helped me interview an intern last week and right afterwards I talked to a Carleton intern candidate.  Most of the Carleton folks I've talked to are above average.  Which is strange for a college known for liberal arts skills.  But I've found a good prof or two with real world experience makes all the difference in the world.

And YouAreHear.org.  Well.  I played with that all the way to Izzy's where I had a bourbon izzy on a scoop of Zin chocolate ice cream.  The presenter was particularly funny and joked that he was the only person not to use the word monetized.  More of an art project than anything else.  But fun if you're wandering around downtown and paying enough attention that you're pretty sure you won't get mugged.

Vidcomet and Aurelius.  You're on your own.  Although Aurelius sounds particularly interesting to me as a manager, so I'll be checking it out.


Destroy the Object

I'm tempted to use Unity3d as an interview tool for intern/new grad candidates as a great example of the dangers of not getting rid of your objects.  It was cool to see it hang on to shot objects forever because they never ran into a border which would de-instantiate them. Why are interview candidates not infinitely smart compared to me when I was looking for a job?  Seriously - with tools like this, you should be able to talk for hours.  And hours.