Game of Intelligent Design

Many years ago i worked on a “game,” where instead of playing, players wrote agent code that played the game for them. The environments were generally physics simulations, and the intention was for the code to either complete some task, or to compete against agents built by other players. (I originally wrote this as a Java applet with PHP backend, which will indicate just how long ago this was.) I called this the “Game of Intelligent Design” or (GoID) because instead of the agents evolving, they were designed by the (hopefully) intelligent players.

There were a number of people that “played” it, but interest was definitely limited (less than 100 people). I would like to think this was mostly due to my non-existent marketing skills and/or the implementation, for which i didn’t have nearly the time the build to the full vision. But i never lost interest in the concept, and after reading the new book it’s getting hard for me to not think about it. Before i go and do something foolish like trying to build it again (well, too late i guess, because i starting building a prototype photon game in a react app), I’m wondering if anyone here would be interested in playing such a thing? Or - hope springs eternal - perhaps helping to build it?

Just so summarize… The current thinking is that players would write agents that compete in various ways to survive/thrive/win within physics simulation environments. Consider such environments as cells in petri dishes, bees collecting honey, abstract agents playing capture the flag, battlebots, etc. (The original version had map navigation, food collection, and a robotic arm, competing via a leaderboard.) I envision libraries of code that players can utilize, implementing TBT concepts and such. There is a lot to figure out, and certainly some serious technical challenges to overcome (rapid agent development toolchain and potentially massive processing requirements to name a couple), but i personally think this would be super fun to play. (And seriously, people spend tons of time competing on Kaggle. Besides real-money payouts for winners, why couldn’t this be the same?) Or maybe CS professors could make their students play it?

Or maybe someone knows about something like this that already exists? I haven’t found anything, but that would be even better.

5 Likes

It never hurts to do a code project if you’ll learn from it or just enjoy making it.

If you want to make a living from it or learn game design, I don’t think you should make it. I’m not the one who feels the core appeal of what you’re thinking of though. Perhaps you could convey that some other way related to your current game concept. Just try not to half-lose a month or a year of your life.

When making a game, it’s impossible to know for certain whether it’ll be fun, so make a simple prototype. If it’s not fun and your goal is to make a living or something fun, try something else but only if the core concept still makes sense as something fun. If the core concept fails or you can’t quickly figure out how to convey it seamlessly, move on. Keep the prototype simple, so the extra stuff doesn’t hide the core concept not being fun. It’s really hard to let go of a game concept but you gotta try to kill it with fire before you get more invested, because accepting losing months or years of work really sucks.

Think about your audience, for example do you intend to teach TBT concepts from scratch? That’s asking a lot if it’s not intended for education, or even if it’s intended for educational fun. It’d probably be faster learning by reading about TBT. Seeing something in action and interacting with it provides a different kind of learning and is a way to share fascination, but the barrier for entry is too high if they’ll need to know how TBT works.

Again, keep it simple. It’s good to write down your ideas, but you’ll likely end up dealing with all sorts of specific issues, so don’t lean on those notes too heavily. There’s always unexpected problems and things you thought would work might simply not feel good in practice.
Think of it like a 1 month project is tic-tac-toe and a year project is chess. It’ll get much more complicated to address problems and for new design ideas which directly follow from each iteration of the game.

If anything is realtime as opposed to e.g. turn-based, you might need to simulate things beforehand, like 3 minutes simulating then show 30 seconds of what happened. Processing using GPUs could massively speed up parallel AI. If it’s realtime physics, it’d have to be 60 timesteps per second to feel ok and even then it’d feel a bit off (at least in the Unity3d game engine), so I don’t think it’s feasible to do AI every physics timestep unless it’s precomputed and players are willing to wait a while. Don’t try to make your own physics engine.

Think about exactly what players would do. For example, what parts of the code for the agent would they end up writing? What constants would they control? What possibilities would be obvious to the player and would the results of player actions be sufficiently predictable to reward learning? Would the player experience reflect the core appeal you’re designing around? How can you seamlessly make the player feel the core appeal you’re building around? Are there ways to break down the background information into chunks incorporated in gameplay, or would players need to learn it all in a vacuum?

1 Like

Not exactly the same thing but similar enough for consideration:

I have spent a lot of hours programming these virtual robots and it was a blast to see how the measure up to what my buddies coded.

2 Likes

Another game in a similar vein (one of the first games I remember playing BTW):

I even rebuilt this game myself a few years later after taking an electrical engineering class in college. I re-used some of the graphics from it more recently in my RL experiments (the robots’ design is quite applicable to simple SMI, with 4 directional sensors, an object sensor, an antenna receiver, 4 directional motors, a grabber, and an antenna transmitter).

2 Likes

Thanks Casey. As i mentioned, i have already built a version of this a while ago, so i have an appreciation for what needs to be built and the commitment involved. I may have emphasized the “game” aspect of it too heavily. It is a game, yes, but an educational one, and one with an agenda. What i’m trying to determine is whether anyone would be interested in playing it. Given the lack of response in that regard i’ll assume no, which is a bit of a disappointment, but also kind of a relief, because it’s saved me from a huge amount of work.

I also remember playing this game, and parts of the it have stuck with me for years. The funny thing is, I actually tried to describe this game (although failed to recall its name at the time) to @bitking, @falco, and @iller in our research meeting on Sunday.

I have a passing interest in implementing such learning games. I’ve been trying to implement a maze solving agent for some time now. This was the simplest “game” that I could think of that might be able to demonstrate some basic sensory/motor behavior for a very simple agent that I’ve been working on. The 3D maze environment is mostly finished and some of the interaction physics has been implemented, but I’ve been stuck on it for a while now as I work on other projects. These other projects have been focused on how to implement and encode the agent’s perception.

I hope to be able to get back to the maze project again soon. I’ve learned quite a lot in the past few months that I think could make a fairly interesting demo in the not-to-distant future.

In the mean time, I’m always up for a speculative discussion if you need someone to bounce ideas off.

2 Likes

you mean Reinforcement learning? (or RL as it is popularly called)? Gym has quite many envs for those, you can surely check 'em out, or build your own with python.

Hi Eric,

I can totally relate to “working on other projects”. :slight_smile: As things are currently going the prospect of finishing my idea anytime soon is also unlikely. But i’m totally up for discussions.

@matthew I read your blog and nice technique. " where instead of playing, players wrote agent code that played the game for them. ". Can you have a look at You can create computer in mind, Can you create mind in computer? ?