Updating Dice Calculator

First off, I want to thank everyone that has been using my little app for the last couple of years. I personally still use it from time to time when I’m playing a game, or I want to pass the time.

The original goal of the project was to create a cross-platform application and get experience releasing software to the various application stores and to see what kind of interesting things analytics would tell me.

In that time, there have been 20,000+ people download the application, and about 3,000 regular unique users per month still using it.

One of the unexpected surprises was to get feedback directly from my users. I had several people thank me for making it, and several of you also provided some great suggestions to help make the calculator even more useful.

So, here I am sitting at my desk, and I’m in the process of updating the application with many of those great suggestions.

I expect I’ll have a flurry of blog-post updates over this week as I try to get it updated. I mainly want to share my experience and record it for posterity.

So, if you’re following this and you have any suggestions, now’s the time to let me know.

Here we go…

The next Project…

With the Dice Calculator published to many platforms, good analytics coming in, almost 1000 users, and decent feedback so far, I thought it would be a good time to being thinking about my next project.

I would like the next project to be larger in scope, and to help me explore new concepts and development on the different platforms, possibly including things like advertising or in-app purchases, or something interesting.

When I first started showing the Dice Calculator to some friends, almost immediately, the requests came in for other features that would help make their gaming experience easier.  Things like an initiative tracker, health tracker, character sheet, etc…  Also, other game master aids such as random dungeon generation, encounter generation, random tables from the books, etc…

This lead me to an interesting question. Could I design a companion application where you could show up to a game with nothing other than your device and be able to play the entire game.

I like it.  Clear, simple vision.  With a model like that, I could imagine in-app purchases where you could add additional rules sets, or support networking with friends, etc…

Quick side note: I’m not in this to make money, and my history with role-playing games has ingrained in me the notion that the vast majority of role-players don’t have a lot of money.  Well, at least they didn’t when I was originally playing a lot.  Today, when I look at the price of books, starter sets, dice, DnDInsider subscription, etc… I’m left with the feeling that a lot of the players are just older versions of those who played a lot when I was younger, and they must somehow have more disposable income.  This may require some actual market research.  If most people don’t have extra income, then I definitely don’t want to make my application less accessible to folks just for me to experiment.

So, with that vision, I’ve started designing my next project… the

RPG Table Companion

As I do development on this project and design items, I hope to keep the blog updated and solicit feedback.  I hope you come along for the journey.

 

Current Status of Dice Calculator

It’s been about a month since I released the first draft of the Dice Calculator.  In that time, I’ve learned a LOT!  I thought it would be great to share some of the stats and learnings from the journey so far and give you a sneak peek where things are headed next.

At this time, the Dice Calculator is deployed and supported on the following platforms:

I have also built it for MacOS, but have not released it to the MacOS store.  If you’re interested in that version, or a Linux version, drop me a note.

This is what it looks like running on all of those devices (iPad Mini, iPhone 5, Nexus 7, Nokia 1520, Windows Laptop)

Dice Calculator on all Platforms

 

One of the best decisions I made was to integrate Google Analytics into the application.  This allows me to anonymously collect basic usage data about the application.  Specifically, it tracks which screen you’re on, what formulas are used and some basic system information (screen resolution, operating system, etc…).

With that information, I can go to my analytics dashboard and understand how many people are using the application, if they’re using it more than once, and how many users I have.  Here’s some examples of the stats as of right now:

417 Users

The Windows Phone is the largest audience.  I suspect this is due to being the first platform released and I suspect fewer similar applications.

Installed in 40 countries.

This one really surprised me.  I intentionally tried to use as little descriptive English as possible so that folks around the world could use the application, but this really impresses me. Top 10 countries so far:

  1. United States
  2. Brazil
  3. Canada
  4. United Kingdom
  5. Vietnam
  6. China
  7. Italy
  8. Germany
  9. Slovakia
  10. France

28,311 User Events

This data is really only since May 15th since that’s when the first version with Google Analytics went live.  The biggest event is people actually doing a calculation, with it being almost a 50/50 split between folks manually calculating by using the number pad, versus those who use the saved formulas. Top three formulas are d20, 4d6k3 and d100.

0 Crashes or Exceptions

