PAX East

We are headed to PAX East in Boston to join Mesa Mundi’s booth and demonstrate some of MCG’s touch table software. Mesa Mundi is going to have several touch tables setup and our software will be running on one of them.

We are planning to show off the new mini-games, which are on sale now at Mesa Mundi’s site, along with Hansa Teutonica and a new game in development where players can control the action with a web browser on their phone.

D20Pro will also be on hand at Mesa Mundi’s booth to show off their role playing system. It should be an exciting weekend where we can see how people react to the touch tables and our games. Mesa Mundi has a short write up about PAX here.

Fair Dice Roller

I have finished an HTML/javascript version of the fair dice roller. The fair die roller makes a die or dice less random by tweaking the probability of each roll so that the rolls come up in the correct ratios sooner. Check it out here. Or look here for a lot more detail about what this app does.

Continue reading “Fair Dice Roller”

Review – HabitRPG

I have been using a website called HabitRPG for a couple of weeks now. It is a motivational tool and habit/todo tracking system that treats your goals like a role playing game. While there are countless ways to track todo items and several websites for tracking habits or other goals, there are very few that make it into a game. As a fan of role playing games, this gamification is an effective motivator for me.

Continue reading “Review – HabitRPG”

Violin Recital II

Tonight was my second violin recital. I started taking lessons in September of 2009 and have been playing for three and a half years. I have kept track of my practice time and am almost to 2300 hours.

This recital was much like the first. It was informal and everyone played together to warm up and then each person played one piece. This time, the teacher played with most of the students.

I was less nervous than I was at the first recital, but I still had a harder time playing accurately than I do in practice. Being nervous doesn’t help, and I am not used to playing with accompaniment.

Continue reading “Violin Recital II”

Home Inventory

We have just finished a whole house cleaning and inventory. The home inventory is something that we have done every five years where we catalog and photograph everything that we own. This activity probably sounds pretty crazy to a lot of people. It is a huge chore and consumes lots of time.

The inventory was useful when we were robbed, but that is not the main reason that we do it. It has also been fun to look back at some of the old photos of our stuff. Even if you never do a home inventory, I would recommend taking pictures of the rooms in your house.

The main reason to do the inventory is to know how much stuff you have. The home inventory is one of the nine steps in Your Money or Your Life. The point of the step is to look at the things you own with a critical eye. Which items are things that you really use and value, and which items are just a burden or clutter. Reading the book is what triggered our first home inventory in 2004. Continue reading “Home Inventory”

QR Codes

We integrated a web server with web sockets and a web browser into Torque. The goal is to allow hidden information to be displayed on a phone and to create games where all the player play on a web page whether that is on a phone, computer or at the touch table. For the phones, it would be nice if they could quickly log into the game without the overhead of typing in a web address that looks like http://192.168.1.2/<game name>/<table position>

Most smartphones have a QR code reader that can interpret a URL and open the web browser with that address. So it would be nice to display a QR code at each table position. If the player doesn’t have a smartphone, they could sit at the table and use blinds. If they did, they could scan the QR code and be taken to the locally served web page that displayed their information.

I found a C++ library for generating QR Codes called libqrencode. With some minor tweaks I got this compiling in visual studio and linked into Torque. Integrating with torque was a bit more effort. The library outputs a character array of actual text ones and zeros. To display this on the screen, I build an OpenGL texture and draw it at the position and rotation of the sprite.

Here is what our test application looks like:

Here you can see a web page being displayed by the built in Awesomium browser. The page is being served up by the same program’s built in web server. The virtual keyboard can be used to fill in the text entry field on the web page. When you press the connect button, the page makes a web socket connection to the address entered. The web socket server is also running within the application and just sends the text “Greetings!” when it gets a connection. The QR code displayed on the right can be scanned by a phone and contains the URL to connect to the local web server. When the phone browses to that page, they see the same page as displayed within the application.

Now that all the technologies are integrated. We are ready to put it to use. We have two plans for this system. One is to replace the hidden information areas in the games “Temple Raiding” and “Hearts”. The other is to create a new game called Clever Blitz where the players compete in a series of extremely short mini-games. Each mini-game would be displayed in the web browser.

Web sockets and Mongoose

A couple of weeks ago, I experimented with using bluetooth to communicate hidden information from a game to a phone held by the players. While the prototype worked, there were issues with client side logic and lack of support for iOS.

Another way to achive the goal of displaying hidden information on the phone would be to create a web page that the phone could access. In the past, we have done this by having the game state in a MySQL database and php scripts to access the data. The game server and clients would poll the data watching for updates and sending their moves. This system was cumbersome, laggy and prone to error.

However, the web page is a nice way to provide the data to the clients. It is easy to layout a good looking interface, you can use javascript to allow the player to interact with the game and all phones have a web browser. The problem lies in the communication back to the C++ game.

One solution to this problem would be to use web sockets to send data back and forth between the clients and the game. Ideally, the C++ game would serve out the web pages that the clients display too so that people buying the game wouldn’t have to know how to setup a web server.

Mongoose is a simple web server with web socket support that can be compiled into a C++ application. With a couple of minor tweaks I got the mongoose code integrated into Torque.

Adding web sockets was a bit more problematic. The support for raw web socket connections comes with Mongoose, but I needed to write the code to send and receive the messages in the format expected by the chrome WebSocket class.

Continue reading “Web sockets and Mongoose”

Experimenting with Bluetooth

One of the challenges writing games for the touch-table is handling hidden information. So far we have used two solutions: Physical blinds that rest above the sensor and block the view of the other players, and a touch-to-reveal system where the player blocks the view with their hand and touches the screen to reveal their cards.

Many of our users have smartphones, and I thought that it would make sense to let them use their smartphone for the display of the hidden information. In the past, have experimented with a web based system where the game is hosted on a webpage and played on browsers. This works, but when the game is written in C++ for the touch-table, the game has to send data to the web-server so that the clients can display it. This creates extra overhead and lag.

Instead, I thought it would work better to send the hidden information directly to the phones over bluetooth. So I set out to write a C++ server that would use bluetooth to broadcast data to Android clients. This ended up being more difficult than I expected, but I did get it to work and wanted to post what I have done.

Continue reading “Experimenting with Bluetooth”

Dead iMac

We got an iMac in January 2009 to compile Hackers of 2073 for iOS. After finishing the game, we used the Boot Camp feature to set up the machine as a Windows box and set it up in the kitchen for recipes and web browsing. The machine worked well for this use and we really liked that it was nearly silent.

A month or so ago, the hard drive died. Unfortunately it is not included in the list of defective iMac’s which were sold after October 2009, so I wanted to replace the bad drive. This is something that I have done many times on my PCs. I knew that it would be harder on the iMac since it is an all-in-one machine. I imagined that it would be like fixing a laptop. Continue reading “Dead iMac”

Integrating Awesomium into Torque

Battle Home, one of the games that MCG is developing for Mesa Mundi, has a lot of options which dramatically change the rules to the game. For previous games, we have created instructions by making one or more graphics in Powerpoint or Photoshop and displaying that  graphic on the screen. For this game, each combination of options was going to require another set of images. It would be much easier if we could create the instructions dynamically based on the options selected.

Enter Awesomium, a C++ library that lets you put the Chrome/webkit web renderer into your application. While it was not trivial to integrate Awesomium into torque it does allow us to display any HTML or public webpage within our games.

Continue reading “Integrating Awesomium into Torque”