Would Quest be the engine suiting my needs?

Hi, I would like to build some games with something like Quest. As far as I can understand, other tools provide similar features (like Twine for instance), but I think Quest would be the most convenient for me. Before getting invested further in it, I would like to check quickly if this is truly the case.

a) I am a programmer; my favorite environment is on the terminal and I really need to code with my text editor. I can perfectly write XML files if needed; on the other hand, I don't want to rely on any graphical interface (at least until the final compiling step if I have to launch the main program; of course compiling from the command line would be the best for me but it is OK to do it with an interface if I can everything else with a text editor).

b) I want HTML/javascript output; I think this is the preferred output format for many tools like Quest. By the Way, did someone already experiment embedding the whole output in a mobile app with Cordova? Does the license allow publishing such apps?

c) I am not really interested by writing long stories; I would like to write short games intended to be played several times and highly relying on random attributes. More precisely, I would like to write games like http://www.johnayliff.com/games/seedship/ (this one was coded with Twine I think) where the player repeatedly comes in the very same situation with new random features (in this game, each new step is a new planet with new random attributes). In other words, I would like to repeatedly cycle on the same pattern made of two or three "rooms" with a randomly changing content.

d) Could something like a "Pokemon battle" be implemented: you are in a room fighting against a "monster"; some attributes are displayed; you have the choice between a few "attacks"; each choice involves computing some dammages; new attributes are displayed "screen is refreshed" and the fight goes further on.

e) Could some basic stats/attributes be printed at a fixed place (top of the screen) like "Day 42, sunny weather, HP: 56/100, strength: 12", inventory, etc?

f) Is the underlying programming language strong enough for implementing elaborated algorithms (for instance computing the result of an attack according to kind of weapons, statistics, various "flags", etc.)?

g) can the content of a room be algorithmically generated (for instance if you repeatedly enter the same "room", it could be expected that the difficulty level of this step increases over the time, monsters be more dangerous, etc.)?

Thank you by advance,

best regards.


In short, yes, I believe Quest can handle all that. And fairly easily too, especially if you know how to code already.


yes, quest's coding is pretty "easy" to learn (at least if you're already a coder/programmer), and there's lots of documentation to help, and as well as help from us too, hehe.

quest's 'aslx' OOD/OOP (the OBJECTS are called known as Elements: http://docs.textadventures.co.uk/quest/elements/ ) code is like html/xml, and its scripting syntax is similar to C++/Java, but it also has Lists (arrays) and Dictionaries Data Types like Python, as well.

and its Data/Value/Attribute/Variable/VARIABLE types: http://docs.textadventures.co.uk/quest/types/

as well as a ton of built-in stuff, and a lot more stuff that pixie has been adding to it, as well.

the quest engine itself is made up of library files, so you could create your own unique quest engine, hehe. It's very powerful!

Also, the parser understands the usage of html/xml scripting as well within its (quest's 'aslx') scripting. Though, I think you got to encase the scripting within the 'CDATA' tags if any of the html/xml scripting uses the '<,>' characters/symbols.

Also, quest uses/recognizes JS too, as well as, html/xml and CSS. It already has a good UI/GUI, but you can also customize your own as well too.


exploring the documentation may give you the best idea of what quest has built-into it and what it can do:

http://docs.textadventures.co.uk/quest/

http://docs.textadventures.co.uk/quest/tutorial/

https://github.com/ThePix/quest/wiki
https://github.com/ThePix/quest/wiki/Quest-Source-Code

or jsut ask us about anything as well. Especially Pixie, as he's the one working on updating quest, he knows quest really well.


oh, quest can handle coding, laughs. You can make a TES:Skyrim with quest (minus the 3d world obviously), full complex advanced RPG systems (combat, magic, storage, equipment, dialogue/conversations, events, dynamic/random movement/etc, items, etc etc etc).


b) No, you can't create HTML/JS games with Quest. You must upload your game here on this server or play it with the installed Windows Quest application


b) To add to Pertex, when a player plays your game the output is into a briwser window, with full HTML/JavaScript support. However, you cannot compile your game into a HTML/JavaScript version that you can upload to your own web site in the way Twine does.