I’ve not had any reports of crashes or hangs from the released versions.  This makes me feel good.  (if you’ve had a crash or hang, drop me a note with a repro).

Next Steps

Well, with a good version out for everyone to enjoy, I thought it would be a good opportunity to start on my next project… The RPG Table Companion!  I’ll have some follow-up posts to this one to describe the vision and timeline for getting it out to folks and how you can participate in the design!

 

 

Finally Deployed for iOS – iPad and iPhone

As of yesterday, June 6th, 2014 @11:55am PST, my Dice Calculator App went live in the iOS store.

Image

I had actually submitted it almost a week earlier on June 1st.  From that point, it sat in a nebulous queue known as “waiting for review”.  Given the amount of work to submit the application, and reading through their submission guidelines, I was almost positive that the application would be rejected based on some nuance of how I spelled a keyword, or that a picture wasn’t exactly the right size, or that the reviewer didn’t think it met with the high standards of Apple UI design.

Happily, I’m passed that now, and the application can be downloaded at

https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=884855002&mt=8

 

 

 

Dice Calculator – v1.5

I’ve just posted an update to the Dice Calculator to include many updates and features requested by my early adopters.

Dice Calculator Main Page

 

New Features to v1.5:

  • Stored Formulas now allow for a description and a type for better organization
  • Better panel support for portrait and landscape modes
  • Resizable window for the Windows Desktop version
  • When rolling from a stored formula, the name of the formula is presented in the results
  • Added a detailed roll history, along with calculations and name of formula rolled
  • Added an about dialog that gives a quick overview and a link to the website for full documentation and privacy statements
  • Added a lightweight virtual table so you can share your rolls with friends

