Thursday, March 28th, 2013

Some interesting things I've had on my mind: Google Drive Realtime API, Catroid, Modit, Bootstrap.


Some 'splainin'

Monday, December 31st, 2012

I've begun work on an experimental programming environment called "explain". I'm lately inspired by Moonbase, a lovely system for doing animation in a browser. It's something that's been stewing at the back of my mind for some months now given form by Moonbase's wonderfully polished interface. When I'd constructed my first animation I found myself wishing that I could output a JavaScript equivalent so that I could noodle around with that instead of the quickly-crowded boxes-and-arrows data flow representation. This seems like it is a good candidate for an automatic translation, and what's more we can use it as a way to introduce a textual programming language to someone who understands the data flow picture and wants more power; say for instance the power to name a subgraph (like the group of boxes used to animate the text) and use that as a new primitive node, maybe even adding this as a new tool to the palette on the left.


Machine Languages

Monday, January 3rd, 2011 at 12:26 pm

I have recently been enjoying the design puzzle game SpaceChem. The game is played by designing nano-scale machines to assemble various chemical compounds. The design feels like a "best of" collection of elements from earlier Zachtronics games: the factory and grabbers of Manufactoid, the chemistry and rotation of Codex of Alchemical Engineering, and the layered circuit drawing of KOHCTPYKTOP. Of course it is much more as well: more mechanisms, and loads more polish. As much as I'd enjoyed the previous games, they had some major interface issues, and almost all of these seem to be resolved.


Code-worthy gameplay

Tuesday, December 28th, 2010

In 2008, Jonathan Blow, the author of Braid, gave a talk in which he described two "guiding skills", the latter of which was pushing. This is meant in the sense of pushing a concept to its utmost; given an idea, follow it through to its conclusion. Chris Hecker ranted similarly at GDC 2010. Pushing is what turns Braid's rewind from a gimmick into a gameplay mechanic. Rewind has the scary outcome that the designer can't really threaten the player with anything. Rather than shy away from this by limiting rewind, Braid actually illustrates it with the first few levels. World 2 is all about tricky platforming that would be tremendously frustrating to play through flawlessly. Since rewind allows unlimited rapid retries, though, it becomes a much more natural and forgiving problem solving experience.



Sunday, December 26th, 2010

While my main intent is to design games that are played by writing programs, I have considered a few game types that illustrate the operation of certain algorithms. Imagine enhancing any existing type of game with a scoring system based on the "originality" of the player's performance. Concretely, say that you would score fewer points for repeating the same solution every time you encounter a particular type of obstacle. The game could keep track of this by forming a statistical model of what it knows about the player's play style, and thus at each decision point it would assign a score based on how unexpected the decision was (say, oh, log 1/p). If this sounds like data compression, that's just what it is.


Shell script of the gods

Saturday, December 25th, 2010

One of the concerns I had with the programming contest problem was deciding what kind of fictional context to use. What kind of scenario could explain the need for a single automated solution to a suite of problems, even those that had already been solved?

The need to expose the player to such a test suite is twofold. We would like to introduce the player to the idea of breaking tasks down into reusable subcomponents. I thought I would give the player some small task to accomplish, thoroughly testing that the automation he produces works in every case, and then giving him access to that solution as a component to solve future problems. In this way, at least as one part of the level progression, we would coerce the player to build up a library of functionality.

The other aspect is the pedagogical model described yesterday. The gist is that a series of specific exercises are used to illuminate a general concept.


Progressive Pathways

Friday, December 24th, 2010

Part of my conviction that games can work well for teaching is a theory of instruction related to the Socratic method. It is the idea of presenting an argument as a series of questions or exercises, first of specific cases, then of generalizations. R. P. Burn's A pathway into number theory is made up entirely of questions, and explains the approach as follows…


Lost in design space

Thursday, December 23rd, 2010

I have described my game design efforts to many family and friends and coworkers, and one suggestion I have often had is to just pick a programming language and work from that. My response is that a language designed for practical use is not well suited for my learning game purposes. Clearly, rather than working around the limitations and oddities of an existing language, it would be best to develop a language which perfectly fits my needs.


Won't get fooled systematically

Wednesday, December 22nd, 2010

I once had an idea for a game about deception. It would be like a tutorial for an ordinary game, but the instructions would be wrong, and the game would berate you for trying to do it the right way. This wouldn't be too interesting, though, as the instructions would simply become noise, and the player would ignore them. But what if the instructions were needed, somehow, such as to guide your character through an invisible random maze? If the instructions were simply wrong, or intentionally misleading (as fitting the "deception" theme), then the instructions would be totally useless and the game would be impossible. But what if there was a consistent method to the wrongness? Then it becomes a much more interesting exercise.


