May 25, 2020

Delores Source Code Released!

Oh crap!

I accidentally pushed the wrong button and made the Delores source code available on GitHub.

I guess there is no putting Delores back in the bottle now...

(wait for laughter)

I'm only half kidding.

(wait for Todd in the third row, who laughs at anything, to stop laughing)

I did publish all the source code to Delores on GitHub, but it wasn't an accident. It was a well planned endeavor to give you even more to do during pandemic lock-down. I'm sure everyone is getting tired of playing Animal Crossing, and what better way to exercise your grey-matter than modding your favorite game.

But wait... there's more...

(wait for oohs and ahhs)

Not only did I upload all the source, but I also uploaded all the art and the entire FMOD project (many thanks to FMOD).

But wait... don't hit the back button yet...

I also uploaded the dev build of the Delores engine (including the complete debugger) so you can run all your edits and changes. Also included is Wimpy, the executable that allows you to add and edit objects in Rooms.

"Holy crap-a-reno! What's the catch Ron?"

While you can do pretty much anything you want to the game, including writing a whole new UI, or translating into any language, or returning it to the verb matrix, you can't release or publish a game. This is intended for personal and hobby use only.

The other downside is these really are the dev tools we used to make the game, and like most in-house dev tools, they are poorly documented and very crude around the edges. While I do provide some help documentation it is mostly limited to an index of Dinky commands, not a tutorial.

What? You want a Hello World example? OK, fine.

local image = createTextImage(FONT_SYSTEM, "Hello World", 48)

There is a fairly high degree of technical and programming knowledge needed. I've always skewed away from visual programming and dialogue engines. While they are great for beginners, getting real work done is problematic. Again, these are the real tools we used, not watered down "consumer" tools.

I've been using Git for 10+ years, but this is the first time I've ever had a public repo and had to deal with pull requests, etc. This will be a big learning curve for both of us.

I generally won't be accepting pull requests just for modifications to the game unless they fix bugs related to getting this repo working. I might accept pull requests for documentation and new translations and if they are good they maybe-might be integrated into the shipping game.

"But Ron, why won't you accept my bug fixes and improvements to the game?"

Good question little Timmy... let's dive into that...

A game that goes on Steam, Epic, or GOG requires a great deal of testing. Delores had/has two full-time paid testers and before any build was uploaded to a store, it got a good deal of testing around the fix, plus a complete play through of 30 photos was required on each platform. Each of the stores uses the same "bits", but we still had to download each platform from each store and do a run through.

And that was for an easy fix. If the fix was more involved or changed logic significantly it could require 20-40 hours of testing. If we broke a store build, it would be hours of tech support emails.

I believe a lot in testing and testers and much of that came from my time at Lucasfilm and dealing with hard media. To even put a build of Monkey Island into test required over an hour of work as I made and verified 5+ floppies. Just rebuilding the SCUMM scripts to Monkey Island took over an hour (a job that takes a fraction of a second for Delores).

Releasing a build going to manufacture was nerve wracking and very expensive. If you introduced a stupid bug, you'd remake 200,000 floppies. While Monkey Island was in final testing, any change had to live in test for two weeks. If we found a bug and made a new build, we'd reset the clock.

Today it's easy. I start a shell script, wait 15 minutes for the CI machine to build the new engines and 5 seconds later it's on Steam and I can push the "publish" button. It's too easy.

BONUS NOTE: Don't believe the myth that programmers can test their own code. They can't. Programmers will test for all the conditions they can imagine, but a good tester will imagine many many more and players will try things programmers never even considered. Knowledge of their code is the achilles heel of programmers. I've had code I was 100% sure was rock solid, only to have one of our testers reduce me to tears. A good tester excels at poking your code in places you never considered. I'm not talking about your unit tested sort routine, I'm talking about complex puzzle logic and odd UI uses. It's the stuff unit tests will never catch, but a good tester will. Testers are the unsung heroes of your team, treat them very well.

Every time you do a build, you also run the risk of accidentally introducing an error. Once I did a build from the wrong branch, everything looked fine but after a few bugs came in, I realized something was very wrong. I'm glad I didn't just build and hit "publish". Even fixing a typo requires testing.

"Hey Ron, little Timmy again... why don't you release the source to the engine?"

Another great question.

