Digital Dollhouse is a virtual world where girls of all ages are empowered to become their own interior designers. Members can paint, furnish and decorate their own virtual dream houses complete with plants, pets and dolls, and even purchase and regift items in a virtual economy.
Designed and built in Drupal from the ground up, Digital Dollhouse uses Drupal as a front- and back-end engine and Flash for the primary front-end game play. Drupal was selected as a development platform because of its robust and extensible framework and excellent integration with Flash/Flex applications.
The high quality and availability of third-party modules greatly helped in the decision, as well. We found that Drupal is an excellent choice for managing virtual worlds with virtual goods and currencies.
At the time, Drupal 5 was chosen in favor of Drupal 6 because when development started in early 2008, key modules (including Views, CCK and Ubercart) were not yet available for Drupal 6. Digital Dollhouse was upgraded to Drupal 6 in early 2010.
Digital Dollhouse was created as “wish fulfillment” for girls. I wanted girls of all ages to have a realistic interactive environment that they could design and control, rather than a cartoon-like technological world that was controlled for them. I truly believe that beauty and technology can co-exist in amazing and wonderful new ways.
— Jesyca Durchin, Founder and CEO, Digital Playspace, Inc.
In 2008, Jesyca Durchin and David Schnepp of Digital Playspace chose Exaltation of Larks, a development and design firm with offices in Boston and Los Angeles run by Christefano and Lee Vodra, to lead the development of Digital Dollhouse. From the beginning, there were many indications that Digital Dollhouse would be a success. We were immediately excited about:
- Doing something that hadn’t been done before, taking Drupal and our company in an entirely new direction
- Growing the virtual and casual gaming market, thereby reducing the amount of shipping and packaging waste generated by children’s toys
- Having an opportunity to work with and learn from from Jesyca Durchin, the leading expert on the psychology of girl play-patterns; and David Schnepp, who has a strong history in business development and experience with venture capital and startups
During the course of the project, we became investors in the business and were involved in nearly every aspect of development and production, from helping draft the original design specification and planning the hosting infrastructure to writing close to 10 custom modules and architecting and integrating the work of the vendors we recruited.
We’re immensely grateful to the following independent vendors, whose successful collaboration made Digital Dollhouse an achievement they deserve to be proud of. It was clear that the team members highlighted below are true experts in their respective fields. Without hesitation, we will leap at the opportunity to work with them again:
- Scott Nelson at This by Them built the “playarea” rich media application that made an otherwise static Drupal site into an exciting, immersive playspace, and wrote custom services for the Services module he created and co-maintains.
- Eric Decker at 110 Digital created all of the 3D assets that made the virtual dollhouse a believable and beautiful playing experience.
- Beverly Tang proved invaluable by turning a beautiful and challenging design into a working theme. Beverly's work is first-rate and almost makes it unfair to other themers by setting such high standards of quality and ethics.
- Ryan Szrama, now at Commerce Guys, audited our Ubercart application and contributed several needed features to Ubercart, such as a promotions module that allowed prospective members to enter a gift code and receive a membership and a dollhouse with currency and items.
- Kai Curry and the support staff at Sundays Energy helped automate some processes and took over the site maintenance after Digital Dollhouse was launched.
- Pam Aronoff at Moxymusic scored the original music and sound textures and worked with Scott Nelson to integrate the sounds into the playarea.
The heart of Digital Dollhouse’s business model is virtual goods micro-transactions. A member can visit the online store (which Digital Dollhouse calls the “Boutique”), purchase an item and then play with it in a virtual dollhouse (which we named the “playarea”). Userpoints proved to be a robust and outstanding solution for all of our virtual currency needs. Digital Dollhouse is also greatly indebted to the developers of the Invite, Buddylist, Voting API, Ubercart and Ubercart Userpoints modules.
At the Virtual Goods Summit in October, 2008, we learned that it was disturbingly easy to create inflation in a virtual economy. In other words, if a publisher gives away too much of a currency too early or too easily, they can actually devalue their in-world currency. It’s easy (if not tempting) to give away Userpoints and we were fortunate to learn about inflation and ways to prevent instability in a virtual economy before launching Digital Dollhouse later that month at Virtual Worlds London.
It was crucial that members were automatically given points for behaviors that benefited the Digital Dollhouse community, such as logging in, inviting friends to join the site, publicly sharing photos of their completed designs, voting on each others’ designs and so on. These points were immediately redeemable for items or could be regifted to other members. In the end, our virtual currency system was able to account for a dizzying number of scenarios where members could easily do things like:
- Purchase memberships that include points, a dollhouse and some items to play with
- Purchase items with points and real-world currencies
- Purchase items and memberships with promotional codes and real-world currencies
- Give their friends points as well as purchase gifts for friends with points
- Participate in the daily design contest and be awarded points or virtual items by staff or administrators
There were three separate asset workflows that required automation. Eric Decker was in charge of the creation and production of the 3D assets. These were skinned and reduced to still images for rotation in the 2½-dimensional playarea, and for use within the Boutique and the rest of the site. Once these were delivered, Scott Nelson’s workflow brought the assets into the playarea. Kai Curry collaborated with us in developing automation for importing the Boutique images and implementing an editorial workflow for adding descriptions and other metadata to the items.
The number of items (each with a minimum of 18 associated images) was staggering and it was important to establish a naming convention that never duplicated names, was easily human-readable when looking at a folder listing and contained all the metadata usable by the automated processes. The naming convention evolved so that all item and related image names contained the creation date, a human-readable reference and some “magic” for Scott’s playarea workflow.
The unusual nature of building a virtual world with Drupal made us realize that we were in uncharted territory. The challenges of taking Drupal in a new direction were irresistible and we were excited about having opportunities to do things differently and improve on our existing practices.
One sign that we’ve succeeded has been when friends and colleagues occasionally point out to us when seeing Digital Dollhouse for the first time that the items in the Boutique are priced too low. “How can you afford to sell Ming vases for only 75¢?!” Only when we showed them the Flash playarea did they realize that these are virtual items and that each item is actually a Drupal node.
One challenge we had was how to design the database structure that determined how items behaved in the virtual world. CCK and several CCK field modules were indispensable here. Important details about each item, such as whether it was a gift or could be regifted, what the related images and Flash assets were, if it had “magical” properties and so on, were all defined by CCK fields.
Much of what makes Digital Dollhouse unique is due to the versatility of Drupal’s node system combined with the power of Ubercart. For example, when a member purchases an item (or is given one as a gift), a node is automatically generated by a custom module and then updated with the owner’s username. Once in the owner’s inventory, it shows up in that person’s dollhouse in the playarea (this is similar to how your posts show up in your tracker when logged in to Drupal.org).
In other cases, Ubercart was easy to work around when it didn’t operate in ways we wanted. Instead of using the Catalog listing and Catalog block provided by Ubercart, we used the Views and Taxonomy Blocks modules. This powerful combination enabled us to create gorgeous product listings. We shared this recipe with the core Ubercart developers at Ubercamp last year and were happy to show how it looked just like the core Catalog but was almost infinitely extensible by Views.
When we opened the site to our beta testers, the One-time login links module saved us a lot of time when we were ready to send email invitations to testers and other prospective members. This was our non-developer intern’s favorite module.
Thanks to the contributions of one tester in particular, we quickly learned that we needed to prevent members from renaming or otherwise editing photos of their favorite designs. This was challenging because we wanted members to be able to update their snapshots but not be able to edit them through the conventional Drupal front-end. Rather than use any node access modules (which, among other things, would significantly impact the site’s performance), we wrote a custom module that removed the “View” and “Edit” tabs on node pages to everyone but staff and administrator roles.
We also remove tabs from other areas like core user profiles, which helped prevent members from bypassing our custom account system and editing their accounts without their parents’ permission. In the end, we’d essentially created a custom access control module that didn’t use Drupal’s node access functions.
Another way that we worked around Drupal’s normal way of doing things was allowing multiple accounts to use the same email address. Many households with children often use one “family” account and we found some code in the support forums that enabled this, updated it and helped contribute it as the Shared Email module.
It’s not the daily increase, but daily decrease. Hack away at the unessential.
— Bruce Lee
Sometimes it’s more important to adapt to the market than to hold on to a much beloved feature. As it turned out, there were many features that were completed or in development but didn’t make the final cut. One such feature was a fully-functional trial mode where anonymous visitors could briefly play in a dollhouse with a number of items.
To accomplish this, we had a designated user account with an inventory of selected items and a special URL that, when clicked, would instantly log the visitor into the playarea. If this was a repeat visitor and a specific threshold of visits had been reached, a custom module kicked in and enticed them to sign up and become full-fledged members of the Digital Dollhouse community.
We’re proud of Digital Dollhouse and the positive contributions from our colleagues, vendors, friends, co-workers and beta testers that have made it a success. We look forward to sharing more about our experiences with fellow companies who are entering the growing virtual worlds space, and with our friends in the Drupal community.
While there are a few topics that we cannot discuss (i.e. what we’ve been referring to as “magic”), we’ll try our best to answer your questions in the comments below. Look for a “Virtual Worlds and Drupal” presentation from us at upcoming DrupalCamps and at DrupalCon Paris 2009!