To choose obfuscation

Tuesday, December 21st, 2010

Salen and Zimmerman's Rules of Play has a whole chapter dedicated to various definitions of "game". The most memorable one for me was by Bernard Suits, from his book The Grasshopper: Games, Life, and Utopia:

Playing a game is the voluntary effort to overcome unnecessary obstacles.


Automatic manual

Monday, December 20th, 2010

One of the goals I have in mind is a learnable programming system that takes advantage of gaming's greatest strengths. I hinted at these in an earlier discussion of The Incredible Machine. Chief among these strengths is the unique combination of automatically enforced rules and freedom. While you have rules and freedom at play in any design activity, the freedom often comes with a cost (material, risk, etc.), and requires you to enforce the rules yourself. The physical world has some nice rules enforced for you, and indeed much play and games happen there, but often the situations are so complex that the rules boil down to chaos, and the real world carries real risks for experimentation.


A model education

Sunday, December 19th, 2010

Using computers to teach has a long and storied history. The most obvious approach is to use the computer as you would in any other setting, to automate the routine tasks. This is where the venerable Scantron comes into being. A further step is to have the computer administer tests and drills completely automatically. Electronically providing material which would ordinarily be handled in lecture, or in a textbook, is the next step. But while these are all more or less effective ways of replacing parts of the classroom, they do not handle the actual teaching aspect. Spoonfeeding presentations doesn't suffice, either. The teacher must be able to make good guesses at what is going on in the learner's head, test these guesses with exercises, and handle questions. This is where artificial intelligence and cognitive science research comes into play, in the form of a field called intelligent tutoring systems. Using models of learning processes, these systems plan lessons and provide interactive exercises tailored to the individual.


Magical programming

Saturday, December 18th, 2010

As far back as 2001 I had thought about what it might mean for a game to have a "magic programming" system, where spells would be programs that interact with the world. I've since encountered the concept in many different contexts, a few examples…


A Symmetriad

Friday, December 17th, 2010

The most powerful image which stuck with me from Stanislaw Lem's Solaris (which I read in Joanna Kilmartin and Steve Cox's much-maligned translation) was that of the "symmetriad". Solaris is an extraterrestrial planet covered by what is apparently an intelligent, yet entirely alien, ocean. Many pages are spent discussing the phenomena which the ocean exhibits, and the frustration of earthly science to make any sort of sense of it. Here is an evocative part of the evolution of a symmetriad…



Thursday, December 16th, 2010

This is one of those ideas that is too clever for its own good, but it is at least slightly amusing…


The Programming Contest Problem

Wednesday, December 15th, 2010

Throughout my studies at Rutgers, I participated in the ACM International Collegiate Programming Contest (ICPC from here on). As with many other programming contests, an ICPC event is structured as a set of problem statements, which the teams are required to write programs to solve. The problems range from subtle or not-so-subtle cues to use standard algorithms, to puzzles that would be hard to solve in a week, much less the 5 hours allotted for the contest. Choosing which problems to tackle, and parceling them out to the appropriate team members, is itself a strategic challenge.


The One, The Many

Tuesday, December 14th, 2010

As with many who otherwise enjoyed The Matrix, I found the "humans as power source" excuse somewhat disappointing. I have heard that in the graphic novelization (which I have not read), an alternate explanation is provided: humans are connected to the Matrix because the machines use human brains to perform vast computations. This has some compelling implications. For one, if some percentage of the capacity of your brain is being stolen from you, the human mind may have limits far beyond what are normally experienced. For another, if the Matrix is computed within human brains, the simulation may not have to be generated as direct sensory signals and piped in from the outside. Instead, the ideas of objects and events can be provided as suggestions, and the enslaved mind can be made to fill in detail at any level, as in dreams or True Names. Most importantly for my purposes, if the human brain is being used to compute the Matrix itself, then it gives a natural explanation for the power of The One.


Incredibly Rocky

Monday, December 13th, 2010

Many of the games that I find inspirational are based on physics simulations. The example I'm most fond of is The Incredible Machine, which I played as the Windows sequel The Even More Incredible Machine. It allows the player to arrange various objects and provides a limited physics simulation to show what happens when the "machine" goes into motion. There is a wide variety of ramps, balls, explosives, and (Sch)lemmings to choose from. Importantly, however, the freeplay mode is a minor component.


In the beginning

Sunday, December 12th, 2010

Hello, I'm Adam Gashlin. I am working to design games that explore powerful ideas in computation and programming. What exactly does that mean? That is the topic of this blog. I hope that by organizing my thoughts into blog-post-sized articles I can make some progress towards concrete designs.