| 09-29-2007, 11:03 PM | #1 |
Anyway, here's a system that's going to be used extensively in Project Pathetic. Basically, it lets you easily and quickly have up to 4 different decisions you can make, slickly integrated seamlessly into WC3. Really simple to use, both for the user and for the triggerer (GUI or JASS). Too much to be believed? I've just knocked together this quick test level to display it (two convos, and quite interesting content, though somewhat linear overall due to time constraints - it IS a test map). Note that it ends after two conversations, but doesn't exit. Basically, I'm looking for feedback on both the system specifically, and on multilinear conversations (and plots). Discuss. |
| 09-30-2007, 02:08 AM | #2 |
You, sir, are amazing. As to non-linear plots, I'm not quite sure what you want to be discussed, but I do think that you hit the nail pretty much square on the head here - arrow keys are the way to go for this system. The only thing I might do is add an event for ESC, so that we can set up stuff like: "What did you want to talk about?" Up: "You, of course..." Left: "The war, it's not going so well..." Right: "What do you think of me?" Down: "I need to vent, and you're here..." ESC: "Err... nothing, sorry..." On ESC: "Okay, suit yourself." And end conversation, or, if you pressed UP: "Well, what do you want to know about me?" Up: "How did you come to Azeroth?" Left: "Let's talk about how we met..." Right: "Nothing, I just want to look at you..." Down: "How old did you say you were?" ESC: "Actually, I changed my mind..." On ESC: "Oh, okay. So what did you REALLY want to talk about?" Up: "You, of course..." Left: "The war, it's not going so well..." Right: "What do you think of me?" Down: "I need to vent, and you're here..." ESC: "Err... nothing, sorry..." etc. |
| 09-30-2007, 02:15 AM | #3 |
That was pretty freaking amazing. Now polish it to look awesomely badass too. I want Project Pathetic now. |
| 09-30-2007, 09:26 AM | #4 |
By the way, actual credit to the idea should probably go to those gods over at BioWare working on Mass Effect. Hmm...escape key. Yea, I should probably add that in. Not much extra work. Thanks for the feedback. |
| 09-30-2007, 10:54 AM | #5 |
Code:
↑ ...What? ← Uh...Sure. ↓ I'm sorry, I don't spea--DIE!!! → 为什么是, 我爱饼 Can you use these arrow characters in the editor? I think they're cleaner than "Up Arrow, Down Arrow", etc. There's also, Code:
▲ ...What? ◄ Uh...Sure. ▼ I'm sorry, I don't spea--DIE!!! ► 为什么是, 我爱饼 |
| 09-30-2007, 12:20 PM | #6 |
Nope, afraid not. Anyway, added support for escape key. Also changed all references to Arrows to Keys in the system, and all references to Keys to Indexes, so as to make it clearer. This has of course killed backward compatability (which affects nothing). On top of that, having a key of "" passed for a decision adds it to the first one that's free (which can then be accessed by checking for the returned Index string). Anyway, this means that you can dynamically put in up to 5 decisions drawn from a pool of any size (limited only by your coding patience). |
| 09-30-2007, 02:40 PM | #7 |
Update: Well, I've fixed a few bugs, and also updated things. Here's a version that works with normal WE (note that the version don't have identicle syntaxes). Anyway, this is mainly for that foo' Rao. |
| 09-30-2007, 02:40 PM | #8 |
You know, it would be really awesome if convo.AddDecision() took a function as an argument, and called it when that decision was pressed. This would kill GUIers, but Jassing this would become much easier. JASS:function A1 takes nothing returns nothing //do stuff endfunction function Start takes nothing returns nothing call CONVO.ClearDecisionAll() call CONVO.AddDecision("up","[Ugh]","A1",function A1) endfunction So that you don't have to do CONVO.WaitForOutput(true), then see which was pressed, and then do stuff. (Of course, I don't know what the new version looks like EDIT: ooooh! Now I can!) A final thing I would do, which nobody I talk to seems to agree with me on, is add a delay to the system (between Key Press and function call). Something as short as .3 seconds makes a big difference. Weaaddar's Bag had this, and felt very much like a book, because of the tiny delay. Vexorian's InvX did NOT have this, and everything felt a bit too... jerky. InvX is still nice, it just didn't seem as natural as Weaaddar's system. |
| 09-30-2007, 02:45 PM | #9 | |||
Quote:
I've already considered that, and will ad some point add it as a seperate function (say, AddDecisionCode or something). Not right yet, though, since it isn't a priority since I don't code in JASS for conversations and stuff. Quote:
The new version is basically identicle externally, but is a lot sleeker internally, despite not requiring vJASS (the old code was overly messy). Quote:
Hmm...an interesting idea...I'll consider it. |
| 09-30-2007, 03:15 PM | #10 |
Hmmm.... I can't say I agree with you - I think the old code was nicer externally - but that's probably just my love of '.syntax'. I don't really understand what the idea of index ("a") is for, and why you need to specify it in AddDecision(), but I think that the Key ("up","down",etc.) could be improved if it used integers. You could, of course, add in some globals: JASS:globals constant integer KEY_UP=1 constant integer KEY_DOWN=2 constant integer KEY_LEFT=3 constant integer KEY_RIGHT=4 constant integer KEY_ESC=5 endglobals Assuming the user is using the globals, they will not have issues with typing "dwon" instead of "down", as Syntax Checker will see KEY_DWON, and report an error (undefined variable). Ideally, I would say that a user interface somewhere close to: Trigger: for GUIers and: JASS:function WhereAmI takes nothing returns nothing endfunction function Start takes nothing returns nothing call CONVO.AddDecisionCode(KEY_UP,"Where am I...?", function WhereAmI) endfunction For Jass would be nice. I'm sorry to keep throwing my thoughts at you, but have you considered a sort of 'confirmation' of key press, like: Up Arrow: Where am I...? Down Arrow: [Ugh] Then, when up is pressed, Down is grayed, and you see: Up Arrow: Where am I...? Down Arrow: [Ugh] After a color switch has happened, the next AddDecision() would clear all of the messages (Eliminating the need for ClearDecisionAll()). This is, of course, looking far into the future. |
| 09-30-2007, 03:32 PM | #11 | ||||||
Quote:
However, that makes it require vJASS, which I wish to avoid. Quote:
The system has already gradually been moving towards that, and when I go through and actually make the code sensible I'll probably do that. Quote:
Hmm...perhaps. It could do with being more robust. Quote:
That already pretty much happens, just it uses a string instead of a boolean. Quote:
That's coming, and has been for a while. Quote:
Confirmation would break the immersion more, and I can't accept that (the whole purpose is to keep the immersion). Thanks for the comments, keep 'em coming! |
| 09-30-2007, 03:45 PM | #12 |
Nice one. One question, why isn't this in the resource submission thread? |
| 09-30-2007, 03:46 PM | #13 | |
I'm sorry if perhaps I was unclear, but it wouldn't be like: Are You Sure? It would just show you what you chose. Either way, I guess it's unneeded. Why are you avoiding vJass...? PS: Booleans are easier than strings ![]() EDIT: Quote:
Maybe because he wants it discussed, not approved? |
| 09-30-2007, 03:54 PM | #14 | |
Quote:
true, true. |
| 09-30-2007, 06:35 PM | #15 | |
Quote:
I blame Rao :D |
