Your Kickstarter Dollars At Work!

by Ron Gilbert
Mar 20, 2015

No ego-fueled narrated video this time, maybe next week.

For me, most of this week was taken up in getting the first pass at a game engine debugger, tweaking Wimpy, and separating the game assets from the engine code.

Up until this week, there was no debugger in the game engine other than just debugging issues with Xcode. While Xcode is a powerful debugger (so is Visual Studio, so let's not turn this into a religious IDE war), it's really not appropriate if you are just trying to track down an issue in the scripts. There is little need to step into the c/c++ backend code to do that, and I don't feel a requirement of a good game programmer should be knowing c/c++ or having Xcode or Visual Studio installed.

First step was to get a debug console window running independent from Xcode (or VS if running on Windows). Any warnings or other output is redirected to this window, and there is a place to enter commands.

You can dump any variable, room or object...

And set them...

You can also execute any valid Squirrel code from the command line, so the game programmer can invoke functions or start scripts at any time. You can also read a stream of commands in from a file if you have a complex situation to set up.

This is just the first phase of the debugger, in the next few months I'll add the ability to visually single step through code and add breakpoints. Phase two. Coming soon: an awesome toolbar.

I've also been making various tweaks to Wimpy to streamline the workflow. When you add an object in Wimpy, there is now an option to automatically insert the object's code into the script file. It's amazing how much time this saves. Add the object in Wimpy, then open up the Room's source and just fill in the details.

Probably the biggest task this week was separating all the game assets from the Xcode project. Mac applications like all the resources embedded in the .app file. This is nice because it keeps the file system clean, but it's not very conducive to rapidly iterating during Thimbleweed Park's development.

As I mentioned above, I don't want a requirement of game programmers to be the need to muck around with Xcode or Visual Studio, plus I like to think about the game engine as a very separate "product" from the game.

Much of this work was figuring out the structure and filesystem layout for the project...

I wrote a quick bash script to create new rooms. You enter new_room Diner and it creates the room's .nut code and the .wimpy file (The files beginning with __ are the template files) and any needed folders.

From the time Gary gives me art, I can be walking around the room, clicking on objects in under 5 minutes.

The _SpriteSheet folder is built whenever art changes (from Images/) and can safely be deleted at anytime (and is not version controlled).

The other goal in separating the engine from the game assets was to have two version control repositories, so game programmers can pull down all the assets without the engine source code. All they need of the engine is the compiled program, then point it at the game assets.

I'm sure a lot of this will change as we see what works and what doesn't. David Fox should be coming on soon and I'm sure he'll have a lot of "feedback".

Mattias Cedervall - Mar 20, 2015 at 17:40
Ron, the creator of the C64 font told me he/she will contact you to let you know that Latin characters will be added and you can use the font in Thimbleweed Park. ;-) :-)

Mattias Cedervall - Mar 20, 2015 at 17:56
Ron, is it okay with you by the way? Perhaps you've read the C64 font-creator's message?

Mattias Cedervall - Mar 20, 2015 at 17:44
Ron, I recently bought some LucasArts games via eBay and when I left feedback for the sellers I wrote "Check out the new game Thimbleweed Park!" to spread the word.

David Fox - Mar 20, 2015 at 18:01
Feedback? Me?? Never! :-)

badde - Mar 20, 2015 at 19:26
why?  : - )

Brian S - Mar 20, 2015 at 21:05
My sarcasm detector just went to 11.

Iron Curtain - Mar 21, 2015 at 17:50
<sarcasm>A sarcasm detector. Boy, that's a real useful machine!</sarcasm> :-P

Leandro - Mar 23, 2015 at 20:26
<sarcasm>Sarcasm Detector , you say? Man , i wish i have one of those for every time people had an angry face at me.</sarcasm>

Matt Lacey - Mar 20, 2015 at 18:04
Seem to be building things out crazy fast. Really loving all of the detail, and it's great to 'watch' you work like this. The clean separation of the engine from the game is obviously a powerful solution. If I get to catch up with you this year I'll have far fewer nagging questions for you as a result of this blog :)

Debby - Mar 20, 2015 at 18:25
Hey guys, I'm usually more of a lurker, but I wanted to say that the blog is very interesting so far. Thanks for that! I'm beginning to get a should-attempt-game-development-at-some-point itch, because of you. I suspect it'll only get worse (or better?).