Releasing the engine source (c++) is problematic for a few reasons. The first is that it uses a very large library of mine, most of which is not used in this engine, so I'd have to go though and cull out all the cruft, not to mention all the proprietary console crap. I also use some third party source I don't have the rights to release. It's a big job and would split my main engine off from the released engine, which becomes a merge catastrophe (either that or a million #if's).

"Little Timmy again, I have a followup question... Why don't you license the executable for us to use in our shipping games?"

Allowing others to release games using the engine is a support nightmare for me. A game would be released and then customers would have issues, or it wouldn't work on specific hardware, and then I'd be stuck (indirectly) supporting it. I could charge money, but unless hundreds (if not thousands) of people licensed the engine, I fear the cost would be more than a game is likely to make.

But the most important reason is that I like to make games and want to dedicate most of my time to making new ones, not supporting an engine.

Once you've had a chance to look at all the source, I think you'll realize there is no "secret sauce" here. It's just an adventure game engine. Why did I create a new one? Because I enjoy it.

This post ended up being longer than I expected. I hope you enjoy looking through my and David's crappy code. Happy modding. I'm excited to see what you do.

(wait for laughter from todd)

Keep in mind, the Delores source is intended solely for personal use to learn and explore. Please respect our choice to release the source by using it as intended.

P.S. The dev engine has all the same limitations as the game, so Mac 10.10, Win 10 (dx12) and unfortunately (at this time) no Linux build. As soon as the Linux version is done, I will upload that as well. It might be a month, or months, or longer.

P.P.S If you have questions or want to help others out, visit the Thimbleweed Park Forums

Gaby

May 26, 2020
Ho. Ly. F.!!! Thanks, Ron!!

Paul Nicholas

May 26, 2020
OMG. Awesome-a-Reno!
Looking forward to checking this out.
Thanks a lot, Ron! 😀

Mauricio E. Silva

May 26, 2020
Is this your way to tell us that you couldn't find a Linux laptop that you like and we need to port it our self?.

Lautaro

May 26, 2020
Thank you Ron, this is amazingg!!

Chadwyk

May 26, 2020
Wow this is awesome! I always wondered what the Wimpy tool looked like! A cool peak under the hood for your scripting language! I wish I could see your code in the engine executable to see how you handle lower level things like walkbox algorithms, inputs, rendering, etc. but I totally understand why you aren't releasing the code for that. Thanks for this! I know what I'll be playing with today!

Michael

May 26, 2020
This is awesome! Thank you so much :)

Pablo

May 26, 2020
Please develop monkey island 3. Sorry disney, we need it

Gianmichele

May 26, 2020
This is so awesome!

Reagan W

May 26, 2020
You're the man, Ron. Seriously.
Bought you five coffees because of the joy and laughter you've brought us all (most of it intentional!).

Thank you, sir.

arensb

May 26, 2020
Fantastic!
I went straight for the Images directory. I used to have fun digging the images out of games like Sam & Max or The Longest Journey, and putting them back together in an image editor. This is just like that, except with the author's permission.

Ron Gilbert

May 26, 2020
You could also just look at the .psd files? Or does that take he fun out of it?

Voxel

May 26, 2020
By the way Ron, thanks a lot for this. I'm not a programmer but I do appreciate people sharing to allow others to learn.  Sorry for plugin the collaborative platform above, but I also think that collaboration is a huge source of knowledge and experience. Looking forward for you next effort. Been a fan for a while!

Zak Phoenix McKracken

May 26, 2020
... speechless!
I urge to take a day off, to dig into all the code...
Still can't believe it.
Oh, Zak, are you dreaming, isn't it? If course, you are used to dream....

Acmeplus

May 26, 2020
Thanks Ron!

G

May 26, 2020
thanks-a-reno!

Michi

May 27, 2020
From the bottom of my 80ies-gamegirl-softwaretester-heart, I cannot thank you enough for constantly emphasizing the importance of testers at all points of the process - this really made my day and makes me love my job even more <3

PS: I shared this with my QA-colleagues and we all agreed: making a programmer cry, those are our magic moments ;D (I actually take a bath in developer's tears daily, that's why I still look like 25.)

Burretploof

May 27, 2020
Good stuff, Ron! Thank you. :)

I am rubber, you are glue.

May 27, 2020
👍
Thank you Thank you Thank you Thank you RON!  <3

Pippokill

