TADS / Steam question for Nikos

Discuss text adventures here! The classics like those from Infocom, Magnetic Scrolls, Adventure International and Level 9 and the ones we're making today.

Moderators: Ice Cream Jonsey, AArdvark

User avatar
Ice Cream Jonsey
Posts: 25265
Joined: Sat Apr 27, 2002 2:44 pm
Location: Colorado
Contact:

TADS / Steam question for Nikos

Post by Ice Cream Jonsey »

Is the technology you created to get Thaumistry going on Steam something a person like myself dabbling in a TADS game can license?
the dark and gritty...Ice Cream Jonsey!

User avatar
RealNC
Posts: 1876
Joined: Wed Mar 07, 2012 4:32 am

Re: TADS / Steam question for Nikos

Post by RealNC »

You mean the Steam achievements? That's the only piece of Steam-specific code in there.

User avatar
Tdarcos
Posts: 7655
Joined: Fri May 16, 2008 9:25 am
Location: Arlington, Virginia
Contact:

Re: TADS / Steam question for Nikos

Post by Tdarcos »

RealNC wrote: Fri Jan 19, 2018 11:19 am You mean the Steam achievements? That's the only piece of Steam-specific code in there.
Yeah, but you didn't answer his question. Is the Steam feature something that is licensed as part of the $100 fee to put a game up for sale on Steam or it an extra-cost license?
"Perhaps she'll understand, if you tell it to her, plain."
- Don McLean, Castles in the Air

User avatar
RealNC
Posts: 1876
Joined: Wed Mar 07, 2012 4:32 am

Re: TADS / Steam question for Nikos

Post by RealNC »

Nah, that wasn't the question. The question was about the technology I created to get the game on Steam. The code in question is specific to the Thaumistry version of QTads. It adds a new Tads intrinsic function set, making these functions callable through Tads code. (It's a bit like the opcodes we added to Hugor a while back, except Tads is designed to support that directly.) The only Steam-specific function in that set is qtads_unlock_achievement(). The game calls it and passes an achievement ID, and the interpreter forwards the ID to the Steamworks SDK. That's about it. So I wouldn't exactly call this "technology I created." It's just using the Steamworks SDK normally.

Other than that, there's nothing else that's specific to Steam. If the game doesn't have achievements, then there's no need to use Steamworks SDK at all. Unless you want to protect the game with Steamworks DRM, but Thaumistry doesn't do that.

However, it just occurred to me that to get Steam cloud syncing for saved games, you need to have a system in place that puts the save files into a standard directory (on modern Windows that would be a location within C:\Users\You\AppData\) and then configure Steam to use that location to sync files (configuration is done in the Steamworks website.) To get Tads to save in these locations however, you still need to modify the interpreter. There is no way to get the correct directory from Tads game code.

If you don't care about Steam cloud sync, then you don't need any of that either.

To answer your question however, the Steamworks SDK, including the DRM, is free to use by anyone who releases a game on Steam.

User avatar
Ice Cream Jonsey
Posts: 25265
Joined: Sat Apr 27, 2002 2:44 pm
Location: Colorado
Contact:

Re: TADS / Steam question for Nikos

Post by Ice Cream Jonsey »

The use of the word "technology" was due to it being six in the morning and I wasn't sure what you did to make it look so nice. :)

When Thaumistry starts up, there's a screen with a few different labels on it, like Continue, New Game and Credits and such. Did that come from an interpreter?

Additionally, the initial gameplay screen is a nice set of blue-tinted colors. Is that from a terp as well? It looks so much better than whatever black text on white background thing I've been using. Can any TADS game be made to look so nice?

Here's a screenshot:

Image
the dark and gritty...Ice Cream Jonsey!

User avatar
RealNC
Posts: 1876
Joined: Wed Mar 07, 2012 4:32 am

Re: TADS / Steam question for Nikos

Post by RealNC »

Ice Cream Jonsey wrote: Sat Jan 20, 2018 10:53 amWhen Thaumistry starts up, there's a screen with a few different labels on it, like Continue, New Game and Credits and such. Did that come from an interpreter?
Yes. That's implemented in the terp itself. It's normal widgets (a frame populated with buttons) themed with CSS. It's hard-coded and specific to Thaumistry.
Additionally, the initial gameplay screen is a nice set of blue-tinted colors. Is that from a terp as well? It looks so much better than whatever black text on white background thing I've been using. Can any TADS game be made to look so nice?
In Thaumistry, it's the modified interpreter that sets those colors. The game just sticks to default colors, and the interpreter has these defaults set to white-ish on blue-ish.

However, this is not actually required. You can make any game look like that. Here's a few examples:

http://qtads.sourceforge.net/screenshots.shtml

Games that don't set their own colors appear black on white because that's just happens to be the default color theme in most interpreters. But your game doesn't have to stick to defaults. It can set its own colors using HTML-like markup.

What you can't do with vanilla TADS though is using custom fonts. The various fonts used in Thaumistry come with the interpreter (you'll find them in the "fonts" directory in the game's installation directory.) With vanilla TADS, any font you want to use must have been installed system-wide by the user prior to starting the game.

So if you only want a different color scheme, you can do that easily in TADS code. This will set the game's colors to the exact same ones used in Thaumistry:

Code: Select all

modify initDisplay()
{
    replaced();
    // Change main window colors.
    "<body bgcolor=#062b3d text=#d7f6f2 input=#bbd5d1 link=#dac060 hlink=#ffe070 alink=#ffff96>";
}

modify statuslineBanner {
    setColorScheme()
    {
        // Change statusline colors.
        "<body bgcolor=#031c2a text=#d8d8d8 link=#dac060 hlink=#ffe070 alink=#ffff96>";
    }
};
(Note that there's a bug in QTads 2.1.7 that I need to fix: it ignores the link colors (link, hlink, alink) you set in <body> tags. HTML TADS and Workbench work fine.)

If you want a menu screen and custom fonts though, then you need to modify the interpreter. For Thaumistry, we use a version of QTads that's been modified specifically for that game. You can't use it as-is. But if you want to hire me to modify it for your own game, I can do that. Send me an email if you want to go that route.

If you want to do the modifications yourself, QTads is open source and you can do that (either under the GPL or the TADS License.) Mike Roberts' interpreter (HTML TADS) also comes with public source code, so you can modify that instead if you're only interested in Windows.

Post Reply