PAX East

We went to PAX East to represent Machine Code Games at the Mesa Mundi booth. PAX East is held each year at the Boston convention center and draws some 90,000 people.

Machine code games was assigned one of the touch tables at the booth and we ran demos of our software. The booth was very busy and people were playing our games almost all the time. We were very happy with the reactions that we got from people. They seemed to really like the games and were always impressed with the touch hardware. You can see more pictures of the booth during PAX here.

Continue reading “PAX East”

Simultaneous Pickomino

After completing the AI for Pickomino I wanted to play against it and watch it in action. So I decided to create a version of the game for our touch table. I wont be trying to sell this game since I don’t have the rights from the creator of the board game. So it will just be for our own use.

The game came together pretty quickly. I spent a day or so learning Photoshop and creating graphics. Another couple of days building the game logic and integrating the C++ AI. Another day adding “simultaneous” mode. And a final day to add animations and work out bugs. Here is a screenshot of the final product.

Continue reading “Simultaneous Pickomino”

Pickomino AI

Pickomino is a dice game where each player takes turn rolling eight, six sided, dice. The player tries to build up a high enough total of dice to capture one of the available tiles from the board or from another player. To build up a die total, the player picks a set of dice all showing the same number to save. The player then re-rolls the remaining dice. Each number can only be saved once. If you can’t pick a new number after a roll, or don’t build up enough points to claim a tile, you scratch and have to return a tile. Full rules are here(PDF).

After playing the game a few times, I began to wonder if this game could be “solved” by a computer. Would it be possible to consider all the possible sets to save and all the possible rolls that would result for all the rounds in one player’s turn to determine their best choice.

Continue reading “Pickomino AI”

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”