Also: yaaay, the GNU Terry Pratchett Clacks header is here too! Awesome, guys. Best tribute ever.

Matt Lacey - Mar 20, 2015 at 18:35
Debby it never goes away ;) I stopped working in the games industry over 5 years ago and still have more 'game side projects' than I can count.

Debby - Mar 20, 2015 at 19:09
Sounds like an addiction then! Do you go to special meetings? :)

Matt Lacey - Mar 23, 2015 at 18:10
He he, nope, but I do work in an office of game developers so I still get my fix talking about it!

Brian S - Mar 20, 2015 at 18:40
GNU Terry Pratchett Hacks... I had to look that one up.  And then install the Chome Plugin.  Very cool.

Brian S - Mar 20, 2015 at 18:40
Clacks, that is.

Debby - Mar 20, 2015 at 19:05
Great isn't it? I've added it to sites I manage too and feel quite pleased each time my little digital Clacks tower blinks. It's like an internet-hug for Pratchett fans.

eduyayo - Mar 20, 2015 at 20:25
Seriously... Never thought about kind-of-a-documentary about the making of?

Iron Curtain - Mar 21, 2015 at 00:07
Ask Tim Schafer how well that went over.

Hudden Rickshaw - Mar 21, 2015 at 05:20
That documentary is beyond great! Have you watched it? It has reasently become available on Youtube, by the way.

Tomimt - Mar 21, 2015 at 11:41
I think that went pretty well. DFA is a great not so little documentary series.

Dan A - Jan 22, 2016 at 12:58
It's one of the greatest gaming documentaries ever produced. Perhaps THE greatest.

Ralph Upton - Mar 21, 2015 at 00:08
What's your guy's work setup like? I know Gary's in the south and David's in the north. Do you guys plan on sharing an office later? Or just telecommuting? What telecommuting toots does a small game dev team use?  Dropbox + Skype or something more custom?

Iron Curtain - Mar 21, 2015 at 00:10
I noticed Ron is using Apple Macintosh system version 10.10 (or OS X Yosemite). As soon as I upgraded I noticed how ugly it looks and how they reverted the dock to Tiger (10.4) days.

As you can probably see, I have little confidence in Tim Cook.

Gianni - Mar 21, 2015 at 03:59
Hi Ron,
do you use any library to make the debug console/input window to be cross-platform?

Keep up the great work!

Matthias - Mar 21, 2015 at 06:46
Cool blog, I really appreciate the information about game development (used to be a gamer in the maniac mainson area, now I'm into programming).
What will you to with the tools you develope after the game is shipped? Have thought about releasing them under an open source license?

Dominik - Mar 21, 2015 at 08:38
Nice idea to have a seperate debugging window - My first instinct would have been to implement it as a console insie the game window. Ever since Quake I just have to have a console window inside any engine I write. But the external solution seems better suited in this case since the game programmer has still a free view on the scene and can debug independently.

But something is wrong here.... Oh yeah! What's up with the name? "Debugger"? Shouldn't that by a crazy acronym or something? "Deubgger"... pfffttt - how conventional ;-)

Matej - Mar 21, 2015 at 09:36
I am quite into behaviour-driven development and test-driven development. This is not the same as debugging, but I wonder if you employ any of these approaches. Judging by what you disclosed so far it would not be too difficult to set up and use a testing suite.

By the way, what was debugging and testing like in the Mainac Mansion times? Lots of manual runs and clicks and seeing what happens this time around?

mr. T - Mar 21, 2015 at 13:21
Wimpy seems to be turning into something pretty nifty. Very nice, I like (insert Borat face here)! I wish I could browse through all the source and really see how everything works together.

What's your general policy on documenting and commenting your source code by the way? Do you have savant like abilities to remember everything you've ever coded and structured or do you take care to document and comment the code as you go? I sometimes pay the price when I try to get back with non-documented old projects and actually struggle slightly to figure out how it all worked again :D Well maybe not struggle per se but spending more time than would be necessary.

Spammer - Mar 22, 2015 at 02:24
I'm blue da ba dee da ba die da ba dee da ba die da ba dee da ba die!

