Thursday, January 31, 2013

Delays and Apologies

This is the second or third week since I've been back, and unfortunately I still don't have very much progress I can show. This has been a bit of a rough week for me, and progress has been slow going. However, I do have progress to report, as well as a plan for the immediate future.

Progress:
My base code - the text based version of the storyteller - is pretty much complete. I'm sure I'll discover more bugs here and there, and there's much I'd still like to add, but what I have now is functional and ready for the next steps - graphical implementation and game. The one step I really want to implement that's probably more of a headache than it's worth is specific character relationships... That is to say, if Character A loves Character B, but Character C angers Character B, Character B won't take it out on Character A. The thing is, I'm not actually sure that this would make the "simulation" element of my code any more realistic. This may be cynical, but I think it might do the opposite... I think most people act on general feelings  most of the time - stress, anger, love, happiness - won't just affect how you interact with one person. If you interact with a friend when angry, you're likely to lash out at them. If you interact with someone you hate while happy, you're likely to be nice to them (unless they're mean to you and spoil your mood). My point being, I think what I have implemented is actually more accurate than an un-nuanced "everyone feels differently towards everybody" approach. Ideally, I'd implement a complex emotional algorithm in which people's feelings are made up of a combination of general and character specific emotions, but human interaction and behavior simulation isn't as important to my project as general storytelling, and with my samples I've proven that stories with beginning, middle, and end, where characters act on understandable (if simplistic) motivations are achievable with what I have now. That's all I set out to do.

Unity - I've come to understand that I won't be able to make much headway on making my code graphical unless I understand Unity better, so I've taken a bit of a "break" from working on the project to experiment with Unity and learn as much as I can about working with it. So far it's slow going... I've never really worked with anything like it before. But hopefully (and I know I keep promising this), I'll have some screencaps of a Unity version of my code to post next week.

Schedule:
Here's what I would like to achieve by my presentation in mid February:
Fully working Unity graphical implementation of my code, where you give the code parameters and "watch" a story. Simplistic camera editing as my "narrator" that I implement myself.
Then my goal for the end of the semester becomes:
Find a way to make a playable Unity mystery game where the story is generated by my code.

I'm still up in the air on the mystery game element. I almost want to let the player inhabit the main character and play through a story that could be anything... So that you don't know if you're getting a mystery, a love story, a horror, or anything until you're in the game. Even better, I want it so you control (inadvertently) what type of game/story it'll be with the choices you make. That'd be my ideal finished product.

Friday, January 25, 2013

Slow and Steady Progress

Not too much to report since last week. It's been pretty slow, especially with trying to get back into the swing of things. I'm still getting everything up and running again... Had to reinstall Visual Studio, Unity 3, and any other program I planned on using. Ironed out some bugs and nearly finished off the storytelling A.I. Some pretty good results so far... I'll post some next week, along with (hopefully) screenshots of the start of my Unity integration.

Getting a little nervous about the Unity part of the project all over again. It's really not my strength, but I'm hoping I can figure it out relatively quickly - especially if I'm going to be doing any sort of interesting transition work with camera movements. Right now I'm thinking that my first priority (after just getting a visual version of my project) is actually the camera, since "editing" is the closest thing I have to picking and choosing text to display (my current A.I. system). After that, I'm going to get started on turning the whole thing into a whodunnit game, which is going to be a lot of fun but will take a lot of restructuring from what I currently have.

Wednesday, January 16, 2013

And We're Back!

I've been back at Penn for less than a week now, but it's time to get back into the project. Unfortunately, there have been a few setbacks I need to take care of this week before I can keep moving forward. First off, my PC required me to upgrade to Windows 8 (it had come preinstalled with a demo, which expired), and I lost all of my programs. I'm going to need to spend a bit of time reinstalling Visual Studio, Unity, and a bunch of other programs I was using. Luckily, all of the actual code I wrote from last semester is still intact. Unfortunately, I noticed a bug in the code that I haven't been able to trace yet. Specifically, when I put in the "compliment" action, I can somehow cause an infinite loop. No other actions that I've drafted or experimented with seem to have this effect on my code.

The next steps for me seem pretty clear. Once I've reinstalled Unity, I need to find a way to show what my program is doing visually. The next step after that (or maybe a simultaneous step) is fine tuning the storytelling AI. I devised the system for that in past blog posts, and started implementation of it before the vacation.

Finally, I need to start designing a game application for the system I've developed. In a conversation with Aline and Norm at the end of last semester, we decided that since my system was being developed for use in video games, it would make sense to show it off in a game scenario. I haven't decided what the ideal way to do that would be just yet. Right now the plan is for a "Murder on the Orient Express" style close quarters murder mystery game. The player is stuck on a "train" (or other enclosed space) with other characters. The first act the player interacts with the other characters and gets to know them. The second act is triggered by a murder (perhaps unintentionally set off by the player character), and involves the investigation. The third act is triggered by either another murder or the murderer being discovered. In certain ways, though, this doesn't seem groundbreaking in terms of game design. What I really want to do is, using action importance values where 5 means the next phase of the story is triggered, allow for an expanding number of plot points to push the story forward. At first the only AIV 5 are "murder" and "is arrested", but we could keep adding more actions of increasing absurdity (like "jump off the train" or even "get abducted by aliens") that are triggered by specific scenarios and move the story forward in different ways, seriously expanding the number of ways in which the game's story can be experienced.

The goal for next week is to have all of my applications reinstalled, to have AIV and the storytelling AI complete and functioning properly, and to have started on the Unity based graphics representation of my storytelling program.