Being Entrepreneurial

Chartopia (the massive RPG random table library and editor) seemed like my best chance to date to make a piece of software that earns more than a token amount of pocket money.

How wrong was I.

Optimistically this project may just be a ‘slow burner’ so for the time being I’ll chip away at features. I thought the pain points we were trying to solve where perfectly valid though.

What is Chartopia trying to solve

So many books!

I thought one of the best selling points was that Dungeon/Game Masters would be the ability to leave all the books at home. Have you seen some of those game books? They’re huge. Try bringing those to a house party.

Just like Serato solved a massive pain point in the DJ scene by allowing DJs to leave their crates of music at home, I hoped Chartopia’s ability to have all of a DM’s charts in an easily searchable and manageable library would be a tempting prospect.

Streamlining play

Roleplaying games certainly aren’t the fastest moving activity out there so anything to help avoid flicking through books and doing complicated dice rolling across tables is sure a good thing.

Next to being a resource, Chartopia is a random table editor. Some tables get quite complicated when rolling on one table requires getting a result from some other table or tables (a name generator comprising of first and last names is an example). It gets even more complicated when you want equations e.g. d12 gold pieces or perhaps d4 items from a ‘table of random items’. There can be a lot of dice rolls and table lookups.

Roll just once.

The great thing about having a finished chart (or charts that link to other charts) is that with one button press, Chartopia collates all the results together and present the resulting text and numbers to the user.

Content management

Books have tactile appeal whereby one can flick through the pages, mark them, use the index. Digital can never replicate the feel of books (ebooks are only better if you’re always on the move and need the space). That means Chartopia has to better the books in some other ways.

Ctrl-F

Yes, search. If search is better than an old-school book index lookups or flicking through the pages, then we have a winner. Searching through all charts ever created probably isn’t desirable, so Chartopia also has a folder structure. It’s one-to-many meaning a single chart could be added to many folders so it’s not like a traditional Windows/Mac file system (short of using symbolic links). This allows the DM to somewhat prepare a game or just organise their charts in an alternative way to just keyword-tagging them.

Content – The impediment (yet key) to success

Herein lies the biggest  hurdle to Chartopia being useful; content.

Pinterest is useless without content but who makes the content? The users do. But if there’s no content, why should users be there in the first place? The content is the first thing you see when you go to Twitter, Pinterest, DeviantArt. You don’t see an editor to make your own content, you see the preexisting content of others.

Unfortunately making content for Chartopia isn’t as trivial as ‘pinning’ a few images so in order to demonstrate what useful content looks like, I had to trawl the internet looking for random tables shared on blogs and .pdf files. Thankfully there are users contributing a few charts now but unfortunately the bulk of content I had to manually (via copy-paste and lots of regular expressions and implementing a .csv importer) add to the site. The best I could do given the material was sourced elsewhere, was put in a citation field.

It’s a slow process but it also helped be better understand some of the pain points of the editor. Thankfully the front page is now full of chart content for users to browse.

Potential Customers

Scott assured me there were many, many DMs out there that would find Chartopia immensely useful. It’s feeling more and more like a Trump-like assurance.

I suppose technically Chartopia is SaaS (software as a service) but I’m yet to figure out a way to monetise Chartopia. This is not good considering that servers aren’t cheap and this is costing me a reasonably amount of money dispite the incredibly modest amount of traffic.

Maybe we just need to advertise

Yeah… I may have to bite the bullet and try some of those shady-looking advertising sites. Perhaps getting some targeted ads on role playing sites may help us.

At most all we can do at the moment is post articles, share via word of mouth and get some blog time on other sites. Scott has been writing articles about Chatopia at Nerdarchy.

Still in ‘beta’

There’s the cliche that if your software has no bugs, then you’ve released too late. Well, I can tell you that Chartopia is very much released and very much has bugs. There are so many useful features that need to implemented though, that I feel that Chartopia is in perpetual beta. I suppose if gmail can be in beta for over 5 years, Chartopia can do it too.

Turning a profit

Chartopia has been (and still is) a great hobby project (albeit a very long, more than 2 years to date hobby) and I’ve learnt a lot but gosh, it would be useful if this thing could pay for itself.

Unlike Pinterest, which currently has no monetisation and therefore makes no money, I want to actually make a useful service that people are willing to pay for. I may just have to sell-out and try Indiegogo or something.

