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

 

Dice Calculator

For my first application to publish across platforms, I wanted to write a dice calculator.  Basically, it is an algebraic calculator that supports dice notation.  I wanted the application to be complete free.  This includes no in-app purchases, no ads and no up-front costs.  Initially, I wanted to target Windows Phone and Android Phones.  I have the desire to target iPhones, but I don’t own one, so I wouldn’t have a means of testing it.

Links to download:

Here’s a screenshot of the first release

Starting screen for the dice calculator

Starting screen for the dice calculator

Pretty basic, huh.  Here’s a quick rundown with some examples on how it works.

0-9, ( ), / x + and – and = work pretty much how you would expect

the ‘d’ key is used to indicate ‘dice’.  For example: D6 equals a six-sided die.  D20 equals a twenty-sided die.

You can put a number before the ‘D’ to indicate how many dice to roll.  So, 3D6 means to roll three, six-sided dice and to add their results.  If you type that into the calculator and hit the ‘=’ button, you will see the formula in the top window, the total in the window just under it, and a breakdown of your rolls in window at the bottom of the application.

This screenshot shows a sample roll

A sample roll

The ‘K’ key means to ‘Keep’ the highest rolled specified number of dice.

The above example show us rolling four, six-sided dice and keeping the highest three dice.  The window at the bottom shows the breakdown.

On the left-hand side, some quick keys are provided for common types of dice, usually used in role-playing games such as Pathfinder and Dungeons & Dragons.

Once a ‘roll’ has occurred by pressing the ‘=’ button, it will change to the ‘Roll Again’ button so you can quickly re-roll the same formula without having to type it in again and again.

The M+ / MR buttons mean to ‘Add to memory’ and to ‘Read from Memory’.

Adding a formula to memory

Adding a formula to memory

The above screenshot shows adding a formula to memory.  You can give it a name so it can be recalled easily.

For many role-playing games, one might have different characters with different skills, bonuses, etc…  I added the ability to remember formulas into different profiles.

Memorized formulas under a specific profile

Memorized formulas under a specific profile

Profile selection screen

Profile selection screen

 

That’s about it for the functionality.  Small, clean and with a singular focus.  If you have suggestions or comments, please let me know.