Les Miserables: the game of the book

Started by EnterTheStory (aka tolworthy), Mon 23/06/2008 19:04:28

Previous topic - Next topic

EnterTheStory (aka tolworthy)

#20
[EDIT: this original link in this post is now redundant: see further down for updated link]

Particular questions:

1. This setup installs to a different folder from before. Does Vista still need admin privileges? Does it install on Win9x?

2. I've also uploaded a simple zipped version. Does it work in the Linux AGS engine?

3. As before, the BIG TWO QUESTIONS are: what about the game makes you want to play more?

4. ... and what makes you lose interest and play less?

Please note, as before that this is NOT COMPLETE and it is NOT POLISHED. I cannot guarantee that it will work at all! The dialog is rough. There is no music. Most of the 'look at' objects don't respond with much. Characters' idling animations are too fast. Most clues and cutscenes (after the first part) are still not there. And so on and on. But at this stage I'm more concerned with the general direction: creating a strong foundation on which to build.

If the response to this version is good then I'll settle down to adding content, and future test versions will not be public. If the response is not so good then I'll keep improving it until the response IS good.

What's different with this version:

A.
The first part is fully playable, sort of. That is, parts 1-7 out of 180. Actually the whole thing is playable if you are VERY determined (and make liberal use of Ctrl-O and Ctrl-P, which will not be available in the final version), but only the first little bit has all the regular clues and stuff. Basically up to when Jean Valjean leaves jail.

B.
There's a new intro and you get to see the central character, Peri. Hopefully it should be easier to see who you are and what you're supposed to do. :)

C.
There's a new help system, linked to the intro (you'll see what I mean when you play it). Just press F1 at any time for another clue.

D.
Navigation should be easier than before. Press the space bar at any time to see. And the map has been improved (press M).

E.
Most of the time since the last test version was spent on tidying up behind-the-scenes code. All the delays are due to silly little bugs that are incredibly tedious to track down. I'm a VERY slow programmer (coding does not come naturally to me!) so you might not see a huge difference in functionality. Or maybe you'll see a big difference - I can't remember how much was working on the previous version.

F.
And there are various other little bits and pieces. Like rewriting the help page, fixing the tinting easter egg thingy, making it easier to hit ESCAPE to skip stuff, and so on.


A note to Les Miserables purists.

This game tries to stay close to the book. Unfortunately, the first part of the game (the bit you can play here) is where I've had to make the twist the story a bit. I haven't actually CHANGED anything, but have focused on characters who have very minor roles in the book. I've given them tasks that I think are representative of what Hugo was saying, even if they don't do exactly what is in the book.

The problem is that the book starts with about ten chapters where nothing dramatic happens, and later has flashbacks to the battle of Waterloo, which is VERY dramatic, and is one of those things I did not want to ignore since it's obviously important to Victor Hugo, but it would be VERY time consuming to animate a big battle. So I hope you can forgive me for the approach I've taken.

I haven't actually changed anything, but I've stretched a few things: like turning one of Valjean's sister's children into the main character, and inventing a little scheme of Napoleon's that is there to represent several things that Hugo wrote, even though the exact scheme itself may not have been historical. The alternative was to completely ignore Napoleon, but he's important to Hugo so he's important to me.

After Valjean's release the book doesn't present as many problems, so the game will follows the story more closely.

One last minor technical question: I'm curious to know. When you start the game up (especially if started up straight from setup) do you see an ordinary mouse over the screen? The mouse should be invisible for the intro sequence. If you can see a mouse on the opening animation it means you don't have control over the game, you can't hit 'escape' or anything and that's frustrating. Minimize the window (I assume you see it in a window at the start?) then restore it and you have control over the game. It's one of those little things I'll need to look into for later.

Thanks in advance for any feedback.

Cyrus

The setup files are corrupted. Could you fix that?

EnterTheStory (aka tolworthy)

#22
Quote from: Cyrus on Tue 22/07/2008 12:53:37
The setup files are corrupted. Could you fix that?
[edit] they were still uploading. They're uploaded now, and they seem to download OK as far as I can tell.

EnterTheStory (aka tolworthy)

#23
The latest test version (the final public test version) is here. Judging by the deafening silence after the last test version I'm probably doing something horribly wrong. But that's never stopped me before.

Edit: More details and known bugs (such as the need to remove the colon: in the install path) are on the daily blog.

markbilly

