What does your application (or extension) do? What business problem does it solve?
Birthright Campaign Manager (http://brmanager.codeplex.com/) is an open source role playing computer aid for Birthright (http://en.wikipedia.org/wiki/Birthright_(campaign_setting)), a campaign setting for Dungeons & Dragons. Birthright differs from a normal role playing game in that players not only play characters, but their characters also rule realms, guilds of thieves, colleges of sorcery,... That "strategic" part of the game requires quite a lot of accounting: taxes, laws, commerce, trade routes, land and naval military forces,... It is not very hard for a player to keep track of his own realm and update it, but the game master usually has to handle a few surrounding realms to act as friend or enemies of the players, which gets crazy very fast. Also, it is hard for players to consult information of the surrounding realms, as the game master has to keep two different sheets: the public information for the players (this province is Rich, Caesar is the major holder of the law on it), and the private exact information (this province produces 8 gold bars, Caesar has 90% of the law).
When the game is between a group of 4-6 friends around a table, a game master with patiente can solve these issues using paper. But Birthright is also usually played in forums, in the format of a play by email game, with have usually between 50 to 100 players. It is simply impossible to track so many players, armies, actions,... without any type of computer assisted tool.
Birthright Campaign Manager can be deployed as a desktop tool for a small game between friends, or as a web tool for a play by email game. The tool has two very different roles:
- Game master: can add, edit and see all data.
- Player: can only see the real data that he owns (his realm, his characters, his armies,...). Can make minor edits to his data. Can see approximate values of other players data.
Usually a normal game goes like this:
- A turn starts and players interact with each other and the game master to prepare what they want to do. During this process they check their own and other players data.
- The game master announces that a "turn" is going to end, so the players declare their actions: I will move my armies here, I will build a new castle, I will set new taxes on trade,...
- The game master closes the turn, and then updates all realms according to the actions. He will have to decide which actions succeed, which ones fail, update income, resolve battles,...
- A new turn starts again.
Birthright Campaign Manager in its first version helps the game maintaining all the data and presenting the correct information to each user. The next major planned version will also do most of the game master work automatically: income collections, buildings, troops movements,... The roadmap (http://brmanager.codeplex.com/wikipage?title=Roadmap&referringTitle=Documentation) contains more detailed information.
How many screens and entities does this application have?
45 entities - some entities like races or spells are very simple, but others like domains, characters, or provinces are huge beasts with lots of fields, calculated values, relations,...
68 screens - some screens are very similar, as the game master or player views of most basic entities are very similar: some fields do not appear, others are calculated differently, and Players lack edition capabilities in most places.
There are also a lot modal screens for viewing or editing simple data. Usually the user will have several screens open to consult different things, so the tool uses modal screens to consult simple data to avoid having too many tabs open at the same time. The app only has specialized windows for adding and editing data for very complex entities: armies, characters, domains, provinces, and turns. These entities are so big that usually their screens have subtabs to show concrete aspects of it on each subtab. For example in provinces, one tab for commerce information, another tab for military information,...
Would this application still be built if you didn’t have LightSwitch? If yes, with what?
I have tried to build this application quite a few times before LightSwitch existed. First with Winforms, and then going with the full WPF+MVVM+WCF+EF approach. The problem is that I became bored with the slow pace at which I was advancing. Building views, viewmodels, binding everything,... is a mechanical but slow process in general. I have done this application as a side project on my free time and the feeling of advancing fast, of achieving a result was very important to maintain me motivated and centered. And that was thanks to LightSwitch.
Also, another very important point is that I know very little web programming, and the thought of having to design a ASP.NET/HTML5+JS/Whatever frontend for the tool was very discouraging. The ability of LightSwitch to work as a desktop or web tool was a really helpful addition.
How many users does this application support?
It has been tested with five to ten users, but it is designed for a normal play by email game, which has between fifty and a hundred players. I am trying to setup a mockup game to test it in more realistic conditions.
How long did this application take to actually build using LightSwitch?
The application was built in around four months working on my spare time (not much, on average 2 hours a day). I had a very basic version done in LS Beta 1 which I reused to get me started faster. I saved LS Beta 1 in a virtual machine with a changed date so I could open the old project and copy the entities and screens, as projects couldn't be upgraded to Beta 2 and the final version.
Does this application use any LightSwitch extensions? If so, which ones? Did you write any of these extensions yourself? If so, is it available to the public? Where?
The tool used for a while the Excel Importer extension, as importing data was nearly mandatory for the project. Imagine that in a normal game the game master would need to input around 200 provinces, characters and domains, with dozens of other related records. It can take a few days to input all of that by hand, but it takes a few minutes if you import it from files (data files with the default Birthright information are provided with the tool installer). And it's much faster to edit an excel or .csv file by hand than doing those edits inside LightSwitch.
But when I was getting close to the 1.0 release I dropped the extension and decided to write my own. The Excel importer was a little too inflexible and had several issues and bugs. Instead of trying to find workaround for them, I started studying the importer code and I built my own .csv importer that I could customize for each one of my entities, resulting in a much better importing process overall.
How did LightSwitch make your developer life better? Was it faster to build compared to other options you considered?
It made my life easier in a simple way: it allowed me to reach a point where this project could be released to the community. I love making computer assisted tools for roleplaying games, but I do not have much free time, and other alternatives I have tried take too much time to build something simple. Maybe because I am not very proficient, or maybe because they are simply slower, I am not sure, but I have a lot of started projects I never manage to finish.
LightSwitch has allowed me to use the intial strength I have when I start a new project so that when I got to the point I was starting to get tired, I was so close to the end that I could use that extra motivation and do a final effort to finish it.