When roleplayers want new material, I want Chartopia to be the first place they refer to. It’s starting to look like a lofty goal.

Advertisements

Why just iOS?

A colleague asked me recently why I was just making Failed State for iOS. The reality is that I don’t intend for it to work exclusively for iOS as it would make an excellent PC game (given that it’s basically a rip off of PC games) but mobiles are just so ubiquitous and portable.

My clarinet and saxophone students know that I make games and sometimes inquire as to my progress. With a phone it’s a simple matter of handing it to them to have a play. I’m not someone who always keeps their laptop with me, despite my high regard for the retina Macbook Pro. Mobile phones, which we take almost everywhere these days, is the perfect platform to share things on, person to person. It’s the portable, interactive, digital scrapbook.

The fabled pot of gold

There’s a lot of commentary on the the net now (especially on Gamasutra) about the struggles of indie developers to make a living. I’ll be totally honest in saying that publishing Mobile Assault is never going to make me much (if any) money for the following reasons.

  • It’s just me and I’m too proud to share the work with anyone other than a close friends (none of whom are interested)
  • I’m no risk taker so I’m not going to quit my job to make this game and speed up development
  • I’m not exactly rich (and again, not a risk taker) to go hiring developer and artists. I may pay for some art late in development though.
  • I’m making a very niche game. This is not a Doodle Jump, Cut the Rope or Angry Birds. Mobile Assault is only going to appeal to a select group.

As a result, Mobile Assault is going to end up being a slow, slog on a labour of love on a game I’ve wanted to make for many years. The only thing that could kill my satisfaction of release is if someone does the exact same thing first… yeah… why am I writing all this on a public blog again?

Will I do a PC build? Yeah, why not. It makes sense because I have to debug the the thing on it. I really should get Unity exporting to web.

Weekly goals and realities

I got sick this week. I blame it on the salsa dancing where I go from a stupidly hot and humid dance floor to the outside night of Winter; it cools you down but I’m pretty sure the rapid temperature changes mess with the immune system to the point where the bugs get you.

And that’s what happened to me this week. Nothing crippling but enough to lose the appetite, have the usually pleasant coffee smell make you feel queasy and just general lethargy. Still, I went to the day job and managed to drag myself to the gym once my gut didn’t feel like crunches were going to make me throw up.

Hows that for an intro?

This week it was lots of preparatory work for being able to move my place-holder units around the screen. The goal was to actually get the ‘drag-to-path’ system in place using the style used in Autumn Dynasty but good old Unity-learning-curve and life’s distractions only made this a partial success. I finally made my own Unity prefabs (they’re so fundamental it’s any wonder why I haven’t used them until now) to represent each unit and it’s gotten to the point where the press/release will select/deselect them. I even have a picture…

Super basic unit selection.

The white circle is a touch-pressed unit and all the placeholder white lines are the paths that the units are currently following. Really basic and with lots of fun z-fighting problems.

The next is to drag a path from the unit to a desired location so that the unit traverses it. Currently I’ve just got hardcoded destinations.

Sounds simple, but here’s what I observed from Autumn Dynasty.

  • When dragging the path line from the unit, the path line continually resamples itself, whether than be via simplification, smoothing or both.
  • When the final path line is created, it might totally redraw itself depending on impassible terrain. For example, a straight line drawn across an impassible mountain range will change to a line that moves around the mountains.
  • Multiunit selection and moving will draw multiple lines; the lines will converge quite early on.
  • A path that has an end point in impassible terrain will crop the end of the path.
  • An eventual path that the unit follows will be consumed as the unit follows it.

It turns out dragged paths are quite involved but Autumn Dynasty has a winning formula that’s worthy of copying (shamelessly). Thankfully there are some line simplifications libraries out there. I’ve already gotten my hands on a C# implementation of the Douglas-Peucker Line Approximation Algorithm.

What makes a gun battle?

As I evaluate the pros and cons of Aron Granberg’s A* Pathfinding library over that of the RAIN{Indie} package, my mind continually get distracted with the idea of what is going to constitute a gun battle in Failed State. Is it going to be a straight numbers game where the troops with the greatest numbers will prevail (like Galcon)? Will there be a rock, paper scissors balance like Age of Empires or Autumn Dynasty? Will a squad be broken up into individual entities (e.g. soldiers of a squad) that have smaller granularity of info such as ammo, whether they’re aiming, loading or suppressed much like Clost Combat and Wargame European Escalation? How will tactics play a part in making the game more interesting? And once all these decisions are made, how do I balance the game mechanics so that one strategy is infinitely better than the others?

