--
You received this message because you are subscribed to the Google Groups "project6014-dev" group.
To view this discussion on the web visit https://groups.google.com/d/msg/project6014-dev/-/6opM-NExbTsJ.
To post to this group, send email to project...@googlegroups.com.
To unsubscribe from this group, send email to project6014-d...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/project6014-dev?hl=en.
There are a few examples there, but we probably need an expert to
translate a first conversation so the rest of us know how it'll connect
with the game.
--
You received this message because you are subscribed to the Google Groups "project6014-dev" group.
To post to this group, send email to project6014-dev@googlegroups.com.
To unsubscribe from this group, send email to project6014-dev+unsubscribe@googlegroups.com.
To post to this group, send email to project...@googlegroups.com.
To unsubscribe from this group, send email to project6014-d...@googlegroups.com.
For the dialog writers, (Ariel?) I'd like a little feedback on what you can handle. See below in the interlinear quotes.
Spurred by the recent conversations, I've gotten back to it. I'm almost to the compile and test stage. The blocking issue was a big refactoring from my structures containing strings to their containing indices into a string table.
The other blocking issue was my having to understand better how the UQM conversation code works. The only documentation is variable and function names, and the header files unhelpfully define superfluous macros that indirect the other calls in not very helpful ways. I think I've got a handle on the relevant parts of it now, so I may get it together soon.
Anyway, rewriting the other language in the event of changes will be comparatively easy once I've got it hooked up. Not exactly easy, but it's all stuff that I know how it works.
So, anyway, Joris' email was very interesting, if only from the in-progress alternate implementation, in JS no less!
> (with the exception of conditions and consequences; I'm going to do some nasty eval magic for those, so I'm storing them as strings now
I store them as strings too, and evaluate via string surgery. That was pretty painful in C, what with manual memory management and having to figure out the lifetime of every intermediate string.
On Apr 24, 2012, at 4:45 PM, Joris van de Donk wrote:
> So far, I have the following comments, mostly based around my implementation efforts and my attempts at reading/understanding some of the more advanced examples:
>
> - There is some annoying 'obscure logic', for example with the way that certain conditions for options are implied based on previous options with the same name (in the docs:"option hi >said_hi // implicitly =SLUGS_DEFEATED due to also being a 'hi' option.").. I'd strongly advise removing that little feature...
I do not think this is obscure at all. Go down the list, use the first that fits. Think of it as chained 'else if' !
Don't forget, names are optional on options. You can leave them all independent.
- > Do other dialog writers think this idea is complicated?
> - Same goes for the various scopes. Although I like the scoping, I think it's *way* too obscure and unintuitive. If we have to tell everyone to read the docs intently before writing dialogues, nobody will write them or the dialogues will be buggy as hell.
All three are utterly vital. Maybe the syntax can change, but I think it's pretty intuitive.
The idea is just that you need to keep track of some things only for the length of the conversation... some things have only to do with this race... and some things are global to the game...
and you indicate which is which by letting something that's the first sort have a lowercase name... the second you use a MixedCase name, and the last has an ALL_CAPS name.
- > Do other dialog writers think this is complicated?
> - Remove the SQRT and POW functions. Put them back into the specs once we need them. I don't think we need them.
It's trivial to ignore them if you don't need them, and they're already implemented in C.
- > Do other dialog writers think this is a major distraction?
> - Make everything an integer, and make the "!" condition evaluate to "VALUE==0" and the "=" condition evaluate to "VALUE==1" where VALUE is the body after the ! or = sign. Convert 'true' to '1' and 'false' to '0', so "=Reputation>50" evaluates to "(Reputation>50)==1". The docs vaguely refer to booleans and/or integers, and there's that "#" sign that crops up at places but was never properly introduced (I assume it meant "parseInt()" or something?).
I already got rid of the # symbol and believe I changed the documentation to reflect this change, a long time ago. Everything is now, as you say, int typed.
> - Remove the + and - operators (set/unset). Replace them with a single 'set' operator ("$"?). Want to set a flag? $hasbomb=1. Unset a flag? $hasbomb=0. Toggle flags with something like $hasbomb=!hasbomb. Not very readable, but more understandable.
maaaybe. Readability is, IMO, far more important than keeping the symbol list under control. There are only 5 special symbols anyway, and they all have obvious mnemonics: + - < > ~
- > Do other dialog writers think this would be an improvement?
> - The ">" and "<" compounds should be removed, since they require reading of the documentation. I understand why they were added, but they just make it harder for the dialogue writers to understand existing dialogue.
I really doubt it. If you need to write it twice (check and set), it introduces opportunities for insidious one character off errors. Also, it's an atomic operation - a state transition. It's such a common idiom that breaking it up seems perverse.
- > Do other dialog writers think this would be an improvement?
> - Can consequences be placed at the end of a 'block'? That way, we get something like ".fight +Rep=-1", rather than "option =HAVE_SLUG_REPELLENT +Rep=-1"
Maybe that would work, but it gets in the way of the '>', which is a good thing to have as described above.
> That's it so far. I'm sure some of my suggestions may be slightly idiotic to people that truly understand the dialogue language, so ignore those. :)
Not idiotic for sure! I've probably written way more in it than you, though, since I have a very similar language implemented in java already.
Luke
> Can, at the very least, we get an example of a dialog file
> explaining the different features? there was one a while back ( don't
> remember who invented it)
> that way we can start writing dialog independently from code.
There is an example at the bottom of the wiki page, http://code.google.com/p/project6014/wiki/DialogLanguage
I just now beefed up the comments on the example dialog a lot. Maybe that will help.
I plan on converting the Pkunk dialog to this language, and when I do one can look through that to see how it's organized.
Luke
Any idea how I can get it not to do that? Using mac 10.6.8, the svn that comes up in terminal without special effort.
Luke
I can't wait to see this implemented into the game engine. Very cool stuff.
option GoodHi =ChmmrFixed
[friendlyHi]
.main
option GoodHi =ChmmrFriendly
[friendlyHi]
.main
text friendlyHi
Howdy there, mechanoids!
GREETINGS, CAPTAIN.
.
Luke
--
You received this message because you are subscribed to the Google Groups "project6014-dev" group.
I do have one question:
When writing some dialog for the Mycon, and there's a "DAYS_TO_DEATH" variable that should change the greeting as it draws closer to death. I can set the variable when you first greet it, but I'd want the timer to be based off, let's say 500 days from when you start the game.I can manually set the variable every time I want to test a conversation, but that's a bit labor intensive. It would help if I could set some line for testing, sort of like an autoexec.bat. Something to define it even before the greeting. A line like:=DAYS_TO_DEATH=500The number could easily be changed for testing.
greeting =DAYS_TO_DEATH>200blah.myNextNodegreeting // 200 or fewer days to deathurk.myNextNode
greeting +DAYS_TO_DEATH=500[greet].myNextNodetext greet =DAYS_TO_DEATH>200blah.text greet // 200 or fewer days to deathurk.
--
I have managed to build with glib on Linux if that helps. See the diffs in:
http://code.google.com/p/project6014/source/detail?r=2316