ADRIFT Forum


The place to discuss the ADRIFT Interactive Fiction toolkit

ADRIFT Vs ?

The place to chat about ideas, writing, this forum, or anything related to Interactive Fiction that isn't specific to ADRIFT.

Please also visit the Interactive Fiction Community Forum for further discussions.

Re: ADRIFT Vs ?

Postby Lazzah » Thu May 15, 2014 3:19 pm

Campbell wrote:Sorry, text replacements don't (yet) work with expressions.

:O NOW he tells me! :haha:
OUT NOW: The Lost Children
Current W.I.P.: Magnetic Moon
Also available: The Axe of Kolt, The Spectre of Castle Coris, The Fortress of Fear, Die Feuerfaust - The Fist of Fire
User avatar
Lazzah
Moderator
 
Posts: 2019
Joined: Thu Mar 31, 2011 4:54 am
Location: London, England

Re: ADRIFT Vs ?

Postby ralphmerridew » Thu May 15, 2014 10:53 pm

First, I'm not arguing about which is easier for the newbie. That's too subjective. I'm arguing that ADRIFT is lacking in power.

saabie wrote:Here is a quick demo I knocked up.
It has non-repeating random values - Go into the third room and keep pressing the button.
It has a sorted list of objects - Pick up a few things and check your inventory.
It does the check for valuable objects when you enter a room.
Examining an object will give its value (if it has one)
It has a featureless white cube that you can name - use "name cube fred"
Note: This was thrown together quite quickly, so don't expect it to be perfect :P


Do the cubes properly coalesce if you give multiple cubes the same name?

I am not saying that ADRIFT is easier or better than I7 when trying to do unusual things with it, I'm only saying that its possible.
Nor am I saying that ADRIFT could not be better, I have lots of outstanding enhancement requests for things I do think need improving.
The examples in my demo above could certainly be easier to do if ADRIFT had direct access to individual list elements, or if there were sorting functions, but it still only took 2 or 3 tasks to do each of the features that were asked for.


If I7 didn't include sorting functions, then any user could write them.

Straightforward selection sort:
[code="inform7"]
Every turn:
Let treasures be the list of valuable visible things;
if treasures is not empty:
Let sorted be a list of things;
while treasures is not empty:
let current be entry 1 in treasures;
repeat with tester running through treasures:
if the price of current > price of tester:
now current is tester;
add current to sorted;
remove current from treasures;
say "Your senses manually detect [sorted].";
[/code]

Your sorting code is somewhat brittle:
1) It requires all the objects be listed in restrictions, so it can't be placed into a module and used as-is. (The I7 can be placed in an extension, or just copy-pasted without modification.)
2) If the author adds another object later in the game, then a restriction must be added to the task. (The I7 code will work automatically with whatever objects are in the game.)
3) The order is rather rigid. (In my I7 example, if the price of an object is changed during the game, it will then sort based on the new price. If you use an alphabetical sort, and an object changes names, it'll sort based on the new name.)

With six objects, the ADRIFT version is about as long as the I7 version, except it doesn't work as well.

saabie wrote:
ralphmerridew wrote: The code for ADRIFT's "OneOf" function is written in C#, and is stored in Runner. In order to be able to produce a similar function, a person has to be Campbell Wild. Games that require the new OneOf won't work on old versions of Runner
But you can now write your own functions, including replacements for the general functions.
They do have some limitations yes, but you can always use an action to run another task if you need something more complicated.


User-defined functions don't seem that useful, compared to what you can do with custom functions in other languages, but, since you mentioned it:
Can you write a UDF that does the equivalent of OneOf?

saabie wrote:
ralphmerridew wrote: The code for Inform 7's "say one of" is written in Inform, and is stored in the game file. Any capable programmer can write their own tweaks to it.
Which is the whole point. ADRIFT is not for programmers, its for interactive fiction writers.
Its still by far the fastest system for quickly drawing a map of a game world and populating it with objects, and those objects can be doors or lockable containers or beds or chairs or lights that automatically illuminate a dark room when you enter it.
Quite complex interactions can be setup by spending no more than a few seconds ticking boxes on each objects property page.
But the biggest advantage of ADRIFT is that you don't have to stop and think HOW to do something.
In other IF systems you have to type out each function in full on the keyboard, which not only takes longer, but is more error prone.
In ADRIFT if you tick the boxes to make a container that a character can go inside of then you know it will always work first time.
If you need to type in several lines of commands to do the same thing, then it is much more likely that there will be a typo or you have written something the wrong way around, which means a lot more time in testing and debugging.


Again, I'm focusing on your and Lazzah's claims that ADRIFT has the same power, however:
1) I'm a touch typist. For me, typing code is faster than switching between mouse and keyboard with ADRIFT. (ADRIFT frequently requires picking things out of dropdowns, and that's slow.) Take a look at Speed-IF.
2) The syntax takes time to learn, but you only have to learn it once. (And really, is "The canvas bag is an open container in the Living Room." that complex to learn?)
3) Initially creating all the rooms and objects takes a small portion of the work time. Most of your work will be at the more complex parts, where ADRIFT