I was impressed with what you had last time, and by what you wanted to improve on so I'll check it out... Downloading now! :)
 

Dualnames

I'll check this out and tell you what I think.. but actually I do believe that the intro is a little bit too long, but this is based on the first version you put up here a long time ago, so I'll just re-check.
Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

EnterTheStory (aka tolworthy)

Thanks. Any suggestion for how to change the intro? Just open with one of the three intro segments and trigger the others depending on user actions?

sthomannch

tolworthy!
A superb game. And for me the introduction is not too long. Goes well with the story telling.

I found two things that didn't work out as expected

heaven
Spoiler

at a few occasions, Puri moves the mouth and speaks out sentences, that seem to belong to Victor
[close]
operator
Spoiler

I clicked once on the operator at the guilloutine, and after the second sentence, the screen switched to the inside of the church that is close to the river in Paris. I didn't click then.
[close]
Keep up the good work!

Ozzie

It's the first time I played this work-in-progress and while it's obviously far from finished I love what I see. I thought the intro was the right length, though it stopped at a weird point.
I love how populated the city is and feels and how you can click your way around, it's probably the closest what I've seen to an interactive novel so far. The interactive part, though.......there are many hotspots, but you can't do anything with them, except for the exits obviously.

I don't have any avatar on earth or am I just controlling the ghost of the dead child? It's not clear to me.
I'm also not sure if the dialogues feel quite right to me.

All I can say is that this game shows a lot of potential.
Robot Porno,   Uh   Uh!

EnterTheStory (aka tolworthy)

Quote from: Ozzie on Mon 13/10/2008 02:40:04there are many hotspots, but you can't do anything with them, except for the exits obviously.
Yes, the "look at" dialog is at an early stage. When it's more polished I hope it will be more clear: instead of having several verbs (look at, pick up, etc.) and several inventory items, we instead have lots of people (pretty close to the max of 300) and a lot of other people and hotspots. So there's actually more potential for interaction than in other games, but not in the usual way. The idea is to suggest ideas to different people and hope they do what you want. For example, instead of "open door with key" you find someone who might want to get through a door, draw their attention to the key then draw their attention to the door. They should then have a Homer Simpson "d'oh" moment when they think "of course, yes, that's the answer" and go and do it. On the other hand they may not WANT to go through the door. I like the idea of respecting the characters' freedom like that, and having to get to know their individual wants and needs rather than treating them like puppets. But I think it will only work when the dialog is more complete and more polished so the characters start to feel like real people.[/quote]

Quote from: Ozzie on Mon 13/10/2008 02:40:04I don't have any avatar on earth or am I just controlling the ghost of the dead child? It's not clear to me.
Yes, I need to make that clearer. It's the ghost. I needed to do it that way because a lot of novels rely on having different people be totally alone, and in novels they don't always do what you want them to do. I couldn't do that is the user had control over the visible character, but the "ghost who tries to help them but they don't know the ghost is there" idea seemed to work in theory.

Quote from: sthomannch on Sun 12/10/2008 19:01:03hidden bugs
Thanks. I've been finding a few of the first kind as well. Conversations are separated by a '$' or a '@' depending on who spoke first, and sometimes I forget. I'll need to pay more attention :) The second bug is more interesting. From a technical point of view, the guillotine operator is a complicated (his head and body are actually separate characters) so there might be something unexpected happening. I'll look into it. Thanks.


GarageGothic

First of all, I must say that I really admire your dedication. I've followed the development blog for quite a while now, and you must certainly be one of the most efficient AGS developers. You also have amazing drawing style - and you've actually managed to transfer the characters into the game world without losing the hand drawn feel. I'm also very impressed with the coding of the crowd movement: it feels like a bustling city, not like traditional background characters walking around randomly without any sense of direction.

Unfortunately I don't have time to play through much of the game, but I've tried a couple of the betas, and the addition of a ghostly player character has helped immensely on the game's immersion. Such a simple change and yet the gameplay mechanics now make total sense and I feel that I have a mission to accomplish. Wonderful thinking outside the box.
However, I still find the interaction quite cumbersome. Without very good hints you risk the game ending up like one huge pixel hunt where you try making every character think about every object in every room of the game. It doesn't really help that you need to go to a different room (and navigate there - something I'm still having trouble with) to make a character think about objects elsewhere.

A couple of suggestions:

1) Please consider making the screen scroll automatically when the cursor nears the edge of the screen. Having to click to scroll the screen doesn't feel natural when you don't have a walking player character. If you don't agree, please at least consider making the cursor change when you get near the screen edge of a scrolling room. The "show exits" button is a great help, but it also interrupts gameplay.

2) I know this is a quite major change, but instead of the cursor "remembering" what person clicked on in another room and then combining this with another hotspot elsewhere, have you considered using an "idea inventory" similar to the Blackwell games or Resonance? If for instance I clicked on the Palace of Justice it would be stored in an inventory-like list, and I could then select it an click it on people in other rooms. This would save a lot of running back and forth, I think. And also feel more logical from a story perspective (if the ghost knows about an idea, she shouldn't have to return to its hotspot to make different people think about it at different times). This all depends on how the game is scripted of course, if the hotspots and object interactions are located in the room script I guess you still have to switch to that room temporarily to activate the event.

3) Consider reducing the amount of hotspots. I don't think I would even spend time making characters think about the railing around a grave. This should also eliminate some work as well as the number of repeating lines (I got the same response from quite a few characters when interacting with generic background elements).

And a bug report:
I ran into a pretty consistent problem where the game seems to hang for a moment when I make a character think about the hotspot. The game pauses for a second or two while the audio stutters before the character says anything. This happened when making the man in the library think about hotspots in the same room. It could be my hardware, because I'm playing on an old 2.4 GHz Pentium 4. But I just don't see what could be so CPU intensive that it would hold up the game like this - it's just text being displayed after all.

Good luck with the project. This will definitely be one of the AGS all-time greats.

EnterTheStory (aka tolworthy)

Quote from: GarageGothic on Mon 13/10/2008 16:34:22Such a simple change and yet the gameplay mechanics now make total sense and I feel that I have a mission to accomplish.

Thanks. I'm glad I'm not alone in thinking that. Small changes make such a big difference. For example, I'm reorganizing the intro again today: the change is fairly small, but I think it will make a big improvement to how people experience the game.

Quote from: GarageGothic on Mon 13/10/2008 16:34:22Without very good hints you risk the game ending up like one huge pixel hunt

The hint system is what I'm adding now.  It'll make a lot more sense when the dialog is all in place, in November.

Quote from: GarageGothic on Mon 13/10/2008 16:34:22
1) Please consider making the screen scroll automatically when the cursor nears the edge of the screen.

Good idea. I'll do that.

Quote from: GarageGothic on Mon 13/10/2008 16:34:22have you considered using an "idea inventory" similar to the Blackwell games or Resonance? If for instance I clicked on the Palace of Justice it would be stored in an inventory-like list, and I could then select it an click it on people in other rooms.

That's another good idea. That should be doable...

Quote from: GarageGothic on Mon 13/10/2008 16:34:223) Consider reducing the amount of hotspots. I don't think I would even spend time making characters think about the railing around a grave.

LOL - most of those "look at" statements are very generic and will be improved before release. Personally I would rather have EVERYTHING a hotspot, like in real life. So your idea of a "recently clicked hotspots" list is a good idea. The new dialog will guide people to what to click on.

Quote from: GarageGothic on Mon 13/10/2008 16:34:22the game seems to hang for a moment when I make a character think about the hotspot. ... I just don't see what could be so CPU intensive that it would hold up the game like this - it's just text being displayed after all.

That's what you think! :) That's the core story code at work, the heart of the whole project.  AGS is designed to be room based, but that isn't practical for my project, so mine is story based instead. Which means when you click on anything the engine basically checks the entire story to find the appropriate response. And checks it up to nine times, for reasons that are too boring to go into. I'll need to spend time optimizing the code even more. Not looking forward to that. :)[/quote]

Thanks again for the feedback. It's been most useful.

GarageGothic

Quote from: tolworthy on Mon 13/10/2008 18:43:14That's what you think! :) That's the core story code at work, the heart of the whole project.  [...] when you click on anything the engine basically checks the entire story to find the appropriate response. And checks it up to nine times, for reasons that are too boring to go into. I'll need to spend time optimizing the code even more. Not looking forward to that. :)

Ah, I didn't realize it was this complex. Perhaps the game could provide some kind of response (audio, a pop-up icon, or the mouse cursor changing) to indicate that your interaction has been registered before running the CPU intensive functions? Also, you could add a few Wait(1) calls during the check to allow the game engine to proceed a loop and avoid the audio glitching.