May 27, 2020
Thanks!!!  Great news! I teach Advanced Method of Programming and this year the students must develop a textual/graphic adventure game as the exam project. I will send them this post maybe it can inspire them!!! Thanks!

Yann Lebrun

May 27, 2020
Thanks I love to put my eye in your brain ^_^ Do you plan to do a real Point And Click Maker a day ?

George Broussard

May 27, 2020
Ron, this is awesome. Thanks for sharing the code. Any shared code like this helps, educates, and will inspire someone or many someone's to do great things.

Steve Brown

May 27, 2020
Neat!  Getting a DX12-capable 'gaming rig' (aka $200 refurb laptop from tigerdirect's bargain bin) is definitely on my to-do list.
Until them...back to pissing away the summer with Animal Crossing.  Er, World of Warcraft.  /sigh

David Fox

May 27, 2020
Michi, one of the best play testers I worked with back at Lucasfilm Games would walk into my office with a sly grin on her face... I knew she'd found a big one. I don't think I cried, but I definitely would feel the blood drain from my head. The bigger the bug, the more evil her grin. It was terrifying, but she was awesome. Thanks Judith!

Eigendrea

May 27, 2020
I was hoping this day would come but I didn't actually believe it.
Thanks for this bonanza, Ron!

Ignacio

May 27, 2020
This is great, thank you!

I've been playing a bit with it and tried to start a Spanish translation, is it there a trick on the charsets? can't make some of the latin chars to show up, like the inverted question mark ¿.

Thanks again, its great for learning!

Ron Gilbert

May 27, 2020
You have to add those to the fonts/ Visit the forums at https://forums.thimbleweedpark.com/c/delores-engine/18

Other people are doing translation and have probably added characters.

Stick

May 28, 2020
About testing, this joke came to my mind:

Dev builds a bar.
Tester enters the bar and order a coffee, 0 coffees, 9999999 coffees, "blablablargh" coffees.
A user enters the bar, asks for the toilet. The bar catches fire, everyone dies.

Thanks Ron. Despite you code being the star of this post, I think your experience with testing is even more valuable!

0A0

May 28, 2020
Nice, and no GOG needed anymore too. As the source for the engine isn't available (yet), will you add support for some fmod effects? I guess you can't write code for an Arcade yet?

0A0

May 28, 2020
@fmod
Got it, this is fun.

Vladimir Solovev

May 29, 2020
Wow! I am sure that soon there will be a lot of German adventure crossovers MM games based on graphics from Delores Dev.
https://vovkasolovev.ru/wp-content/uploads/2020/05/2020-05-30-deloresdev.png

Johnny Walker

Jun 01, 2020
I'd love to know what commands you added/changed from SCUMM when creating Dinky. And what you've learned about writing.a scripting language for graphic adventure games. Thanks!

Noah Falstein

Jun 03, 2020
>Just rebuilding the SCUMM scripts to Monkey Island took over an hour
Does that count the speed-up if you jiggle the mouse while it's building?

IceColdCat

Jun 05, 2020
We love you Ron Gilbert. You have a pure passion for adventure video games, that's what you can see in your creations, and it's beautiful!

Morph

Jun 10, 2020
Thanks Ron!

Gil

Jun 14, 2020
Such beautiful scripting language. Thank you so much for this!

Sam

Jun 18, 2020
Uuuuuuuuh I Never saw this! Thanks Ron! *_*

Cole

Jun 21, 2020
What resources do you recommend for someone looking to build their own adventure game engine?  I've built a small 3D graphics engine before, but I've never made it interact with game logic.

https://www.scotthyoung.com/blog/2020/05/04/do-the-real-thing/

Jun 21, 2020
@Pablo: There already is a Monkey Island 3.

Mancomb Seepgood

Jun 21, 2020
@Pablo:  There already is a Monkey Island 3.

Marko

Jun 22, 2020
So there's a chance anybody out there could nake a Win7 compatible Delores build? That would be great.

wimp

Jun 26, 2020
Help! How do I move around in Wimpy?

Ron Gilbert

Jun 27, 2020
Hold the SPACE and LEFT-DRAG.

Chris

Jul 28, 2020
"Testers are the unsung heroes of your team, treat them very well."

As a professional tester for over 20 years, thanks for this! It really can be a thankless role, but seeing comments like this make it worthwhile.
Here are the rules for commenting.