The more complex features of ADRIFT are not meant for the average user, they are there so that other people can write a library that they can then import into their game, adding more properties that they only need to tick or set to a value.
Other systems do the same thing, people write libraries that add extra features and other people use them, such as the code for Inform 7's "say one of" function.


Except that ADRIFT stumbles more and more as you try to do harder things.
ADRIFT has loops, but AFAICT it only allows loops over a list, going from start to finish in order, and you can only put a "Run Task" or a "Set List Element" type command into a loop. "Run Task" type loops only see the values in the array, not the indexes.
In Inform, you can put any sort of action into a loop. You can use any sort of loop condition. (For example, run a loop that keeps generating random numbers until it gets a number that is "acceptable" under some condition.)

I'm not sure why ralphmerridew used the I6 demo "Balances" as an example of what I7 can do, but here is the code for the featureless white boxes in that demo.
If "%Player%>Held.Count <= I" is rocket science then I think that makes the above 11-dimensional quantum mechanics :?

I wasn't arguing that Balances was an example of what I7 could do (I said it was I6); I said it was something that ADRIFT would have trouble with. I chose it because it is a fairly early game that shows some tricky parsing feats. Try playing it. (It uses and assumes the player is familiar with the spellcasting system from Infocom's Enchanter trilogy; let me know if you aren't.)