Michael Stum - Mar 22, 2015 at 06:23
One of the things that were interesting about SCUMM is that every game seemed to have its own, incompatible interpreter - you couldn't just use a monkey.exe on Last Crusade's data. I guess this is partially because of optimizations that are no longer relevant in 2015, but also because the whole idea of Engine/Game separation wasn't really that big of a deal? It would be interesting to see if Thimbleweed Park will end up with a bunch of game-specific tweaks in the engine out of pragmatism - it's more a curiosity of mine though. I'd love to hear some talk about game-specific corners you had to cut in the old SCUMM days.

Ron Gilbert - Mar 22, 2015 at 09:56
It wasn't that the games had tweaks, it was that the SCUMM system was evolving. We would add new features to the next game, which means you couldn't play the it with the last games .exe. Sometimes those improvements would make the new .exe incompatible with the last game, so it was never a strait line up.  And that's a good thing. We were not releasing a game development engine to the public where we had to worry about all the people that might want to run the new game on the old system. This was an internal tool, so we had that luxury.

If the GrumpyGameEngine exists beyond this one game, I'm sure that will also be true for it. Things keep moving forward, it's what keeps life interesting and also a reason I don't want to use the old SCUMM system for this game. Move forward.

Santiago Montero - Apr 01, 2015 at 22:35
mmm I don't like what you are saying....are you subtly implying that they were worst engineers back then...?

Zak Phoenix McKracken - Mar 23, 2015 at 06:14
Versioning, separating engine from game, files updated when art changes... sounds easy nowadays, it's a good practice among programmers. But I wonder how it felt 25 years ago, on a CBM64, where the storage were only floppy disks, the available memory was really a pain, every single byte was important, and the fantasy to gain speed was the thrilling of a programmer?
Those primordial years were really tough and amazing at the same time. Are you agree?

Mathias Berglund - Mar 23, 2015 at 11:18
My take on this is that the limitations forced the designers and programmers to be really creative in a way where storage space and memory is less of an issue which probably played a big part in forming thoose classics. Perhaps I should take my rosetinted glasses off, but I like them far too much..

Oliver Bachmann - Mar 23, 2015 at 11:21
Yes, you could already create cool games which people have forgotten about in the meanwhile,  whose game concepts were better than some games you can download nowadays, for example DOOM 1 and 2 (especially the preview of DOOM2) or Descent. Collected a few original Pentium boards to keep up the spirit - just need the time to reassemble them. Also, making music with a tracker like Fasttracker 2 is something people seem to have forgotten about and rather prefer to use a sequencer.

Ron Gilbert - Mar 23, 2015 at 11:23
All the C64 computers at Lucasfilm were connected to a UNIX machine, so we wrote and compiled code there, then download it to the C64. All our source code and art was backed up each night and it was easy to share code by just copying it from one place on the UNIX machine to another. Things got a little more complex when we started doing PC games. Up until I left Lucasfilm, we never used version control, it was copying files to DOS floppies and giving them to someone else and hand merging code. In some ways, we had it easier on the C64.

These days, I could not live without versions control. Everything I do, even my one-person projects are version controlled.

Brian S - Mar 24, 2015 at 19:11
That is really interesting!  It's so handy now with version control to compare changes, merge between branches and developers,  look back to when a certain piece of code was last changed, and by whom, and why.  It's can't imagine working without it.

By the way, for fun check out gource sometime - it's a revision code "visualizer".

Leandro - Mar 23, 2015 at 10:51
My  proposes for debugger tool name are Linty ( yes , it is a pun on Lint ) or Giddy .

Uli Kusterer - Mar 23, 2015 at 12:32
I always like to put a folder of resources for the actual data (in your case the game rooms, graphics & scripts) in the .app's Resources folder, then have the app look for a folder of that name in ~/Library/Application Support/MyAppName/ first, and only if none is there, load its internal copy. That way, you can override the content with a new version you're editing without having to modify the app.

Joost - Mar 24, 2015 at 05:32
I laughed so hard milk came out my nose... Squirrel files are called ".nut"? That is just too damn cute.

bram - Mar 24, 2015 at 13:12
A flyswatter is the ultimate debugger, so the debugger should be called swatty ;-)

Bobby - Mar 24, 2015 at 15:08
Just wanted to say I'm reading your blog all the time. Very very interesting to see how you think about game design and how you make decisions. I'm a web developer so this is programming above my head, but your posts makes me understand more and more. So keep the posts coming! And keep up the great work! Can't wait for this game, I still love Maniac Mansion insanely!

John H - Apr 01, 2015 at 10:23
My ex's IT students used to call SQL "Squirrel". Just so you know.