I'll give you an example of something similar that I had to implement in my own hypertext module to avoid the music stuttering: I keep track of an int which is incremented by a certain number of points every time a more-or-less CPU heavy operation is called. For example, the function that writes text to the screen adds 1 point while the DynamicSprite-based "insert image with caption" function adds 10 points. At the end of each of these function calls, the total number of points is checked. If it is larger than a pre-set value,  for example 50, a Wait(1) will be called. This prevents the engine from freezing up, and while the player does have to wait half a second for the full page to load, the music is fluid, the cursor can be moved around smoothly and a small animated icon (like in a web browser) shows the player that the game is processing data. The maximum points value changes with the user's chosen detail setting, so those with fast machines will still see the page almost instantly.

EnterTheStory (aka tolworthy)

Quote from: GarageGothic on Tue 14/10/2008 02:02:20Perhaps the game could provide some kind of response (audio, a pop-up icon, or the mouse cursor changing) to indicate that your interaction has been registered before running the CPU intensive functions? Also, you could add a few Wait(1) calls during the check to allow the game engine to proceed a loop and avoid the audio glitching.
Excellents ideas. I'll do both.

Quote from: GarageGothic on Tue 14/10/2008 02:02:20At the end of each of these function calls, the total number of points is checked.

Does this mean AGS reads ahead and checks ALL code before the next "Wait()" before running any of it? (Otherwise you could only measure the length of a process as it was completed, so would not be able to warn users ahead of time)

GarageGothic

Quote from: tolworthy on Tue 14/10/2008 08:04:27Does this mean AGS reads ahead and checks ALL code before the next "Wait()" before running any of it? (Otherwise you could only measure the length of a process as it was completed, so would not be able to warn users ahead of time)

I'm not sure I understand the question. Here's a simplified pseudo-code example of how I do it:

Code: ags

int points;

function CheckPoints() {
   if (points > 50) {
      Wait(1);
      points = 0;
      }
   }

function AddText(String text) {
    //do text drawing stuff
    points = points + 1;
    CheckPoints()
    }

function AddPictureWithCaption(int graphic, String caption) {
   //do picture drawing stuff
   points = points + 10;
   CheckPoints();
   }

function RenderWebpage(int pagenum) {
   if (pagenum == 1) {
      AddText("First text paragraph.");
      AddPictureWithCaption(40, "What a pretty picture");
      AddText("Second text paragraph.");
      //repeat until page is done 
      }
   else if (pagenum == 2) {
      //add content for page 2
      } 
   //and so on
   }

Dualnames

Well, the game at least when I first saw it was a bit overwhelming(hits the player with many details), you can make the player view the intro in segments. Example, you let the player play a bit, then cutscene, then control back to the player. Then cutscene. Just an idea. I think you've just figured it out yourself, seeing your post. Anyway, still looking forward to this.
Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

EnterTheStory (aka tolworthy)

#36
Quote from: GarageGothic on Tue 14/10/2008 08:46:10
simplified pseudo-code example of how I do it:
Ah, that makes sense. At first I thought you had a magical way to look forward, and calculate how long a process might take before it even runs. But adding strategic "Wait(1)"s is simpler. I'm hoping to also speed up my code by replacing a lot of strings with integers. A lot of my core code involves comparing strings - I'm guessing that's a processor hog. I hope it is, anyway, since if it is then I can actually do something about it.

Quote from: Dualnames on Tue 14/10/2008 09:18:52
Well, the game at least when I first saw it was a bit overwhelming

I think that's a common response (made worse because the key dialog isn't there yet, so everyone is playing blind).  The new intro will be much clearer. I'm pretty much doing what you suggest, which has the added benefit of making the message stronger and clearer. I'm also adding new navigation aids that will (I hope) make the whole experience a lot more manageable.

EnterTheStory (aka tolworthy)

The final, final test version is up.

If anyone has time to look at it I'd be grateful. Needless to say, I've done a lot of work on it since October. If there are no major bugs then I'll declare this first story finished at the end of this week, then begin work on to the second story.

Dualnames

Well, make a completed games about it!!
Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

EnterTheStory (aka tolworthy)

Quote from: Dualnames on Tue 16/12/2008 19:13:24
Well, make a completed games about it!!
It's not completed until it's tested.

SMF spam blocked by CleanTalk