It's been a number of years since I played it:
1) There are four featureless white cubes scattered throughout the game.
2) The player has a magic burin, and can write words on the cubes.
3) If the player writes a word on the cube, then the player can refer to it by that word, and can't refer to it as "featureless".
4) If the player has multiple indistinguishable cube (all featureless or all having the same word), they are listed together (You are carrying ... two featureless white cubes ...); and won't raise disambiguation prompts if they aren't needed. (In other words, if the player has a featureless cube and a cube with a word, then "DROP CUBE" will ask which cube; if the player has two cubes with the same word, and types "DROP CUBE", no prompt will appear.

Also, ADRIFT code is a nuisance to read.
There will be a large number of do-nothing actions, just interesting text in response to failed attempts. In most languages, it's pretty quick to spot which parts are such (more importantly, which parts actually do stuff).

For example, in I7:
adrift Code: Select all
Instead of giving the hamburger to Frank:
        say "Frank replies, 'Sorry, I[']m vegan.'";
 
Instead of giving the bill to Frank:
        if Frank can see Joe:
                say "Frank angrily shouts, 'How dare you try to bribe me?'";
        otherwise:
                remove the bill from play;
                now Frank is happy;
                say "Frank looks around to see if anybody's watching, then quickly slips the bill into his pocket.  'Anything you need, just ask.'";
 


The ADRIFT GUI, while making everything discoverable to a new user, has its costs.

One, as mentioned above, is that using a mouse (particularly picking from dropdowns) tends to be slow compared to typing.

The first one is a do-nothing action. The second one actually does a small amount of work. That's immediately obvious in I7. You can look through a bunch of actions at the same time and see which ones are important.

In ADRIFT, under the GUI, you have to click on each task individually to look at it. All the information about a task is split over several tabs. Trying to identify pick out the important ones is tedious.

Exporting the game to a module doesn't help much, either. There's enough irrelevant stuff in each task that even a do-nothing action takes up a good deal of space; unless your screen is large, you'll be unlikely to see more than two tasks at a time.

If some task calls another, everything will be split even more.

Result: ADRIFT code doesn't get read much.

BTW, what other recent games have you played? How impressive something is depends on the perspective.
Bloodhounds can make you laugh and cuss in the same breath. They are endearing, faithful, and can sling drool ten feet in any direction. -- Virginia Lanier
User avatar
ralphmerridew
 
Posts: 2501
Joined: Fri Dec 13, 2002 11:56 pm
Location: Missouri

Re: ADRIFT Vs ?

Postby Lazzah » Fri May 16, 2014 5:49 am

Hey guys, isn't it about time we wound up all this nit-picking over which system is better than the other? You either like Adrift or you like Inform7...or Quest for that matter. In my opinion, it shouldn't matter WHICH system you use, the quality of the game is what I think is far more important!
OUT NOW: The Lost Children
Current W.I.P.: Magnetic Moon
Also available: The Axe of Kolt, The Spectre of Castle Coris, The Fortress of Fear, Die Feuerfaust - The Fist of Fire
User avatar
Lazzah
Moderator
 
Posts: 2019
Joined: Thu Mar 31, 2011 4:54 am
Location: London, England

Re: ADRIFT Vs ?

Postby saabie » Fri May 16, 2014 8:35 am

ralphmerridew wrote:First, I'm not arguing about which is easier for the newbie.
I'm not arguing about anything :yeah:
I'm just giving examples of how to do what you want in ADRIFT.
Do the cubes properly coalesce if you give multiple cubes the same name?
I didn't know they were supposed to :roll:
That I6 listing is so complicated that its hard to tell what its supposed to do.
It shouldn't be hard though, just replace the two objects with one if they have the same name.
ralphmerridew wrote:If I7 didn't include sorting functions, then any user could write them.
Straightforward selection sort:[code="inform"]
Every turn:
Let treasures be the list of valuable visible things;
if treasures is not empty:
Let sorted be a list of things;
while treasures is not empty:
let current be entry 1 in treasures;
repeat with tester running through treasures:
if the price of current > price of tester:
now current is tester;
add current to sorted;
remove current from treasures;
say "Your senses manually detect [sorted].";
[/code]
That could be duplicated exactly with two or three simple tasks (2 or 3 actions each), but would require enhancement request #18322 to store "current"
As an alternative, it should also be possible to copy the object names and prices into arrays, sort the arrays in parallel, then print out the results.
ralphmerridew wrote:Your sorting code is somewhat brittle:
1) It requires all the objects be listed in restrictions, so it can't be placed into a module and used as-is. (The I7 can be placed in an extension, or just copy-pasted without modification.)
2) If the author adds another object later in the game, then a restriction must be added to the task. (The I7 code will work automatically with whatever objects are in the game.)
3) The order is rather rigid. (In my I7 example, if the price of an object is changed during the game, it will then sort based on the new price. If you use an alphabetical sort, and an object changes names, it'll sort based on the new name.)
As I wrote in an earlier post:
me wrote:The listing in a specific order can be done lots of ways, the simplest would be to use actions to call the printing task once for each possible object (in the order you want to print them) and use a restriction to check if its in the list you want to print.
A more generic method would be to give each object an ID number as a property, then call a task (with list of objects as parameter) which calls another task (again passing the full list of objects), and use a counter variable to keep track of which object to print next.
There are many ways to do this, but you specifically asked:
ralphmerridew wrote:Call the printing task once for each object in the order you want to print them... How are you doing this?
for the quick-and-dirty method, so thats what I put in the demo.
The second method I described above is more suitable for a library and will handle any number of objects.
User-defined functions don't seem that useful, compared to what you can do with custom functions in other languages, but, since you mentioned it:
Can you write a UDF that does the equivalent of OneOf?
Nope, as I said, they have their limitations. They are only really meant for simple text replacement such as for language conversions.
But I CAN write the equivalent of UDF as a task, and have the result stored in a variable that I can use in text.
1) There are four featureless white cubes scattered throughout the game.
2) The player has a magic burin, and can write words on the cubes.
3) If the player writes a word on the cube, then the player can refer to it by that word, and can't refer to it as "featureless".
4) If the player has multiple indistinguishable cube (all featureless or all having the same word), they are listed together (You are carrying ... two featureless white cubes ...); and won't raise disambiguation prompts if they aren't needed. (In other words, if the player has a featureless cube and a cube with a word, then "DROP CUBE" will ask which cube; if the player has two cubes with the same word, and types "DROP CUBE", no prompt will appear.
The "featureless" can be put in the proper name instead of the descriptor so that it gets overwritten.
The disambiguation between identical objects is the only problem here, and there is a bug report in to get that fixed.
ADRIFT code is a nuisance to read.
Exporting the game to a module doesn't help much, either.
Why don't you write a little program that converts the XML into something more readable.
It should be quite easy to format it to look like TADS (and there may even be existing programs that reformat XML based on a template)
Lazzah wrote: Hey guys, isn't it about time we wound up all this nit-picking over which system is better than the other? You either like Adrift or you like Inform7...or Quest for that matter. In my opinion, it shouldn't matter WHICH system you use, the quality of the game is what I think is far more important!.
I agree, so I will not be responding to any further posts to this subject.
Last edited by saabie on Fri May 16, 2014 10:53 am, edited 1 time in total.
saabie
 
Posts: 836
Joined: Fri Aug 12, 2011 2:07 am
Location: Adelaide, South Australia

Re: ADRIFT Vs ?

Postby Po. Prune » Fri May 16, 2014 9:57 am

Lazzah wrote:Hey guys, isn't it about time we wound up all this nit-picking over which system is better than the other? You either like Adrift or you like Inform7...or Quest for that matter. In my opinion, it shouldn't matter WHICH system you use, the quality of the game is what I think is far more important!


Although I, to a certain degree agree with you Lazzah, I don't think we should wInd up this "Nit-picking" 8)
I totally agree with you that it's not all about the developer but what quality game comes out in the end.
There will always be arguments about which developer is the best and why so we might as well have a thread here people can let out some steam rather than have it spread through all the other topics.
That is why I made this thread.. It's a waterhole where people can discuss developers for better and for worse (please leave your weapons at the door rofl )
D-Day V.5 in progress 79Kb so far (slowly getting there)
Anno 1700 in progress 111Kb
User avatar
Po. Prune
Moderator
 
Posts: 3954
Joined: Mon Jun 24, 2002 8:18 am
Location: Denmark

Re: ADRIFT Vs ?

Postby Lazzah » Fri May 16, 2014 10:14 am

Po. Prune wrote:
Lazzah wrote:Hey guys, isn't it about time we wound up all this nit-picking over which system is better than the other? You either like Adrift or you like Inform7...or Quest for that matter. In my opinion, it shouldn't matter WHICH system you use, the quality of the game is what I think is far more important!


Although I, to a certain degree agree with you Lazzah, I don't think we should wInd up this "Nit-picking" 8)

P.O.Prune: If I didn't know any better, I would think that you actually ENJOY reading through rm's lengthy replies and trying to figure out what the hell he is on about! :haha:
OUT NOW: The Lost Children
Current W.I.P.: Magnetic Moon
Also available: The Axe of Kolt, The Spectre of Castle Coris, The Fortress of Fear, Die Feuerfaust - The Fist of Fire
User avatar
Lazzah
Moderator
 
Posts: 2019
Joined: Thu Mar 31, 2011 4:54 am
Location: London, England

Re: ADRIFT Vs ?

Postby David Whyld » Fri May 16, 2014 10:18 am

I'm quite enjoying the discussion myself, even if I don't understand half of what ralphmerridew and Saabie are talking about.

Back when I was using ADRIFT, I'd have responded to ralphmerridew's points by saying that "No, ADRIFT isn't as powerful as Inform and can't do everything that Inform can, but it can still do enough to allow people to write great games with it." The power of one system or another isn't always the most important factor as very few games ever utilise that power. Look at Quest. Loads of power but the great majority of games written with it are the most basic IF games around so all that power is wasted.
David Whyld
 
Posts: 6555
Joined: Sat Dec 18, 2004 5:15 pm
Location: United Kingdom

Re: ADRIFT Vs ?

Postby Campbell » Fri May 16, 2014 10:20 am

saabie wrote:Why don't you write a little program that converts the XML into something more readable.
It should be quite easy to format it to look like TADS (and there may even be existing programs that reformat XML based on a template)
XSLT should make that pretty easy.
ADRIFT Developer developer.
User avatar
Campbell
Site Admin
 
Posts: 4570
Joined: Sun Jun 23, 2002 11:05 am
Location: Edinburgh, Scotland

Re: ADRIFT Vs ?

Postby Hordriss » Tue Sep 16, 2014 7:55 pm

I'll repeat something I said earlier in a different thread. My view is that of an IF-authoring newcomer, and non-programmer to boot.

I tried Inform 7 first, as at first glance it seemed the easiest. However, I found even the basics difficult to grasp and ended up with so many errors trying to do basic things I just gave up.

I had a look around the GUI for quest and just thought "WTF is this". So unintuitive.

Adrift on the other hand just works for me. I find it easy enough to understand, and I am some way towards completing my first game.
Hordriss
 
Posts: 30
Joined: Fri Nov 08, 2013 10:11 pm

Re: ADRIFT Vs ?

Postby Lumin » Fri Nov 21, 2014 6:28 am

Campbell wrote:
Lazzah wrote:As a non-programmer, I have to reluctantly admit that the Inform7 way of doing things looks much more user-friendly than the ADRIFT5 way.
(Sorry Campbell :blush: )

If you prefer that way, why not create a Text Override like so, and stick it in your library:

adrift Code: Select all
Original text: [number of objects held by player]
Replacement text: %Player%.Held.Count

Once you've done that, you'll never have to type the function in again.



I know this is an old thread, but ' :shock:' pretty much sums up my expression upon reading this. I never had any idea that was possible. I want to go through now and make one big text override to cover every single function with more natural sounding text.

Maybe I should start fooling around with libraries more.

e: As opposed to fooling around in libraries which more often than not just gets you glared at and asked to leave... :P
Currently working on: Nada. Zip. Zilch. [Check this space later.]
User avatar
Lumin
 
Posts: 1613
Joined: Fri Aug 06, 2004 5:48 pm
Location: Texas

Re: ADRIFT Vs ?

Postby razor77 » Sat Nov 22, 2014 2:24 pm

i have yet to see an easier program than adrift 5.0. Inform was never understandable to me. i can do everything i want with adrift. there are a few things id love to see improved. Namely the ability to change varibles, char properties and moving objects/characters through expressions on the fly inside text descriptions.
razor77
 
Posts: 81
Joined: Mon Sep 05, 2011 8:18 pm

Re: ADRIFT Vs ?

Postby Lumin » Sat Nov 22, 2014 7:06 pm

Not to open this ol' can of worms, but I've used an easier program...it was called ADRIFT 4.0. ;)

