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
Looking forward to checking this out.
Thanks a lot, Ron! ๐
Bought you five coffees because of the joy and laughter you've brought us all (most of it intentional!).
Thank you, sir.
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.

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....
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.)
Thank you Thank you Thank you Thank you RON! <3
Until them...back to pissing away the summer with Animal Crossing. Er, World of Warcraft. /sigh
Thanks for this bonanza, Ron!
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!

Other people are doing translation and have probably added characters.
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!
Got it, this is fun.
https://vovkasolovev.ru/wp-content/uploads/2020/05/2020-05-30-deloresdev.png
Does that count the speed-up if you jiggle the mouse while it's building?

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.
I'm a fan of your games since they first came to me. I also played from others, but your games are my all time favorite. Thanks a lot!
I'm a long time electronics engineer and hobbyist programmer since early 80s. Due to pandemic and other personal situations, I'm recycling myself into computer programming and did collaborate in game development. I develop at both commercial and "freeware" games. I don't want to reveal it because I'm known in my previous industry and want to stay unknown for now, I'm also a grey beard (probably older than you) and already suffered ridicule because switching from high end electronics design to "making games for silly kids and no life nerds". This decision even made my wife get divorce from me, but I don't regret about it because it's the dream of my life. I'm starting at learning how to do adventure games, my very favorite genre.
What are the differences between Dinky and your expanded Squirrel fork?
Would you please want to release the source code of Dinky? It may be interesting for other (indie) game developers. Please consider it, it would be an amazing contribution to the world from a very experienced game developer.
I thought Lua was used everywhere these days. I did know Squirrel because used it in embedded systems and automation for some custom and very specialized equipment, but had no idea it is used in game development.
I wish you would rejoin with some of the best talents in LucasArts and even Sierra On-Line (why not?) and develop an AAA adventure game. I would prefer 4K HDR 2D game using advanced rotoscopy animation, but that's too expensive and niche.
Maybe I should relocate to Germany or Italy, it seems adventure games are still very big there. Io parlo Italiano molto bene.
I always wanted to take a peek to the code of this type of games. Thank you again. It is going to be very educational.
Thanks Ron by the way...
:)
thank you for sharing the source code, it is wonderful to get insight into your own scripting language! ๐
I am trying to wrap my head around two things:
- When the player is saving the game, do you also save the currently executed line of each script?
- If so: When you ever make an update to the game that changes one of the scripts, how can you assure that save states still work?
Maybe you could give me a little hint or two, I would appreciate it so much! ๐งก
Thanks again, and best regards!
articles? I mean, what you say is valuable and all.
However think of if you added some great visuals or video clips
to give your posts more, "pop"! Your content is excellent but with pics and videos, this
website could undeniably be one of the most beneficial in its field.
Superb blog!