FASA launches 1879 kickstarter – Geek & Dad doing computer version

November 27, 2012 by

From the FASA Games forums:

FASA’s 1879 Kickstarter is Live!

Postby FASA Games Admin » Mon Nov 26, 2012 11:14 pm

FASA’s 1879 Kickstarter is Live!It’s 1879. Queen Victoria’s armies march through the Rabbit Hole to lay claim to a new world, expanding the Empire so that multiple suns now shine upon it at all times.

These new lands are not given up easily. Descendants of the lost kingdom of Babylon fight for what they have mastered for millennia. Reptilian beings, as well, refuse to submit to the Crown without a fight.

It’s 1879, but this history is not the one you know. It’s the one you will help define.

FASA returns to the world of gaming with a bold new project, and we are launching it with an amazing Kickstarter effort that lets you become part of the story right from the beginning. With miniatures and an elegant set of rules, you can play out the key battles that will decide the fates of two worlds, and with the 1879 wargame app, you can carry the war of worlds with you everywhere! With the RPG, you can tell the stories of unique individuals who will tip the balance for all time!

Join FASA in heralding a new era of gaming, where multiple ways to play all tie into one fantastic story. Get in on the Kickstarter and help make the dream of FASA’s bold return to gaming come true!

As you may know, Geek & Dad spent this last summer building the prototype in Unity3d with art & animation by local artist/animators.  If the Kickstarter generates sufficient funds we look forward to turning this prototype into a polished game for iPad (and for other platforms, as funding permits).  We hope you’ll consider chipping in and helping us make this happen.  Thanks!

Snippy reply I made that I wanted to remember

November 22, 2012 by

Someone made a critical twitter statement that was based on a stereotype more than a cliche, but it was also kind of a cliche and couldn’t think of the word stereotype at that moment so I had to respond to the cliche aspect of it.  I kind of liked the way this came out so I’m saving it here in case I need it again :-)

Enjoy that cliche all you want but only those with nothing better to say speak in cliche.

Unity3d v4 released! Also a tip from the release notes

November 15, 2012 by

Unity3d version 4 was officially released yesterday and it has a lot of nice enhancements.  Release notes are here and are well worth reading.  In fact, one thing that didn’t feel better was the new Project Browser which is nice on a desktop with a large screen, but not so great on the 13″ MacBook Air where screen space is at a premium.  Luckily they’ve left a way to get the old single column UI back for that situation, as I found in the release notes:

You can switch Project Browser to old-style one column layout in the context menu of the window (upper right corner).

The release notes above also contain an “Upgrade Guide” that’s a must-read for anyone upgrading a 3.5.x project to 4.0 as there are a few differences that need to be accommodated.

One thing to note: If you got Unity3d v3.5 with the free Unity3d v3.5.x iOS module license when Unity3d so graciously offered that great deal, upgrading to 4.0 removes your ability to build for iOS without buying the Unity3d 4.0 iOS module upgrade.  Since you cannot open a project upgraded to 4.0 in 3.5.x, once you’ve installed 4.0 and upgraded your project you can’t build for an iOS device any more until you pay to upgrade to the Unity3d v4.0 iOS module.   As I noted in the last post, supposedly you can install 3.5.6 and 4.0 side-by-side by renaming the folder of the first install before installing the second, but I haven’t tried this yet because we’re just going to upgrade the iOS module to 4.0 instead.

Unity3d 4.0 beta first reactions

November 11, 2012 by

Downloaded and installed the Unity3d v4.0 beta this last week and thought I’d write up a few notes based on what I’ve tried so far.

