Sponsored By

ChipWits, the game that taught a generation how to code, is back

Developers Doug Sharp and Mark Roth walk us through the game's glorious past and promising future.

John Harris, Contributor

April 2, 2024

24 Min Read
Images via Doug Sharp and Mark Roth.

Back in the year 1984, Apple launched its bid to redefine personal computing with a new machine called the Macintosh, which came with only 128 kilobytes of memory, a single floppy drive, and no hard disk. It took a while before it became successful, and one prominent feature in that early software landscape was the coding game ChipWits, a unique title about programming cute robots to explore a landscape, collecting items and dealing with threats.

ChipWits earned a pile of accolades, was critically lauded in magazines, and directly inspired a generation of programmers. Now, 40 years later, an official remake is in the works. Doug Sharp and Mark Roth, two of the developers of the new edition, graciously took a little time away from constructing the game to answer our questions.

Game Developer: Who are you, and what is ChipWits?

ChipWits is a game about coding-friendly robots with an approachable icon-based language. It features open-ended puzzles, engaging stories, competition, and tinkering creatively for fun!

For example, in this mission, you have to collect all four items in the corners of the room. Your robot follows the program on the right side of the screen. Can you improve this program and find the most efficient way?

Doug Sharp: I’m Doug Sharp, co-creator (with Mike Johnston) of ChipWits and president of ChipWits, Inc. I was 32 when ChipWits came out in 1984, so I’m an old fart now.

After ChipWits came out, I turned my attention to interactive narrative. I created Cinemaware’s The King of Chicago, which was another bestseller. After two hit games, I was a hot property in the game industry. I had just started work on a game I called Future Cop for Activision when seizures stopped me from coding for three years. I was no longer a big deal in the gaming world. When we stabilized my brain, I dove back into coding. In '93, I was hired by Microsoft Research and worked for five fun years in the Virtual Worlds group, where we developed a cool early version of the Metaverse. In '97, I was disabled by seizures again and had to leave MSFT. The seizures damaged my brain to the point that I could no longer program. I turned to writing and wrote two humorous sci-fi thrillers: Channel Zilch and Hel’s Bet. Because of my brain damage, it took 21 years to write them. I also do graphic arts and am now working on a savagely satirical graphic novel called “Elon Musk and His Sweatshop on Mars.”

But my main project is working with the great team I assembled to release the new and much improved ChipWits.

Mark Roth: I’m Mark Roth, the lead engineer and co-founder of ChipWits, Inc., the company we created for the modern reboot of the game.

I have such fond memories of ChipWits! I first encountered ChipWits when my 5th-grade teacher, who had a Commodore 64 in the back of the classroom, showed me the game and said, “I think you’ll like this.” Little did I know at the time that the game would help kindle my interest in programming. Now, I’m a software architect and engineer working on scalable data systems by day, and by night and weekend, I’m a part-time game developer working on the reboot of this incredible game with an incredibly talented team, all of whom are doing this as a passion project!

We hope to do the original game justice with our reboot, which is geared towards modern audiences.

Sharp: ChipWits is a programming game. Players learn programming and have a blast doing so. It’s a game that keeps players up late trying just one more change in the code and then another and another. One of my favorite lines from a ChipWits review is from a Creative Computing article called “ChipWits--Bet you can’t just build one,”: “Last night my wife came downstairs at 4:30 a.m. only to witness me cursing at a cartoon robot.”

ChipWits is both a serious and a light-hearted game. Serious about teaching computer science. Light-hearted because our ChipWits wear roller skates, drink COFFEE, and perform robot music.

I’m immensely proud of ChipWits.

So, how did the original ChipWits happen?

Sharp: In the late '70s, I was a 5th-grade teacher. I taught myself programming (in BASIC) by bringing Apple IIs home on weekends. I left teaching to pursue creating educational software. I enrolled at the U of MN in the Instructional Systems program where Michael Johnston was an instructor. We hit it off and decided we should form a company to put out an educational computing magazine we called Discourse. Luckily, we ditched the idea of a mag. We started brainstorming about a game we called The Robot Thing. We made a lot of money porting games between microcomputers and saved it up to buy time to work on our game. When the Macintosh was introduced we knew immediately we had to code ChipWits for the Mac first.

The best article about the genesis of ChipWits is this 1984 Macazine review.

Looking at the comments left on posts on the ChipWits website, it's obvious that a lot of people have fond memories of the original! How was it received, and how is it remembered?