I’m getting too far ahead of myself.

I play paintball quite regularly and simply put, paintball is a game of suppression and assault. If you take more ground you get better angles on your opponent and the best way to make ground is to keep their head down with suppressive fire.

Suppressive fire isn’t necessary directed at a specific foe like a sniper taking a shot at an individual. Instead it’s firing on an area to force those within that area to take cover. There is no ‘clear shot’ so to speak.

That’s something that I want to be able to capture in Failed State. Like in Close Combat I want artillery units to potentially suppress infantry in and around the firing zone. If a machine gun has a 200m shot at a building with troops in it, I want that machine gun to be able to suppress the troops inside. This offers a tactical advantage because other infantry units can move up on the opponent with reduced chance of being seen and/or fired upon.

Those are the type of gun gun battles that I want to be able to bring to hand held devices.

UI Planning: Flow Charts

In trying to determine scope, I’m trying to ascertain the number of screens (or screens with overlays) that are required throughout my game, Failed State. I’ve sketched out some diagrams and as much as the agile way of thinking tells me I should just take a photo on my phone and upload it, it’s nice to have a formatted version… so I started looking for a tool.

What I needed was a flow chart. I think Microsoft Word has flow chart drawing features built into it, but I don’t have a license for my mac. I tried Libre Office but I got the impression really quick that was going to be a mission. I then started to look for online alternatives.

I saw Lucid Chart first, but they wanted about $3 a month or something. That sounds like a good business model and their product looks top-notch but I haven’t committed to this whole idea yet so I kept looking. Next I saw something call Gliffy but gave it nothing more than a cursory glance; then I saw draw.io.

Done!

From my 1 hour of playing around, draw.io seems like the perfect example of a web application. Drawing feels like a desktop app and my chart saves automatically to my dropbox account. Funny enough, I’d just created a dropbox account yesterday so that I could link pictures on these posts I’m making (I think my web hosting service has server side wordpress restrictions so I can’t upload via wordpress).

Here’s a resulting gif from the night’s work.

The basic idea is the the Main Menu screen flows into the World Map screen which in turn flows into the Game World screen. Extra screens are displayed depending on whether one off missions are selected or a campaign is in progress. It’s definitely not a complete drawing; the three adjacent Game World screens probably need a container box around them and there are no supplementary screen such as Settings, Leaderboards etc.

As mentioned in a previous post, for now it’s all about completing that first draft.

Learning New Languages

I haven’t done any personal projects in a while. Trying (again) to learn Spanish and also going through the process of trying to throw out or sell as much stuff (books, CDs, marbles, clothes, old uni notes, hard drive content; you name it) as possible, strangely takes a lot of time away from anything.

There are two projects I really want to do. One is a game project that I started a few months ago and involves Unity3D (finally) and Open Street Maps data, the other is some kind of web app using the latest web technologies out there; it could be JQuery, GoLang, node.js or AngularJS. For a long time I’ve always wanted to do a music related web based app, but perhaps it would be best to merge this game idea into the web app. Either way, there’s stuff to learn.

My day job is with C++ and that language is old. It takes a long time to do anything and to do anything safely (i.e. bug free). Combine that with having to work on an old code base (5+ years old) that has had a 50+ plus devs working on it who having various levels of ‘giving a shit’ and you can imagine it not being very fun to work on. There has not been a test case culture so there’s no way of knowing if your new piece of code is going to break something and the version of Qt that we’re using is too old to take advantage of the new UI templating and the tests that go with it.

It’s not so much fun and is the reason why I try and placate myself by making personal projects (if I can dare to look at a screen after a day of work).

The web dev world fascinates me. They make pretty things and always seem to be on the bleeding edge of technology. It all seems more modular and giving users a new version is just a few scripts away. You don’t see that much is the C++ world, especially with embedded. So this is why I’ve been meaning to look into these web things and try the modern approaches to ‘making shit happen’.

I started with node.js and made some callbacks happen. That was interesting; I hadn’t done javascript in ages. Then I started with GoLang and made a parser for a flat database file (from some music app). That was certainly different. I liked how the character encoding is built into the language but how the language is structured is pretty strict, which is strange to me.