I haven’t used many of the new features yet (I haven’t purchased an official upgrade and so lack the iOS support I need to actually switch in earnest), but it seems to be quite solid (no new crashes so far), though it doesn’t fix the issue I’ve run into on my MacBook Air (HD3000 graphics) where Unity 3.5.x will hang or crash. Same thing happens with v4.0 beta, unfortunately.  :-(

My first suggestion is: if you want to keep 3.5.6 you need to rename your 3.5.x install before you install the 4.0 beta because otherwise the beta will erase and install over your 3.5.x install of Unity.  Remembering just after you hit the install button and hurriedly switching to the Finder and renaming it isn’t good enough – the installer must save the FSRef or something because it’ll overwrite it in the non-default name in this scenario (whoops!).

@aras_p helpfully tweeted to confirm that renaming the Unity folder first should work, but I’ve not had a chance to test this yet.

The UI changes mostly seem like nice improvements, though the change to the Project View make it take up more screen space and on a 13″ MBA that’s unfortunate.  I’m not totally sure I see the motivation for the change and it feels weird to me as an OS X user – maybe it’s modeled on some Windows UI convention?  The decrease in screen space efficiency is definitely less than ideal for small laptop use in any case.

I was pretty excited to see the Terrain Engine getting some improvements.  In particular the mechanism to use your own shaders more easily was something I really needed/wanted.  Unfortunately it’s undocumented in beta 5 and while I figured out some of how it works and how to use it, enough of it remains a mystery that I’ve not yet figured out a solution that would allow me to use the Unity built in Terrain Engine instead of creating my own.  The biggest hurdle is that I’m not seeing how to get the base image to stop being drawn or to let me render a base image that matches what my firstpass shaders is drawing.

Our game didn’t take much in the way of modifications to work with 4.0 which was a relief.  The only change I really had to make was the change in GameObject.active and the way that game object activation works (all ancestors must be active for a child marked active to be actually activated).  We are using activation & deactivation of various versions of character meshes for LOD purposes and for switching to batchable static meshes when there isn’t animation for performance.  So this change to the way active state works was something we had to work around.  From the Unity3d 4 beta release notes:

We have changed how the active state of GameObjects is handled. GameObjects active state will now affect child GameObjects, so setting a GameObject to inactive will now turn the entire sub-hierarchy inactive. This may change the behavior of your projects. GameObject.active and GameObject.SetActiveRecursively() have been deprecated. Instead, you should now use the GameObject.activeSelf and GameObject.activeInHierarchy getters and the GameObject.SetActive() method.

Less than an hour to fix and no other problems with the upgrade – nice job Unity devs!

Now if I could just get that HD3000 bug fixed and more documentation on the Terrain Engine so I can turn off the basemap drawing I’d be one happy camper!

Compute Shaders look interesting, but the documentation implies that they’ll only work on Windows computers (despite mentioning OpenCL which we have on the OS X).  So I’m confused if they work on OS X or not.  With 4 core GPUs on the iPad 4 it would be interesting to have these work on mobile devices where appropriate also (or perhaps it’s never appropriate?).

Multiple new items in the menus relating to Animation so that’s something I need to look into, though I don’t expect it to be useful for our current game.

So, what’s got you excited about Unity3d version 4?

Geek Song #3: The Eye of the Kernel

October 26, 2012 by

The Eye of the Kernel

( Based on The Eye of the Tiger)

Risin’ up, back with the 1337
Played with time, took my chances
Gamed the system, now I’m back on my feet
Just a geek and his will to survive

So many times, it happens too fast
You trade your “indie” for money
Don’t lose your grip on the dreams of the past
You must code just to keep them alive

It’s the eye of the kernel, it’s the code that we write
Risin’ up to the challenge of our rival
And the last known debugger stalks its prey in the night
And it’s watchin’ us all with the eye of the kernel…

Face to screen, code to the beat
Hackin’ lean, hackin’ dirty
The stack is odd still we’re scripting our deeds
Making code as a way to survive

It’s the eye of the kernel, it’s the code that we write
Risin’ up to the challenge of our rival
And the last known debugger stalks its prey in the night
And it’s watchin’ us all with the eye of the kernel…

Risin’ up, straight to the top
Had the scripts, got the glory
Wrote the software, now I’m not gonna stop
Just a geek and his will to survive

It’s the eye of the kernel, it’s the code that we write
Risin’ up to the challenge of our rival
And the last known debugger stalks its prey in the night
And it’s watchin’ us all with the eye of the kernel…

The eye of the kernel…

(With apologies to Survivor)

iOS Email tip: support for email aliases

October 24, 2012 by

I don’t know why I didn’t think of this, but I use email aliases pretty extensively for my various businesses – things like sales@fubarcompany.com, support@fubarcompany.com (1) and a few to track which companies sell my email address (such as amazon_customer@fubarcompany.com, which they haven’t sold so they pass the test :) ).  This works great on OS X – just put the addresses comma separated in the Email Address field in the account setup in Mail.app and they all show up as usable “from” addresses you can choose from when composing your emails.  But the cool part is you only have the single root email box to check & look through.

