Saving as .exe?

Having your friend download QUEST or opening the browser just to play your game is not something I'd like.
Is there really any way to save a game made in Quest as an .exe? or at least convert the quest files to .exe?

I was looking around and I seemed to recall someone named "Alex" is able to do it, not sure if that's an inside joke that I don't get or it's for real.


You are going to need the program to run the game so it must be downloaded. Or, provide them the link to your game and they can play it online. Maybe someone will come around and give you some other advice but those are the two ways that I know of to play Quest games (as well as any other TA programs that I am aware of).


It has to be in a aslx file.


Someone, with Quest code experience, should be able to compile the script into an .exe file...
But, it would require putting the Quest code into the script to make it into an .exe...
Until then, your best bet is to play online, or download Quest.exe, and run the script from there...

Or, you could learn programming and program your game in that and compile your own game...
I know Visual Basic, after learning that, then how to program your own text parser, and how to do the room creations, then object use, then.... (the rest)… Well, you get the picture.


K.V.

Having your friend download QUEST or opening the browser just to play your game is not something I'd like.

This is necessary to play every format I know of, except for Tads.

Infocom games need Frotz.

Recent Inform games need Glulxe, Git, Zoom, or Gargoyle.

...and you have to learn Tads' programming language to write a game with Tads.


Is there really any way to save a game made in Quest as an .exe? or at least convert the quest files to .exe?

If you're familiar with programming, you can probably use Inno Setup to package your .quest game file along with a BAT file and the Quest files from the Release directory when you build Quest from the source code in Visual Studio.


Let's say our game file's name is gamename.quest, and it is in the current working directory.

Now, we also have a "Quest 5" directory (which contains all the files necessary to run Quest) in the working directory.

Executing this BAT script would open gamename.quest in Quest:

Play.bat

@echo off
start "Quest 5\Quest.exe" gamename.quest

You would need to know how to modify this code to include your game, and install everything to whatever directory name you like. BUT, if the player already has Quest installed, some of this code would cause your version of Quest to take over as far as the Windows registry was concerned.

