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).
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,
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:
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
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.
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.
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
See above game.
See DarkLizerd. Also, see his game.
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.
This is my current Pokémon game. Very short.
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.
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.)
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.
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>!
<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!)
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>
All that being said, if you like the terminal, and you want to work from a text editor, you could check out QuestKit:
Edit and run online using Scratchpad:
You can install it to your system via NPM:
The example game:
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... 184.108.40.206 Connecting to docs.textadventures.co.uk|220.127.116.11|: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:
[email protected]:~$ mkdir example_questkit_game [email protected]:~$ cd example_questkit_game [email protected]:~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)... 18.104.22.168, 2a04:4e42:e::403 Connecting to docs.textadventures.co.uk (docs.textadventures.co.uk)|22.214.171.124|: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] [email protected]:~/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. [email protected]:~/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:
You can also play the game from the command line using the
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. >
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:
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):
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.