I’d not found a way to do this on iOS (no comma on the keyboard when you enter the Email Address field, just for starters) and my (painful) work-around was to set up dummy email accounts but iOS kept prompting me for passwords for them which was a serious pain in the neck!

Today I griped on twitter about this not being fixed in iOS and @rdsquared pointed out that I was being an idiot and that you simply create the string of email addresses in notepad (or whatever) as me@fubarco.com,myself@fubarco.com,i@fubarco.com, then copy this string and paste them into the Email field in the mail account setup screen in Settings.  BINGO!  Works great so I owe @rdsquared a Guinness and you should buy him one also if this is useful to you :-)

Thanks @rdsquared!

(1) All email addresses used in this post are fictitious.  Any resemblance to real persons or email addresses, living or dead, is purely coincidental.

Address Book Search Unresponsive Fix

October 23, 2012 by

Address Book app in OS X 10.7 Lion stopped working – type in a search string and hit return and nothing happens. VERY annoying. This is synced via iCloud and the fix was to:

  • archive the address book (File -> Export -> AddressBook Archive)
  • go to System Preferences -> iCloud and uncheck Addresses and choose to Delete them from this computer when prompted.
  • Wait a second or two
  • Recheck Addresses in iCloud syncing
  • Wait 20-30 seconds for iCloud to resync them and voila, fixed!

(If you aren’t syncing from iCloud probably the export, then delete the address book file and then import archive will also work, but that’s a guess).

iOS 6 and auto-rotation tip

October 20, 2012 by

Upgrading an old app (and I mean *old* – code is checking for to see if we have the new iOS 3!) and ran into some frustration with rotation that the blog posts I read weren’t answering.

This app is limited (client budget prevented much that I’d like to have done) and the whole app is portrait and inside a navigation controller exceptfor the streaming video MPMoviePlayerViewController which should be able to rotate to landscape and which is presented full screen modally via presentMoviePlayerViewControllerAnimated:.  This worked fine until iOS 6 when the MPMoviePlayerViewController stopped auto rotating.

After much pain it turns out that there are only four things that needed to be done:

  1. Make sure the info.plist for the app has portrait and landscape orientations allowed (you can do this in Xcode visually via the project or target editor’s Summary tab).
  2. Have your App Delegate implement application: supportedInterfaceOrientationsForWindow: and return UIInterfaceOrientationMaskAll or UIInterfaceOrientationMaskAllButUpsideDown  (Yes, I know you don’t really want this for anything except the movie view! Be calm. All will be well :) ).
  3. Have the root view (a navigation controller in this case) implement shouldAutorotate and return NO (this keeps it and all it’s children from rotating which is what we want in this case).
  4. you’d be good at this point if you had one last key piece… which I didn’t.  The window rootViewController must be set or all of this (and a bunch of other things I tried like subclassing MPMoviePlayerViewController etc etc) will not work. Once I set this in my app delegate where it sets up the window everything worked as it should. <whew!>

If your root controller (a navigation controller in this case, but might be a tab view controller) isn’t already a subclass where you can implement shouldAutorotate then I guess you will have to subclass it to return NO.

Note: If you are supporting iOS 5 you will need to put the appropriate

shouldAutorotateToInterfaceOrientation implementations in your views and return interfaceOrientation == UIInterfaceOrientationPortrait as usual to keep them from rotating (you may have already had this, but if you set the info.plist to have no rotation then you might not have).

good luck.

Unity JavaScript/UnityScript method lookup Bug or design flaw

October 2, 2012 by

Just wasted 2 hours chasing some code that wasn’t doing what I told it to (bad code!) only to find that I’d made a mistake (of course) and the compiler hadn’t told me about it (bad compiler!).