ChipWits got rave reviews. One reviewer remembered ChipWits so fondly that in 2008 he named it the 8th best game ever for the Mac and Apple II. ChipWits also influenced a number of games, especially Carnage Heart.

It won awards:

It influenced a lot of people to become programmers. Two times at conferences a person has sought me out to tell me that ChipWits changed their life. At one conference someone told me that CW has turned his daughter into a professional coder. I’m sure there are hundreds of others who never talked to me.

The prime example of ChipWits’ impact on lives is our Mark Roth. He played ChipWits as a kid and is now programming the next generation while working on high-end coding.

Roth: It’s true! ChipWits definitely influenced me a lot. I’m also struck by how many random people have fond memories of this game. I was on a plane, once, working on the reboot, and as soon as the fasten seat belt sign turned off, a passenger from three rows back got out of his seat and tapped me on the shoulder to ask “Is that ChipWits? Man, I used to spend hours on that game!” We shared stories for the rest of the flight, and he’s on our beta list now.

ChipWits Screenshot

ChipWits Screenshot

I read that ChipWits came out so soon after the original Macintosh's release that the only real choices in developing it were on an expensive Lisa workstation, or in a Mac variant of the stack-based language Forth. I find it a bit difficult to wrap my head around how that was possible to write graphic software in. How did that happen? Are you converting the game from MacForth to Unity, or just reimplementing it whole cloth?

Sharp: You’re right that we couldn’t afford $9,995 ($27,000 today) for the Lisa. I had just graduated from BASIC to Pascal in my prior porting projects. My partner Mike didn’t like Pascal, so I language-shopped and found FORTH and liked it, despite the fact that it is a strange, notoriously unreadable stack-based language.

One of its big advantages was that it was such an easy-to-implement language that it was one of the first to appear on new micros. Ads appeared in mags about a FORTH system that let you develop real apps on the Mac. There were FORTHs on the C64 and Apple II so FORTH for ChipWits it was. I knew that its simplicity would mean that a lot of the code would port straight from the Mac (I was right; about 60-70% of the code was the same for all three systems.) Because of my experience with porting, I knew how to isolate the graphics and sound from the game code. FORTH had hooks into all the native graphic systems of the machines. On the Mac, Apple introduced Quickdraw, which was an adventure in itself to learn.

Roth: The reboot is definitely a complete rewrite. The core engine is written in C# for Unity. To write the core engine for ChipWits is not very difficult, actually. We’ve had several fans write in with their own reboots, even one for Windows 3.1. If there is enough demand, we’re considering open-sourcing the engine so people can run their own simulations. If you’re reading this, let us know if that’s interesting to you!

Doug found the original source code to the game several months ago and I had a lot of fun restoring the original disks and deciphering some of the original FORTH source code. I wanted to validate that the algorithm I reverse-engineered for the electrocrabs (one of the “baddies” in the game) was faithful to the original. For kicks, here is the original code (I was impressed there were comments)!