setup.iss (included with Quest's source code)

; Based on Modular InnoSetup Dependency Installer:
; github.com/stfx/innodependencyinstaller
; codeproject.com/Articles/20868/NET-Framework-1-1-2-0-3-5-Installer-for-InnoSetup

#define QuestVersion '5.8.0'
#define SetupVersion '580'

[Setup]
AppName=Quest
AppVersion={#QuestVersion}
AppVerName=Quest {#QuestVersion}
AppCopyright=Copyright © 2017/2018 Andy Joel, 1998-2016 Alex Warren
VersionInfoVersion={#QuestVersion}
AppPublisher=Andy Joel
AppPublisherURL=http://textadventures.co.uk/
AppSupportURL=http://textadventures.co.uk/help
AppUpdatesURL=http://textadventures.co.uk/quest/desktop
OutputBaseFilename=quest{#SetupVersion}
DefaultGroupName=Quest
DefaultDirName={pf}\Quest 5
UninstallDisplayIcon={app}\Quest.exe
OutputDir=bin
SourceDir=.
AllowNoIcons=yes
SolidCompression=yes
PrivilegesRequired=admin
ChangesAssociations=yes
MinVersion=6.0
UsePreviousSetupType=no

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "..\Quest\bin\x86\Release\*.*"; Excludes: "*.vshost.*,*.pdb,\*.xml"; DestDir: "{app}"; Flags: recursesubdirs
Source: "..\Dependencies\vcredist_x86.exe"; DestDir: "{tmp}"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Icons]
Name: "{group}\Quest"; Filename: "{app}\Quest.exe"
Name: "{commondesktop}\Quest"; Filename: "{app}\Quest.exe"; Tasks: desktopicon; WorkingDir: {app}

[Run]
Filename: "{tmp}\vcredist_x86.exe"; Parameters: "/quiet"; StatusMsg: "Installing components..."
Filename: "{app}\Quest.exe"; Description: "Launch Quest"; Flags: nowait postinstall skipifsilent

[Registry]
; File association: ASLX
Root: HKCR; Subkey: ".aslx"; ValueType: string; ValueName: ""; ValueData: "Quest-aslx"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "Quest-aslx"; ValueType: string; ValueName: ""; ValueData: "Quest Game Source"; Flags: uninsdeletekey
Root: HKCR; Subkey: "Quest-aslx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QUEST.EXE,0"
Root: HKCR; Subkey: "Quest-aslx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\QUEST.EXE"" ""%1"""
; File association: QUEST
Root: HKCR; Subkey: ".quest"; ValueType: string; ValueName: ""; ValueData: "Quest-quest"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "Quest-quest"; ValueType: string; ValueName: ""; ValueData: "Quest Game"; Flags: uninsdeletekey
Root: HKCR; Subkey: "Quest-quest\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QUEST.EXE,0"
Root: HKCR; Subkey: "Quest-quest\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\QUEST.EXE"" ""%1"""
; File association: QUEST-SAVE
Root: HKCR; Subkey: ".quest-save"; ValueType: string; ValueName: ""; ValueData: "Quest-quest-save"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "Quest-quest-save"; ValueType: string; ValueName: ""; ValueData: "Quest Saved Game"; Flags: uninsdeletekey
Root: HKCR; Subkey: "Quest-quest-save\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QUEST.EXE,0"
Root: HKCR; Subkey: "Quest-quest-save\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\QUEST.EXE"" ""%1"""
; File association: ASL
Root: HKCR; Subkey: ".asl"; ValueType: string; ValueName: ""; ValueData: "Quest-asl"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "Quest-asl"; ValueType: string; ValueName: ""; ValueData: "Quest Game"; Flags: uninsdeletekey
Root: HKCR; Subkey: "Quest-asl\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QUEST.EXE,0"
Root: HKCR; Subkey: "Quest-asl\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\QUEST.EXE"" ""%1"""
; File association: CAS
Root: HKCR; Subkey: ".cas"; ValueType: string; ValueName: ""; ValueData: "Quest-cas"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "Quest-cas"; ValueType: string; ValueName: ""; ValueData: "Quest Game"; Flags: uninsdeletekey
Root: HKCR; Subkey: "Quest-cas\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QUEST.EXE,0"
Root: HKCR; Subkey: "Quest-cas\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\QUEST.EXE"" ""%1"""
; File association: QSG
Root: HKCR; Subkey: ".qsg"; ValueType: string; ValueName: ""; ValueData: "Quest-qsg"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "Quest-qsg"; ValueType: string; ValueName: ""; ValueData: "Quest Saved Game"; Flags: uninsdeletekey
Root: HKCR; Subkey: "Quest-qsg\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QUEST.EXE,0"
Root: HKCR; Subkey: "Quest-qsg\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\QUEST.EXE"" ""%1"""


#include "scripts\products.iss"
#include "scripts\products\stringversion.iss"
#include "scripts\products\winversion.iss"
#include "scripts\products\fileversion.iss"
#include "scripts\products\dotnetfxversion.iss"
#include "scripts\products\dotnetfx40client.iss"
#include "scripts\products\dotnetfx40full.iss"

[CustomMessages]
win_sp_title=Windows %1 Service Pack %2

[Code]
function InitializeSetup(): boolean;
begin
	//init windows version
	initwinversion();

	if (not netfxinstalled(NetFx40Client, '') and not netfxinstalled(NetFx40Full, '')) then
		dotnetfx40client();

	Result := true;
end;

You could change the Setup settings from Quest to your game's name, the icon to whatever you like, and be sure to change the Registry settings so they wouldn't interfere with an official version of Quest, if already installed on the user's machine.

To have the installer run your game instead of just launching Quest, you could change this line:

Filename: "{app}\Quest.exe"; Description: "Launch Quest"; Flags: nowait postinstall skipifsilent

...to:

Filename: "{app}\Play.bat"; Description: "Play the Game"; Flags: nowait postinstall skipifsilent

...of course, you'd need to make sure you had all your files in whatever directories to which you point in your BAT file when loading the game. It may be easier to put the game file in the "Quest 5" folder and change the BAT script to:

@echo off
start "Quest 5\Quest.exe" "Quest 5\gamename.quest"

...and I'm not certain this would run correctly from the installer. This is because I'm not sure what the BAT file would consider to be the current working directory. I am sure that runs the game from the command line as long as both paths are correct.


This topic is now closed. Topics are closed after 60 days of inactivity.

Support

Forums