I don’t know if the root cause is that JavaScript/UnityScript method lookup rules are completely broken and don’t make any sense compared to any real object oriented language or if this is a bug, but I thought I’d document what is an easy mistake to make and encourage people deciding between JavaScript/UnityScript and C# for their Unity development to choose C# to avoid this kind of garbage.

Here’s the situation:  you are in a script and want to get a child node of the current object.  So you mistakenly type  gameObject.Find("MyMeshName");  and the compiler is fine with this and no errors or warnings are emitted but things aren’t working the way you thought they should…

That’s because there is no Find(…) Instance Method IN GameObject or its superclass Object.  Nice of the compiler to tell you that, eh?  Oh, right, IT DIDN’T!!!  Instead it decided to do the helpful (not!) thing and call the GameObject Find(…) class method.  DOH!  This class method, unfortunately, does a Global Search and returns you the first “MyMeshName” found anywhere in your entire game.  My how completely opposite of what you wanted.  <sigh>

What you meant to type was transform.Find("MyMeshName") and then get the gameObject from the returned transform and you would have gotten what you wanted – the game object associated with the mesh “MyMeshName”.

Or GameObject should have a way to search inside it’s children without having to get the transform and search and then ask the result for it’s game object.  Seems like searching/traversing the game object hierarchy is about as basic a thing as one would want to do in a game engine, but apparently I’m confused or something…

—-

Just did a test and the C# compiler correctly tells me that there is no Instance method Find(<string>):

 

Assets/TestMethodLookup.cs(9,44): error CS0176: Static member `UnityEngine.GameObject.Find(string)’ cannot be accessed with an instance reference, qualify it with a type name instead

 

So this is seems to be either a JavaScript “feature” that is one more nail in the JavaScript coffin or a bug in the JavaScript/UnityScript in Unity 3d.

(Reported to Unity as Case ID: 492421)

Non-Profits and donation solicitation

September 25, 2012 by
I do a fair amount of donating to non-profits that are doing good work in the world and it’s always maddening when they then take this as permission to send me a bunch of email solicitations for donations (even worse, some send paper mail thereby wasting the money I sent them).  I have a friend who hates this so much he either doesn’t donate or drives to the post office to get an anonymous postal money order to make his donation by mail anonymously so he doesn’t get so much paper junk mail sent to him!
Today I replied to one such email appeal and asked why they felt that my donation was permission for them to send me an email asking for more money once a week.  In their reply they said:
Unfortunately, no one donates unless we ask them to, and the people most likely to donate are those who have donated before.  If we don’t email our donors, we go out of business and can’t do the work people donate to us for.  If we do email our donors, some percentage will never donate to us again.  It’s a catch-22 that every non-profit
suffers.

An interesting dilemma.   To me there’s some interesting psychology at work here and figuring out the optimal strategy is a fascination problem.

My quick off-the-cuff idea for a starting point to then iteration upon and refine:
  •  Send out a receipt for every donation made, by all means.
  • Do NOT send out things that are only a request for money.  Such an email has nearly zero value to the recipient (unless the recipient has asked you how often you like to make donations and if you’d like a reminder at that frequency or around a particular time of year).
  • Do send out an infrequent newsletter about great work your organization is doing with the funds I and other have donated.  Experiment with Weekly, bi-weekly, monthly & quarterly rates of newsletters to different random subsets of your donors and determine the optimal sending rate (I’m guessing it’s monthly).
  • At the bottom of each newsletter include two lines:
    •  first line:  Number of months since recipient’s last donation and a “donate now!” link
    • second line subscription option links:  Receive our newsletter:
      weekly  |  every two weeks  | monthly | quarterly | never
Then make sure the links are hooked up to a metrics engine so you can do good statistics on which newsletter frequencies produce the most donations.  Experiment with reversing the order of the two lines at the bottom to see if it matters, changing the order of the subscription options (where never appears in particular), and changing font sizes, colors, etc etc.
Tune for maximal donations now that you have data on which to base those tuning decisions.
There are probably better ways to do this, but this seems like the kind of thing that might apply to more than just non-profits.

Follow

Get every new post delivered to your Inbox.

Join 876 other followers