With regards to the rest, Quest offers a lot. Unlike Twine and similar, Quest supports a game world in which items and locations are objects that have meaningful state and relationships with each other. You can randomly create items and locations to procedurally create an entire world.

I personally code within Quest, letting Quest do the XML, but typing the code myself, but if you want to type the XML too, you could do that. You could even write a program to procedurally generate the XML for you... That said, you would need to be using the desktop version.

Here is a library that would handle combat. You may prefer to start from scratch, but it shows what is possible.
https://github.com/ThePix/quest/wiki/CombatLib


General advice, use the Desktop/computer version if you want to compile a game into JavaScript or HTML.

D

I'm actually working on a Pokémon game right now. Slowly though. I'm not even an experienced programmer, I'm just working with borrowed code. I have also had at least 2 major glitches that broke the entire game file, but I was able to copy the code to a new file and everything is fine now. (I have barely gotten it to move the monsters into the inventory after defeat. I have thought of a way to read an attribute so I can have them have multiple move choices, but I am still fixing my last game file crash, and I am pitting off all that for later.)

Other than that, no one has made any Pokémon type code.

E
Someone has made code for keeping track of days and time. Keep in mind, you'd have to figure out a way to count the days by yourself.
Yes, you can have stats. See this game. http://textadventures.co.uk/games/view/5jllte-m4e2e2whw4gf5jq/pokemon-type-harley-johto-and-sinnoh

F
See above game.

G
See DarkLizerd. Also, see his game.
http://textadventures.co.uk/games/view/z80i597m50wk__83uezg_q/wumpus-2-0

Extra:
Text adventures.co.UK has a 20 MB upload limit. This won't be a problem if you end up making your own website/ web link. If your game doesn't have images or sounds, or try generating 1000+ rooms at once, it likely won't pass the 5 MB mark.

Also, these are all games with combat.
http://textadventures.co.uk/games/view/kmwqh7zyrkcrseuqrzuigg/zombie-2
http://textadventures.co.uk/games/view/xb0ge9kzbewhodrtmxnnqw/the-legend-of-the-secret-of-the-smelly-stinky-fish

This is my current Pokémon game. Very short.
http://textadventures.co.uk/games/view/yhrkqgyug0chhdt0xwyaqq/pokemon-type-harley-johto-and-sinnoh


Hey.
K.V. said this. He said sure, I can quote him.