( Creep.move)                                     ( 110584 dws)
: ?zap.cw ( sq# ---flag)
 robot.square @ = not dup not ( cw is there, zap it)
if 6 flash.cw -200 update.fuel then ;
: Creep.move ( creep#/sq# ---)
 3 irnd 1 = if  ( 33% try to move)
   dup  toward.cw   ( creep#/sq#/next sq#)
dup dup dup square.object floor@ = swap ?zap.cw and
    swap robot.square @ squares.wide@ - = not and
    if  dup 4 roll creeps( + c!  ( sq#/nextsq#) ( safe to move)
       swap destroy          ( nextsq#)
       dup room.data( + creep@ swap c!  (  store in room)
    else drop swap drop then   ( sq#)
  else swap drop       ( sq#)
  then draw.random.creep ;

While by no means the most numerous genre, programming games are still being made, by people like Zachtronics and Tommorrow Corporation, who could be seen as, in a way, carrying the torch. It is interesting how programming can walk that line between enjoyable and useful. Do you think ChipWits is more entertainment or education?

Sharp: Education itself can be entertaining. The fact that ChipWits is entertaining sucks people into the game and keeps them playing after they’ve learned IBOL. Programming itself can be addictive.

IBOL is intentionally simple so the educational part taught directly by the game is pretty straightforward (except for the FORTH-inspired stacks). Beside learning the OPs and ARGs the players learn other coding principles like conditional branching, and if they use panels the rudiments of procedural and object-oriented programming.

The real learning occurs after IBOL is mastered and the player strives to top the leaderboards on complex, open-ended missions. This is where they learn about optimization and comparing algorithms and patience. Learning by exploration and discovery is one of the best ways to learn.

Roth: By the way, since you mentioned Zachtronics, I just wanted to say how amazing Zach Barth has been in supporting our team’s efforts and how appreciative we are of that! We were designing our leaderboard system and I cold-emailed Zach out of the blue to see if he’d be willing to answer a couple of questions. He responded immediately and was super-friendly and spent over an hour with our team geeking out, exchanging ideas and sharing his experience. Those who play Zachtronics games will find our leaderboards very familiar, thanks to his influence. It was so inspiring for us to speak to such a legend, and he showed an appreciation for ChipWits and how, in some sense, it is the original Zach-like game. He was also kind enough to promote our game to his fans. Thanks again, Zach!

An aspect of ChipWits that I find interesting is that there are open-ended programming challenges. Instead of just solving specific problems, there are scenarios where there is a randomized situation, like collecting items with a given number of turns, and the player attempts to write a program that will get a high score. And there are even scoreboards to complete on. What are the considerations for designing scenarios for competitive play in a programming game?

Roth: In my college years at RIT, I was an ACM International Collegiate Programming Competition (ICPC) world finalist. The thrill that comes with competitive coding is real, and it can be very exciting!

This is an area where Doug has been a real mentor to the team. Doug has always felt strongly that ChipWits should never become a pure puzzle game, in the sense that puzzles usually have one “right” solution. In fact, we’ve playtested several puzzle missions with our early testers and, to our surprise, many of them found even better solutions than we anticipated!

Puzzles have their place in the game (you could even call the classic Mystery Matrix or Octopus Gardens ChipWits missions “puzzles” in some sense), but we’re trying to be intentional in our mission design to never assume that there is one right answer. Instead, we’d like our community to come up with their own solutions, and share them with each other (and with us!) I like your term “open-ended programming challenges.”

To facilitate that, for most missions, ChipWits offers a Zachtronics-inspired histogram leaderboard where you can see where your solution stands globally. You can choose to optimize for high score (best performance), cycles used (efficient execution), or chips used (fewer instructions, kind of like code golf). This also adds a lot to the replayability of the game as you can always go back and look for a more clever solution, and match wits with the community. We can’t wait to see what solutions our players come up with that we never anticipated!

The design of ChipWits' language is a blend of purposely limited and functional. I would love to geek out about some of the finer aspects of its design and the world, like treating diagonals as possible directions and the absence of traditional variables. Trying to work around the limitations of the ChipWits instruction set gives me a feeling I haven't felt since trying to work out how to do complex tasks in 6502 assembly. Are there any options that you purposely avoided in constructing its instructions, and do you feel like you hit the right level of utility or do you wish you had included more options?

ChipWits Screenshot

Sharp: I’m proud of IBOL. Mike and I did a good job of creating a small, functional, fun language.

Take a look at my post about early IBOL brainstorming. We tended to come up with a lot of OPs and ARGs, and THINGSs, think about how they could be used, and weed out the ones we didn’t need to run a mission.

We thought a long time about adding stacks to IBOL. We thought about using variables instead but realized that we would need arrays for some tasks like remembering how to follow a long wall. I was a FORTH fanatic so I pushed for stacks.

We added the dysfunctional SING op just for fun. It plays a note but doesn’t help with the score. In fact, it uses cycles, so it makes it harder to score.

I’m satisfied with the OPs and ARGs. If we had designed more complex missions, we might have added more, but we kept our 8 missions playable with the language.

I’m sure we’ll add variables to IBOL++. IBOL will grow in the future in order to teach more coding principles and to allow us to create more complex missions. We will occasionally publish missions that only allow OG IBOL.

Roth: We know there are a lot of people in our community who used to play the original, so in the reboot we wanted to make sure we were faithful to the original IBOL design. We tested that all the original ChipWits (like fan-favorite Greedy) still work as expected.

While many games in our genre build challenges around the concepts of sequencing, loops and functions, there are few that teach more advanced concepts like stacks. While they’re simple in concept, it’s amazing how many puzzle designs are opened up by using stacks.

But we also think the language hasn’t reached its full potential. The new missions will add new OPs, ARGs and THINGs. We’d like to add the capabilities necessary to make it Turing-complete, and we’ll be taking inspiration from our community to shape the future of the language. We invite you to join our Discord and send us your ideas!

ChipWits Screenshot

What was ChipWits II? Have any of the ideas from it carried forward into the new edition of ChipWits?

Sharp: ChipWits II was an attempt I made to reboot ChipWits. I became too sick because of my brain damage to finish it. I had implemented the core game but had to bail out when I was creating tutorial missions. I coded it in Adobe AIR, which was portable.


I’m happy to say that some features of ChipWits have made their way into the new game.

Roth: Specifically, a lot of the tutorial mechanics were inspired by ChipWits II, as well as challenges like locked chips on your SubBoard, and objectives other than just maximizing your score.

ChipWits Screenshot

Why is it time to update ChipWits now, 40 years later? What has changed about the game in the intervening time?

Sharp: I always knew that ChipWits would be rebooted. I tried with ChipWits II.

I knew that the core game had aged well. No new discoveries in computer science had invalidated IBOL. I knew that ChipWits was addictive. I knew that people still wanted themselves and their kids to learn coding.

Mark had contributed to ChipWits II by building a mission editor. We kept in touch. I finally realized that he might like to create a new ChipWits. When I bounced the idea off him he jumped at the chance.

Mark and I assembled a great team and it was game on. We’ve made a great new game while keeping the heart of the original.

Roth: One thing that has changed for sure is the habits of players. It was not uncommon in the mid-1980s to buy a game and spend a day reading the manual before diving into a game. People today do not have that kind of patience and there is a lot more competing for their attention. This led us to incorporate the tutorial into the game itself, so you can approach and really enjoy and learn from the game with no prior knowledge of coding.

Another thing that has changed is the opportunity to build a community. I had a lot of fun competing against my own designs when I played in 5th grade, but fast-forwarding to today, the idea of having a whole community to learn from and share with is really motivating. The game has a lot of focus on creativity. We’re hoping to foster an inclusive community where people share their creativity and encourage each other to seek even better solutions.

You've mentioned in conversation that Doug Sharp had always wanted to add a level editor to the original game, and that one is in the works for this new edition. I understand that many ChipWits missions are more complex than just laying down tiles, often containing substantial randomized elements. What goes into creating an interesting ChipWits mission, and how does he plan to go about exposing those randomized elements to aspiring level designers?

Roth: We’re excited to be adding integrated Steam Workshop support to enable an ecosystem of community-contributed missions. Given the richness in mission capabilities we decided not to launch with a full-fledged WYSIWYG editor but instead we’re going to open the mission file format and let our community edit directly in that format or build and share their own graphical editors.

In terms of mission design, we’re still learning what makes a great ChipWits mission, but we know it when we see it. The game includes a story-driven campaign called Dr. Droog, which is about saving the crew of a space station taken over by a Rogue AI. This mission pack doubles as a tutorial. A lot of our early puzzle design is about teaching new IBOL and CS concepts in fun and creative ways. As the player learns more, they can move on to our puzzle challenges or open-ended or community-contributed missions.

Some missions have randomness, which makes it less easy to build brute-force solutions. The mission file format makes it easy to configure which elements are random. When random elements are used, the game automatically evaluates your solution against several random seeds to ensure it handles many variants. Electrocrabs also add a degree of randomness and serve as unpredictable “chaos monkeys,” occasionally moving in the path of your ChipWit at just the wrong time.

Overall, we’re learning that a great mission is one that presents a clear and fun challenge without dictating a specific solution.

The original game was an early classic Macintosh title, and had a distinctive look with its cartoony ChipWits roaming around its maps in sunglasses and rollerskates. It's been 40 years since then and what the word "graphics" even means has changed tremendously since then, and the world of the new ChipWits is presented in three dimensions. Do you think the game has lost, or gained, something in the transition?

Roth: Both! There is something incredibly elegant and beautiful about the original 1-bit and 8-bit graphics, and even the sound effects are charming for their time. The tricks Doug had to play to get the game to fit on these micros are truly like fine poetry, and I will always have an appreciation for that (as will retro gamer enthusiasts). [Doug: *blush*]

At the same time, there’s something really enjoyable and satisfying about bringing the game to life in full 3D and stereo sound. We added Richard Reis to our team about 2/3 through the project, and he’s going back and improving all of our graphics. His work is incredible, and I especially appreciate his ability to add so much emotion in the animation of the characters. Similarly, Jared Farney has created a really superb soundtrack for the game, and his new sound effects are much more fun than the original sounds, at least to modern ears. [Doug: and ancient ears]. Alex McChesney has been contributing some of the coding to the project and is adding gamepad support so we can be compatible with devices like SteamDeck. As fun as it was to play with a C64 joystick, the game feels so much snappier and more natural on modern hardware, which also makes it more fun.

An aside: the clean black-and-white look of Macintosh ChipWits is rather charming, and there's a substantial retro-computing community out there that appreciates the clean, monochrome look of original Macintosh software. I don't know how feasible this would be, but might I suggest a skin for the game's graphics that pays homage to it? I'm sure some users would greatly enjoy it, and it might even be a way to drum up some extra publicity for the game?

Sharp: Both the name ChipWits and the design of the bot were AHA! moments. As soon as they popped into my mind I knew they were right.

The huge pixels of even the Mac graphics made it hard to create an overly-complex ChipWit. This was a good thing because it constrained me to a few strong features: skates, glasses, big mouth. If I had been able to draw ChipWits at a higher resolution back then I bet the ChipWit shape would have become less identifiable. And of course having a fairly simple classic shape lets Richard really be creative in weaving his graphic magic.

I loved the old blocky ChipWits on Mac, C64, and Apple II. In '84, I labored over each pixel and I’m proud of the graphics.

I’m in love with the new ChipWit design. It is truly the modern child of the original. It has the charm of the original while adding super-cool new details and alterations. I can’t wait to see ChipWit toys!

One of the delights of working with the ChipWits team is that we brainstorm so well. The creation of today’s ChipWit was a fun group effort led by Richard.

The animations and special effects Richard and Mark created are brilliant. They enrich the game without being flashy for flash’s sake.

I smile a lot every time I play our game. I wish I could go back 40 years in time to show 1984 Doug and Mike Johnston what ChipWits would become. It would have blown our little minds.

Roth: Also, thank you for that suggestion! Yes, we actually feel the same way and are hoping to add some elements heavily inspired by the original classic versions of the game.

How would you compare writing the modern-day ChipWits in Unity to its Forth forebear?

Sharp: All 3 FORTH code editors were primitive. I’ve glanced at the Unity C# dev environment and wish I’d had it in 84.

Each of the three original machines had vastly different graphic, sound, I/O, memory layout details. I had to write the layer between the game code and the hardware for each machine. That layer is largely standardized in Unity.

Since the Mac was just released when I started coding ChipWits on it, the machine was unevenly documented. I had to learn a lot of tech details by asking questions on BBSs like BIX (Byte Info Exchange).

To implement ChipWits on the C64 I had to write a bit of machine code to double the number of sprites on the screen. I doubt that Mark has written much machine code in the Unity version [Mark: Zero!]

Writing the Mac FORTH version was one of the most intense experiences of my life. Mike and I got our Mac in April 84, weeks after it was introduced. I coded it and had it out the door by late October. Mike and I did a LOT of game design work while I coded.

Mark has been under a different kind of pressure. ChipWits is his second job and his first job isn’t easy.

Roth: This question is interesting, as it falls squarely between the cracks of Doug and myself. I never had the opportunity to code in FORTH in 1984, and Doug is no longer able to code due to his health issues and has never tried to write in Unity C#. However, I did write my own C64 assembler when I was in middle school, and have a first-hand appreciation for the 6510.

What’s interesting to me is that modern game development has become a lot less about what you can squeeze into RAM or floppy disks and a lot more about how to create an engaging experience that competes for players’ sparse attention. I did a quick scan of our lines of code, and far less than half of the code is the core engine and much more is in UI and integration. I’d say the majority of my time spent as the lead engineer has been in creating and fine-tuning assets, not writing code. Also, testing on different variants of computers has its challenges. Back then, a Mac was a Mac and a C64 was a C64.

I think asset creation must have definitely been a challenge in FORTH, but the challenge was different, and players had to rely more on their imagination, given the limitation of hardware back then. The real challenge, from what I gathered (and partially experienced) was in shaving off bits and bytes to get things to fit.

What’s cool about ChipWits is that, in some ways, we’re capturing and exposing new audiences to that type of challenge by constraining them in how they build their ChipWits. So, interestingly, in a sense, players get to experience some of the fun Doug and Mike had in creating the original game, while playing the game they created!

ChipWits can be wishlisted on Steam. You can find out more on their website. They have a Discord community, and look forward to hearing from you.

About the Author

John Harris

Contributor

John Harris writes the column @Play for GameSetWatch, and the series Game Design Essentials for Gamasutra. He has written computer games since the days of the Commodore 64. He also maintains the comics blog Roasted Peanuts.

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like