I recently gave a presentation at the Oakland D3 meetup entitled 'Crafting Experiences with Data Visualization.' This post is an overview of the talk, along with some notes. You can watch the presentation here.
Leaderboards are a visualization of achievement. Their goal is to make comparisons between some player (or item's) ranks. This is a pretty board statement because implementations of leaderboards can be found not just in arcades, not just in single or multiplayer games, but also in non-games. There are many types of leaderboards, and can produce powerful emotional reactions
First impressions are powerful. The initial exposure to a game, book, or even web application, affects your not only your interest in it, but your perception and expectations of it. Scars of the Untrodden is a browser based, fantasy, rouge-like map exploration game I've been working on which makes heavy use of data visualizations. In this post, I'll discuss creating the game's initial experience.
The Fog of War is a common type of game data visualization, frequently used in Real Time Strategy (RTS) games. SVG Filters can be not only a powerful prototyping tool, but also an easy way to achieve impressive visual effects for browser based games. This post describes a simple way to implement a fog of war effect using filters, masks, and a little bit of d3.
Games, at their core, are all about learning: spatial, temporal, motor, and sometimes even intellectual. You learn how to play within a game's rule-set, and to improve your gameplay you must learn. Data visualization provides a way to aide in the learning process; to keep games fun. If the game is no longer fun, data visualization can also be used to provide other motivators to play.
This is the last in a series of posts on logging. The first post describes how group based logging can be a powerful tool , the second post introduces Bragi, a NodeJS logging framework , and this post discusses Bragi for the Browser
I think logging is one of the most powerful tools in a programmer's toolbox. Unfortunately, it's supremely underutilized. Logging gives you data about what your code is doing. Over the past couple years, I've found logging helps me to manage complexity, communicate my code to other developers (and vice versa), and allows me to rapidly develop and debug software. As simple and silly as it may seem; for me, logging is unequivocally the most beneficial tool in my toolbox.
When trying to craft an experience, accuracy isn't always important. The user's experience is more important, and sometimes you have to mislead them a little to craft a better one.
SVG filters are a powerful and underutilized tool. Filters are a post processing step that allow you to create interesting effects by adding pixel-based effects. They can be chained together, manipulated on the fly, and applied to different elements to create powerful visual experiences.
The best data visualization choice is not always the 'correct' one. The most accurate representation of data is not inherently the best method of visualization. How well the visualization represents the data is probably the most important facet to consider when designing a visualization, but it’s certainly not the only one. It’s about what's best for the data and what experience you’re trying to create.
Five Labs was an experiment that generates a personality for you based on your Facebook wall posts. We generated personalities for over 200 million people in a week. This post describes the architecture and infrastructure behind it
This post describes how to setup CUDA, OpenCL, and PyOpenCL on EC2 with Ubuntu 12.04. These are the steps I took to install CUDA and OpenCL on EC2. This should work for any Ubuntu machine with a CUDA capable card.
This is the quickest way I've found to search for and replace every occurrence of a string in multiple files in linux.
grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g
grep -rl 'windows' ./ | xargs sed -i 's/windows/linux/g'
Remove ^M characters in VIM by replacing with nothing. ^M is really . Use
This post will cover the basics of Dijksta's shortest path algorithm and how it can apply to path finding for game development. It is my opinion that understanding this algorithm will aid in understanding more complex AI algorithms, such as A*. This post is aimed more towards developers starting out in game development or those curious about Dijkstra's algorithm, but this will be a somewhat simplification of it and discuss mainly the concepts.
OpenLayers Tutorial Part 3 - Controls. Tutorial covering OpenLayers Controls, various examples and sample code, including styling controls with CSS, placing controls outside the map in panels, and more.
OpenLayers Tutorial Part 2 - Tutorial covering OpenLayers Layers, including how it works on the backend, WMS, Vector layers, Google Maps and OpenLayer mashup instructions, and other Layer object related concepts.