I played with some jquery at the fantastic Try JQuery website and then realised later that it’s more suited to web sites, rather than web apps. Oh well, so I’m now in the process of working my way through the AngularJS ebook. As soon as I read about the $emit and $broadcast event propagations, I can finally articulate why reading this stuff is such a great idea. Qt uses signals and slots and I’ve been involved in using a project that uses global broadcasts of messages across threads. Now it’s an opportunity to see how something is ‘the same, yet different’. Will AngularJS provide a better implementation for passing messages and data about?

If you don’t know about it already, Packt Publishing is a fantastic source of reasonably inexpensive computing related ebooks (or published copies if you so wish). If throwing away so much of my stuff has taught me anything, is that books = clutter. I wish I could just digitise the lot because they take a lot of space. I have 3 boxes of sheet music filling up a cupboard! It would be great if all that was digitised, although, a few of those books almost seem like collectors items. I love text books (especially ones with a decent index), but I just can’t see me using that Artificial Intelligence: A Modern Approach, second edition by Russell and Norvig any time soon. (Hey look, I just found a scanned version from a university site)

Anyway, Packt just did an awesome $5 ebook sales so I got an AngularJS, Unity Shaders and a Unity Multiplayer ebook. Sweet.

So now it’s time to finish this brain dump post and get back to the coding.

Hello Bitbucket

When I roped in Justin to help develop Mobile Assault, we decided to use Assembla as our host for the code repository. It seemed like quite a good deal at the time. It was $2 per user plus $2 for every gigabyte of data, but thankfully we could pay in fractions of a gigabyte. All up we were paying about $5 US a month, which was pretty good considering that Assembla also provided a wiki and bug tracker.

Things change, and suddenly Assembla isn’t as appealing now. I’m currently paying $2 per person per space, where each space is a separate code repo with wiki and bug tracker. To a computer system you’d think this is not that big a deal and wouldn’t justify extra cost. What’s 100 repos for 1 user that only consumes 1GB? It seems like nothing really in the grand scheme of things, but no. Of the two projects, both of which I’m a part of and the one that Justin is, costs $6 and there is $1 worth of data.

That’s what it’s been since about 2009/2010 (I can’t remember), but my “legacy plan” (as they call it) of $7 a month is now supposed to cost me, wait for it…

$19 a month!

How the heck did that happen you ask?

Well, it turns out that the new cost is a cold, hard $19 a month for:

  • 3 projects
  • 15 users
  • Unlimited repos
  • 6 GB

That a lot of stuff I don’t need. The next step down is a 1 Project, 3 Users 1 Repo 500MB plan, but that’s pretty useless if you want to make further small projects under hosted source control.

(On a side note, Assembla is actually free if you have an open source project, meaning your repo is public).

Well, Assembla, your pricing balls-up has surely cost more customers than me. Heck, I was paying! It’s not like I was scrounging a free service out of you.

Bitbucket to the rescue

After some research, github proved to have about the same price as my “legacy plan” with Assembla, but after more searching I found Bitbucket. The price? Well, it turns out it’s free for what I need it for!

  • 5 users with unlimited private repositories (huge win!)
  • Unlimited data (it seems)
  • Wiki and issue tracking tools. The wiki is also under source control, which is useful

Even better, Bitbucket has a slick modern website that is low on clutter and easy to navigate and use. The migration was very easy. I was able to import my three Assembla repositories by merely providing Bitbucket with the url of each git repo, all within the browser thus no messing with files on my machine.

Assembla – the evolution

Don’t mistake this post as hating on Assembla. I think part of what happened is essentially a change in business model. About 3-4 years ago, their service was quite simple and straight forward. They offered exactly what an Indy developer needed; a source repo, bug tracker and a wiki.

As you can see from their current product offering, there is a lot available. This makes good business sense because enterprise level customers are very lucrative. The problem is that during this evolutionary process, there has become a gap in their pricing model to cater for small Indy teams of 2-10 people. Disk space is super cheap these days, so the only appropriate pricing metric is features and to a far lesser degree, the number of users (because of simultaneous connections to servers, I suppose).

$19 US is peanuts to a team that is actually making lots of money, but when the Indy dev is really just a hobbyist who is making enough in sales to pay for coffee, then $19 increments starts to mount up.

Competition at its finest

It’s great seeing github and bitbucket offering an alternative to Assembla. Now I just have to get my team from 2 to 10 people to justify the $10 a month plan. If I was a part of a 10 man team, I’d gladly pay that, but at the moment it’s just me. Coder-loner 😐