Forgive my dropping into the conversation to be critical, but in
<#node1> <#hide-under-rug> <#node2> .
#hide-under-rug does not seem like a predicate defining the relationship
between two nodes.
It's clear to see how this came about, as north_of and south_of could be
predicates (and easily confused with north, as modelled).
I'd suggest to model:
:node1 :permitsAction :action.
:action :leadsTo :node2.
where either:
:action rdf:type :NorthMove
(and :NorthMove rdfs:subClassOf :Move)
or some other predicate holds between :action and :north (which could
then be an individual - where the classification fits is a matter of taste).
One immediate advantage is the ability to allow other predicates to
apply to moves - while hiding under the rug might be generally
allowable, such games often require potions/weapons/etc. for certain
moves to be permitted. Such a :requires predicate could also be applied
either to the 'instance' (if modelled as such) or the 'class'. For example:
:node1 :permitsAction :castSpellOnWarlock1.
:castSpellOnWarlock1 :leadsTo :node2;
rdf:type :CastSpell ;
:requires :potion1 .
(In fairness maybe :CastSpell should be :SpellCasting, but I don't want
to be too pedantic)
Versus:
:node1 :permitsAction :castSpellOnWarlock1.
:castSpellOnWarlock1 :leadsTo :node2;
rdf:type :CastSpell .
:CastSpell :requires :potion1 .
(In which case wherever you're allowed to cast a spell it requires this
potion)
Barry
On 21/11/2010 00:43, Toby Inkster wrote:
On Sat, 20 Nov 2010 19:13:31 +0000
Toby Inkster<[email protected]> wrote:
I'd be happy to mock-up an interface - perhaps tonight!
Here are a few test nodes:
http://buzzword.org.uk/2010/game/test-nodes/london
http://buzzword.org.uk/2010/game/test-nodes/birmingham
http://buzzword.org.uk/2010/game/test-nodes/brighton
http://buzzword.org.uk/2010/game/test-nodes/hove
The vocab they use is:
http://purl.org/NET/game#
I've put together a little web-based client you can use to "play" the
game here:
http://buzzword.org.uk/2010/game/client/?Node=http%3A%2F%2Fbuzzword.org.uk%2F2010%2Fgame%2Ftest-nodes%2Flondon
Source code is here:
http://buzzword.org.uk/2010/game/client/source-code
As you should be able to see from the source, while the four test nodes
only link to each other, they could theoretically link to nodes
elsewhere on the Web, and the client would follow the links happily.
Melvster wrote:
However most book based text games will have a description added to
each link, rather than simply directions to travel.
The way I've written this client, the nodes themselves can extend the
pre-defined link directions:
<#node1> <#hide-under-rug> <#node2> .
<#hide-under-rug>
rdfs:label "hide under the rug" ;
rdfs:subPropertyOf game:exit .
The client will notice you've defined a custom direction, and offer it
as an option.
One possible addition, that would go way beyond what the CYOA books
could offer would be for the client to have a stateful store. So when
you entered a room, there could be a list of room contents which you
could collect into your store. The objects that you've collected could
then influence the progress of the game. Probably need to think a bit
more about how this should work.