Of course there's a lot 5 does that 4 couldn't, but if we're just talking about learning curve the latter wins hands down.
Currently working on: Nada. Zip. Zilch. [Check this space later.]
User avatar
Lumin
 
Posts: 1613
Joined: Fri Aug 06, 2004 5:48 pm
Location: Texas

Re: ADRIFT Vs ?

Postby David Whyld » Sat Nov 22, 2014 8:06 pm

Lumin wrote:Not to open this ol' can of worms, but I've used an easier program...it was called ADRIFT 4.0. ;)

Of course there's a lot 5 does that 4 couldn't, but if we're just talking about learning curve the latter wins hands down.


Quoted for truth.

Ease of use beats complexity any day. Hence why a system like Twine has become immensely popular while hardly anyone uses TADS these days. Or why ADRIFT 4 was immensely popular whilst hardly anyone... etc etc
David Whyld
 
Posts: 6555
Joined: Sat Dec 18, 2004 5:15 pm
Location: United Kingdom

Re: ADRIFT Vs ?

Postby razor77 » Sat Nov 22, 2014 9:43 pm

I do not understand how 4 could be seen as easier to use. I used it and found it very counter intuitive and troublesome. Particularly the language resource setup. I had a project functional in an hour or less in 5 but to each their own.
razor77
 
Posts: 81
Joined: Mon Sep 05, 2011 8:18 pm

Re: ADRIFT Vs ?

Postby David Whyld » Sat Nov 22, 2014 9:54 pm

I'd love to know in what way you found 5 easier.
David Whyld
 
Posts: 6555
Joined: Sat Dec 18, 2004 5:15 pm
Location: United Kingdom

PreviousNext

Return to General IF

Who is online

Users browsing this forum: No registered users and 5 guests