Features added to v1.2:

  • Settings dialog to control the volume of the keyboard clicks
  • Support for (H)ighest and (L)owest dice (e.g. 2d20H will roll two twenty sided dice and keep the highest one, 4d6H3 will roll four, six-sided dice and keep the highest 3
  • Splash screen was update to match the theme of the application better.
  • Added Fudge Dice support (e.g. 4dF)

Here are some example formulas to try out.  The best example is to just enter these on the calculator and you will see the breakdown of results in the roll history window.

Example Formulas (Basic):

  • d20 – roll a twenty-sided die.  Result will be between 1 and 20.
  • d8 – roll an eight-sided die.  Result will be between 1 and 8
  • 2d6 – roll two, six-sided dice and add them together.  The result will be between 2 and 12.
  • d20+11 – roll a twenty-sided die and add 11 to the results.

Example Formulas (Advanced):

  • 2d20H – roll two, twenty-sided dice and keep the highest.  If the rolls were 10 and 13, the result would be 13.
  • 2d20L – roll two, twenty-sided dice and keep the lowest.  If the rolls were 10 and 13, the result would be 10.
  • 4d6k3 – roll four, six-sided dice and keep the highest 3. If the rolls were 1, 3, 4, 4, the result would be 11.
  • 4d6H3 – same as 4d6k3.
  • (6d6+3)/2 – roll six, six-sided dice, add three, then divide the final result by 2.
  • d6d10 – roll a six sided die, and then, based on the result, roll that many 10 sided dice.

Rolling at the table with friends (requires network connectivity)

One of the new features is the virtual dice table.  You can connect from the bottom of the Roll History panel by pressing the ‘Connect’ button.

Dice Calculator Table Connection

This area is still under development, so the workflow is a little awkward, so please bear with me.

When the button is first pressed, it will attempt to join a lobby.  If successful, you should see the status message at the bottom change to ‘JoinedLobby’ and inside the roll history it should state that you are in the lobby.  The Connect button will change to ‘Join Table’.

In the Lobby

 

From here, pressing ‘Join Table’ will display the connection settings dialog to allow you to enter a table name and a player name.  The defaults are ‘General’ for the table name and ‘Unknown’ for the player name.

Connection Settings Dialog

You can leave the defaults, or specify your own values.  The important thing to note is the following:

  • The Table Name needs to be the same name used by the people / devices you plan on connecting.
  • The User Name is up to you, and multiple people can share the same name.
  • There is no password or other privacy options. If you use a common table name, others may just happen to pick the same name and drop in.

Once connected, your rolls will be shared with the table.  If you used stored formulas, then the names of the formulas and the dice rolls will also be broadcast to the players at the table.  I plan on expanding this concept greatly with a new application in the future, but wanted the Dice Calculator to be capable of participating at a virtual table.

Sharing Profiles

One of the new features is the ability to share a profile.  This is done by connecting two or more people / devices to the same virtual table and then bringing up the Profile Selection dialog and pressing the ‘Share’ icon on the left.

Choose Profile screen

This will transfer the profile to everyone at the table and add it to their list of profiles.  I personally use this all the time to move my stored formulas between my desktop and my phone or tablet to save time!

WARNING: There is no confirmation when you receive the profile.  Also, it will overwrite the profile if one already exists with the same name.  Use with caution.

Releasing to the Market

I’ve release this to the Google Play, Windows Phone and Windows Store.  The latter two are pending approval for publishing.  I’ve also added a link to the desktop version on my site http://dungeonz.com

Let me know what you think!

 

 

Publishing the Dice Calculator to the Windows App Store

Finally!

After creating the Dice Calculator for the Windows Phone and Android, I wanted to get the application out for the Windows Store.

Design Changes

More real estate for user interaction, bigger screens, and an ever hungry desire to add more features meant I had my work cut out.  First things first…  Take advantage of the larger screen sizes typically found on computers and tablets for Windows.

Image of the Windows Store landing page for Dice Calculator

Dice Calculator in the Windows Store

This required me to scale up from the smaller layout necessary for the phones.

This screenshot shows a sample roll

This screenshot shows a sample roll

Additionally, I would now be able to have the saved formulas shown all the time.  I added those panels to the application and started it up.  Hmmm.  Not much of the screen real estate utilized.  I guess that means I need a new feature 🙂

I was always planning to add a roll history.  So, I created the third panel.  There.  That was a little better.

I had to scale many of the graphics up and make them resize to support different displays.  Fortunately, NGUI for Unity makes that relatively simple with the anchors.

Playing with it on a tablet, I also discovered that the hit region for many of the icons (i.e. close, add) were a little too small and needed to be scaled up.

New Features

Roll History – This is a feature where the last 60 rolls are preserved in a list so you can refer back to them.  Why 60? Just a place to start and not get the app bogged down with too many items.  I expect I will expand this to support a larger list and the ability to save the history or clear the history.  But, I’m a big believer in keeping it simple until someone asks for it.

Virtual Table – This is a feature I personally wanted.  A means of sharing the dice rolls with a group of friends at a gaming table.  After doing a bit of research, I decided to use Photon Unity (PUN). The interface was relatively easy to integrate, and the best part was their proven track record for supporting many different platforms.  The virtual table works a little like a chat-room. You can specify an arbitrary table name and a user name of your choosing.  There are no passwords, so anyone can join anyone’s table if they know the name.

Image of the connect dialog for the dice calculator

Dice Calculator Connect Dialog

Once connected, any rolls you make will show up in the history under your name.  The small box area under the roll history will show you others at the table.

Publishing

First Attempt – With the features in, and the basics all done, I was anxious to publish to the Windows Store, even though there was a couple of minor bugs and one semi-major bug where the on-screen keyboard will not display on a tablet when you press in an editable field.  I packaged everything up, created a large set of art assets (i.e. icons, splash screen, store graphics, etc…), created a description, link to my website, link to my privacy policy.

Wait…  Link to my privacy policy?  Yes.  It turns out that the last feature of the virtual table, requires a privacy policy since it sends information across the network.  No problem.  I’ll just go to my website and add the page…

Updating the website

This turned out to not be so easy.  While I had my page archived, I no longer had a means of rebuilding it.  The last time I did any meaningful work to http://dungeonz.com was about four or five years ago.  I’m in hurry.  I just want things to work! (welcome to my insanity).  So, I decided to blow the entire old site away and create a new one.

Awesome.  I’m thinking Visual Studio Online, Windows Azure, MVC, Unit Tests, etc…

I jump right in with both feet.  I setup my accounts, or connected them (many I already had from other experiments).  I went to Visual Studio and create a new web project with MVC and unit testing.  Blam.  A new site.  Connected it with Visual Studio Online and Azure for publishing to my site (it was already hosted there).  Build / Publish, new site up.

Well.  The template site was up.  Now I needed to learn a few things to get the site to look more like mine.

Short story… I started making progress, but I don’t have any experience with MVC and unit tests directly.  I send out a call for help and one of my friends, Missy, came to the rescue and helped me get things going.  She showed me how to add a new controller, a new view (for the Privacy page) and some basic unit tests.

Back to Publishing

Okay.  I now have the link, so I go back to the Windows Developer Dashboard and edit my application information to include the link to my Privacy Policy.  I do a quick check to make sure I have everything ready and I hit SUBMIT.

Now the waiting begins.  There are many stages an app submission goes through from validation to testing to certification to release.  This can take up to five days.

The next day (about 18 hours later), I receive a notice that my submission has FAILED!

I follow the link in the mail to find out why…  Two things it turns out.  The age appropriateness and my privacy policy.  It turns out that since it was a simple calculator, I marked the application as being appropriate for ages 3+.  That isn’t allowed if you have networking and you don’t provide parental controls.  The suggestion on the site is that I set it for 12+.  Easy…

When it came to the privacy policy, I was confused…  I put the link in the description.  Reading the error closer, it turns out that all Windows Store Applications must also have a link to their privacy policy within the application, via the settings panel.  Whoops!  I know I didn’t have that.  Additionally, I wasn’t even sure how to add it.  Time to do some searching on the web.  Fortunately, I quickly came upon an article that described how to add one in general. All I had to do was adopt it to my Unity application.

Trying to publish again

With the application updated, I spent a few minutes also fixing up a couple of bugs I had found the day before.  I rebuilt, uploaded my packages to the developer site and submitted again.

Success

Four hours later, my application was approved and published to the store.

I’m very happy to have met this milestone.

Next steps will be to publish the tablet version for the Google Play Store and then onto some new features!

Next Steps for the Dice Calculator

Publishing

The last week has been a busy week.  Since publishing the Dice Calculator to the Windows Phone Store and the Google Play Store, I’m up to about 70 installs.  While that may not amaze most folks, I’m excited it’s starting to pick up.

Feedback

My friends were the first to download my app.  Needless to say, since it was my first app published, I was a little excited.  Within a few hours of them picking it up, I was already getting feedback.

  • The volume of the clicks is too loud
  • How do I roll two twenty-sided dice and get the highest or lowest
  • If I enter only a decimal and press the equal key, the app crashes
  • How do I roll fudge dice

Making Changes based on Feedback

Awesome.  Loved it.  Real people, real feedback.  The next morning I awoke early and pounded out the fixes!

  • Added a settings dialog where you could set the volume for the application
  • Added support for H-high and L-low dice (e.g. 2D20H and 2d20L)
  • Fixed the bug with the error handling in the parser
  • Added support for a die type of ‘F’ for Fudge (fudge dice have two +’s, two -‘s and two blank sides)

While I was at it, I wanted to add some analytics to the application so I could understand how others around the world would be using the application. If anyone is curious, I went with Google Analytics.

Republish

With all of that done, I republished the updated version to both stores.  It is certainly faster subsequent times.  Well, except in the case of the Windows Phone Store.  The first couple of updates, it usually only took about two hours.  After adding the analytics, it took more than a day.

Next Steps – Windows Store Version / Tablet Version

Now I wanted to put the application on the Windows Store.  This turned out to be a little more challenging.  First, there is a lot more real estate on the screen.  On the phone, I need to keep things large and accessible to touch.  On the tablet, I can afford to utilize more space for my application and add some new features.  Here’s the abbreviated list of features I wanted to add.

  • Revise the visual layout to take advantage of the additional real estate
  • Add support for a dice roll history
  • Add support to connect with friends at a virtual table and share dice rolls

This was a little more ambitious than simply porting the application directly.  It took me several days of coding to get the layout updated, add the history and the virtual table work.  Here’s a screenshot of where I landed.

Image

The application has a better flow to it now, and in my early testing with a couple of friends, it was well received and generated a lot of interest in possible future features.

At this time, I’ve submitted it to the Windows Store.  It can take a few days to get out there.  In the meantime, I’ll start updating my main website.  I’ll save those details for the next post