>It's still possible though.
There is a very slim chance it will compile to a website.
If it does compile, there are quite a few things that won't work, like the map and the verbs menu when you click on an object. (There are other things of which I'm not aware, too, I'm sure.)
>And I thought Squiffy could do just that?
Squiffy creates websites, but it doesn't work like Quest at all. You can only make gamebooks.
>And, can I quote you in the thread?
Sure.
...but you'll only be setting the person up for probable failure.
Like I say: even if it does compile the game to a website (which probably won't happen), the result will lack functionality.
That's why I just kept my two cents to myself this time. (It was hard to do that, too! Ha-ha!)
Anyway, if you feel that you should let the fellow forumer know about Quest JS, here are the links:
Main page:
https://github.com/KVonGit/quest-js
Latest "release" download:
https://github.com/KVonGit/quest-js/releases
Known issues:
https://github.com/KVonGit/quest-js/issues
Honestly, if their ultimate goal is a text adventure compiled to a fully functional website, they are really better off using Inform 7.
You just add the line: Release along with a website and an interpreter.
Then, you have a website.

He also said something about we all want people on this site. But meh, you have your own needs.


K.V.

If you make a simple game, with no map, and you disable the hyperlinks, it will probably compile to a website using QuestJS.

You can't use the create script, either. (I know that one causes problems.)

Using SetTimeout() will fail, as well.


The only reason you'd need to compile your game to a website that I can think of would be to convert your game to an app.

Linking to your game (after publishing on this site) is probably the best (and easiest) way to handle it.


Example 1:

You can just publish your normal Quest game on this site, then link to game's "Play online" url.

<a href='http://textadventures.co.uk/games/play/hvusvk64lugv2x5hon3exg' title='Play online at http://textadventures.co.uk/games/play/hvusvk64lugv2x5hon3exg'>Play my hangman game</a>!

Play my hangman game!


Example 2:

<a href='http://textadventures.co.uk/games/view/hvusvk64lugv2x5hon3exg/pick-a-letter' title='Visit the main page at http://textadventures.co.uk/games/view/hvusvk64lugv2x5hon3exg/pick-a-letter'>Visit my hangman game's main page</a>!

Visit my hangman game's main page!
(If you start from here, and you have an account, you can save your progress!)


Example 3:
Using an iframe (This may not display on this forum, but it shows up while previewing this post. You could probably just use this in an app, too.):



<iframe src='http://textadventures.co.uk/games/play/hvusvk64lugv2x5hon3exg' width='100%' height='600px'></iframe>



K.V.

All that being said, if you like the terminal, and you want to work from a text editor, you could check out QuestKit:

http://docs.textadventures.co.uk/questkit/

Edit and run online using Scratchpad:
http://docs.textadventures.co.uk/questkit/scratchpad/?src=/questkit/samples/example.yaml


NOTE: Questkit doesn't have very many of Quest's features, but you can make a basic text adventure.


You can install it to your system via NPM:

WIndows:

C:\Users\kv>npm install questkit -g
C:\Users\kv\AppData\Roaming\npm\questkit -> C:\Users\kv\AppData\Roaming\npm\node_modules\questkit\questkit.js
C:\Users\kv\AppData\Roaming\npm
`-- [email protected]
  +-- [email protected]
  +-- [email protected]
  +-- [email protected]
  | +-- [email protected]
  | | `-- [email protected]
  | `-- [email protected]
  `-- [email protected]


C:\Users\kv>questkit
QuestKit 6.0.0-alpha.5
Compiles a QuestKit script file into HTML and JavaScript.
For help, see http://docs.textadventures.co.uk/questkit/
Usage: C:\Program Files\nodejs\node.exe C:\Users\keega\AppData\Roaming\npm\node_modules\questkit\questkit.js filename.yaml [options]

Options:
  --cli         Generate command-line version
  --scriptonly  Only generate JavaScript file (and optionally specify a name)
  --pluginname  Specify the jQuery plugin name instead of .questkit (only with --scriptonly)

Not enough non-option arguments: got 0, need at least 1


Using *Nix:

kv@LAPTOP:~$ sudo npm install questkit -g
[sudo] password for kv:
/usr/local/bin/questkit -> /usr/local/lib/node_modules/questkit/questkit.js
/usr/local/lib
└─┬ [email protected]
  ├── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ ├─┬ [email protected]
  │ │ └── [email protected]
  │ └── [email protected]
  └── [email protected]

kv@LAPTOP:~$ questkit
QuestKit 6.0.0-alpha.5
Compiles a QuestKit script file into HTML and JavaScript.
For help, see http://docs.textadventures.co.uk/questkit/
Usage: /usr/local/bin/questkit filename.yaml [options]

Options:
  --cli         Generate command-line version
  --scriptonly  Only generate JavaScript file (and optionally specify a name)
  --pluginname  Specify the jQuery plugin name instead of .questkit (only with --scriptonly)

Not enough non-option arguments: got 0, need at least 1

The example game:

example.yaml

title: QuestKit demo

---
location: room
description: This is a simple example of a room in QuestKit.
south: another room

---
object: book
look: This is an object. You can pick me up and drop me somewhere else.
take: true

---
location: another room
description: This is another room.

Compiling the example game using Windows:

C:\Users\kv\example_questkit_game>mkdir example_questkit_game

C:\Users\kv\example_questkit_game>cd example_questkit_game

C:\Users\kv\example_questkit_game>wget http://docs.textadventures.co.uk/questkit/samples/example.yaml
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\gnuwin32/etc/wgetrc
--2018-01-15 20:27:47--  http://docs.textadventures.co.uk/questkit/samples/example.yaml
Resolving docs.textadventures.co.uk... 151.101.45.147
Connecting to docs.textadventures.co.uk|151.101.45.147|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 285 [text/yaml]
Saving to: `example.yaml.1'

100%[================================================================================================================================>] 285         --.-K/s   in 0s

2018-01-15 20:27:47 (8.83 MB/s) - `example.yaml.1' saved [285/285]
C:\Users\kv\example_questkit_game>questkit example.yaml
QuestKit 6.0.0-alpha.5
Loaded 27 sections
Writing story.js
Writing index.html
Copying jquery
Copying bootstrap
Writing style.css
Done.

C:\Users\kv\example_questkit_game>dir
 Volume in drive C is Windows
 Volume Serial Number is 8844-6C0E

 Directory of C:\Users\kv\example_questkit_game

01/15/2018  08:26 PM    <DIR>          .
01/15/2018  08:26 PM    <DIR>          ..
01/15/2018  08:26 PM           121,200 bootstrap.min.css
01/15/2018  08:26 PM            37,045 bootstrap.min.js
05/10/2016  02:05 PM               285 example.yaml
01/15/2018  08:26 PM             1,600 index.html
01/15/2018  08:26 PM            85,578 jquery.min.js
01/15/2018  08:26 PM            32,124 story.js
01/15/2018  08:26 PM               875 style.css
               7 File(s)        278,707 bytes
               2 Dir(s)  253,051,723,776 bytes free

C:\Users\kv\example_questkit_game>

Compiling the example game using *Nix:

kv@LAPTOP:~$ mkdir example_questkit_game
kv@LAPTOP:~$ cd example_questkit_game
kv@LAPTOP:~example_questkit_game$ wget http://docs.textadventures.co.uk/questkit/samples/example.yaml
--2018-01-15 20:32:22--  http://docs.textadventures.co.uk/questkit/samples/example.yaml
Resolving docs.textadventures.co.uk (docs.textadventures.co.uk)... 151.101.57.147, 2a04:4e42:e::403
Connecting to docs.textadventures.co.uk (docs.textadventures.co.uk)|151.101.57.147|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 285 [text/yaml]
Saving to: ‘example.yaml’

example.yaml                              100%[===================================================================================>]     285  --.-KB/s    in 0s

2018-01-15 20:32:23 (6.79 MB/s) - ‘example.yaml’ saved [285/285]

kv@LAPTOP:~/example_questkit_game$ questkit example.yaml
QuestKit 6.0.0-alpha.5
Loaded 27 sections
Writing story.js
Writing index.html
Copying jquery
Copying bootstrap
Writing style.css
Done.
kv@LAPTOP:~/example_questkit_game$ ls
bootstrap.min.css  bootstrap.min.js  example.yaml  index.html  jquery.min.js  story.js  style.css

I zipped up the files in that directory, and submitted that zip file as a game on this site.

Here's what I ended up with:
http://textadventures.co.uk/games/view/lwpgtxt_902eqjky5geq-q/example-questkit-game


You can also play the game from the command line using the --cli option:

C:\Users\kv\example_questkit_game>questkit example.yaml --cli
QuestKit 6.0.0-alpha.5
Loaded 27 sections
Writing story.js
Done.

Running C:\Users\kv\example_questkit_game\story.js
Type "q" to exit

You are in a room.
You can see a book.
You can go south.
This is a simple example of a room in QuestKit.

> get book
You pick it up.

> s
You are in an another room.
You can go north.
This is another room.

>


K.V.

Also (and this is very cool, I think), you can code in YAML, then convert that file to XML format to paste into a Quest game using Ruby:

https://github.com/ThePix/quest/wiki/YAML-to-Quest-(using-Ruby)


I have a modified version, which saves a library file (which you can simply "include" using the Desktop editor, without having to copy and paste any code):
https://gist.githubusercontent.com/KVonGit/ccdb870a6b7d894ed60ce4907443d3bf/raw/9d71ccea5941dfbfc560ee0d5d22687bd36fe6fe/YAMLtoQuestLib.rb

To compile with my mod:
ruby YAMLtoQuestLib.rb "example.yaml"

NOTE: Substitute your filename for "example.yaml", but keep the quotation marks.

So, if you created rooms.yaml:
ruby YAMLtoQuestLib.rb "rooms.yaml"will create roomsLib.aslx in the same directory.


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

Support

Forums