Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - newwaveburritos

#161
What exactly are you trying to accomplish with the thinking setting?  I think for three and four you specify which GUI to use in general settings under "text output."  If you have nothing then it uses the built-in one.  I haven't messed with these personally though so I can't really speak to how they work.
#162
Oh, yes, I think you're right.  When I swap those two and it works as intended.  I think this whole mess is working now like I envisioned it.  Thanks a million!
#163
I think the part that isn't working is this:

Code: ags

function openCharacterGUI(Character* thisIsWho)
{
  gCharacters.X=player.x-20;
  gCharacters.Y=player.y-90;
  btnCharacterChoice.Animate(42, 0, 5, eRepeat, eNoBlock);  //starts the animation
  thisIsWho = WhoAmITalkingTo;
  gCharacters.Visible = true;
}


When I put
Code: ags
openCharacterGUI(cRobot);
at the appropriate place in the dialog it doesn't work.  Nothing happens.  When I put
Code: ags
WhoAmITalkingTo=cRobot;
above the function it does.  WhoAmITalkingTo is a global characater variable as is WhoAmITalkingAbout.
#164
Okay, I've got an idea for an icon based dialogue system which I wish to use in addition to the standard Monkey Island-esque dialogue system of the BASS template.  That is, inside of a regular dialogue when you choose an option that will exit the dialogue and enter this new phase of dialogue which will be the player asking about a character.  You'll scroll through the various icons until you find the character you want and then click it.  It looks like this:



In this instance we're talking to the Robot about the Mummy.  So, we have here two pieces of information we need to pass on.  Who we're talking to, and who we're talking about.  I was thinking it would be best to have a big switch case so that it's all in the same place and I can see everything and read everything and add the dialogue or instruction easily in one organized place.  But before we get that far let me show you the scrolling GUI where we choose the character icon because I know we're going to have to use that to pass on the character's icon the player chooses.  It's the same button, I'm just going through the views in order to animate it.

Code: ags

function ScrollLeft()
{
  BackgroundGraphic--;
  if (BackgroundGraphic==-1){
    BackgroundGraphic=7;
  }
    switch (BackgroundGraphic)
    {
      case 0:
        
        btnCharacterChoice.Animate(42, 0, 5, eRepeat, eNoBlock); //cDracula
       
        break;
      
        
      case 1:
      
        btnCharacterChoice.Animate(43, 0, 5, eRepeat, eNoBlock); //cFrank
        break;
      
      case 2:
      
        btnCharacterChoice.Animate(44, 0, 5, eRepeat, eNoBlock);  //cMummy
        break;
      
      case 3:
      
        btnCharacterChoice.Animate(45, 0, 5, eRepeat, eNoBlock); //cPhantom
        break;
      
      case 4:
      
        btnCharacterChoice.Animate(46, 0, 5, eRepeat, eNoBlock);  //cWolfie
        break;
      
      case 5:
      
        btnCharacterChoice.Animate(78, 0, 5, eRepeat, eNoBlock);  //cYoko
        break;
      
      case 6:
      
        btnCharacterChoice.Animate(79, 0, 5, eRepeat, eNoBlock);  //cRobot
        break;
      
      case 7:
       
        btnCharacterChoice.Animate(41, 0, 5, eRepeat, eNoBlock);  //cAlien
        break;
      
      case 8:
      BackgroundGraphic=0;
      break;
    }
}


function ScrollRight()
{
  BackgroundGraphic++;
  if (BackgroundGraphic==8){
    BackgroundGraphic=0;
  }
    switch (BackgroundGraphic)
    {
      case 0:
        
        btnCharacterChoice.Animate(42, 0, 5, eRepeat, eNoBlock);
        
        break;
      
      case 1:
      
        btnCharacterChoice.Animate(43, 0, 5, eRepeat, eNoBlock);
       
        break;
      
      case 2:
      
        btnCharacterChoice.Animate(44, 0, 5, eRepeat, eNoBlock);
        break;
      
      case 3:
      
        btnCharacterChoice.Animate(45, 0, 5, eRepeat, eNoBlock);
        break;
      
      case 4:
      
        btnCharacterChoice.Animate(46, 0, 5, eRepeat, eNoBlock);
        break;
      
      case 5:
      
        btnCharacterChoice.Animate(78, 0, 5, eRepeat, eNoBlock);
        break;
      
      case 6:
      
        btnCharacterChoice.Animate(79, 0, 5, eRepeat, eNoBlock);
        break;
      
      case 7:
        
        btnCharacterChoice.Animate(41, 0, 5, eRepeat, eNoBlock);
        break;
    
    }
}


That's all well and good and works fine, it just doesn't do anything right now. The function to open the GUI is where I start to get lost.  I think it should look something like this:

Code: ags

Character* thisIsWho;
function openCharacterGUI(Character* whoImTalkingTo)
{
  gCharacters.X=player.x-20;
  gCharacters.Y=player.y-90;
  btnCharacterChoice.Animate(42, 0, 5, eRepeat, eNoBlock);  //starts the animation since we have to start it before we can open it
  thisIsWho = whoImTalkingTo;
  gCharacters.Visible = true;  //this is the name of the GUI open in the screenshot.
}


What I think this does is pass along the pointer of who I'm talking to and I'll call this inside each character's dialogue.  That is, when I click from dRobot00 I'll call:

Code: ags

openCharacterGUI(cRobot);


Then I have the big switch case.

Code: ags

function talkToChar(Character* talkAbout)
{
  
  switch(talkAbout)
  {
   case cAlien:
      switch(thisIsWho) //this is who I'm talking to
      {
        case cAlien:
        //talking to Frankenstein about the Alien
        break;
        case cDracula:
        player.Say("Tell me about Dracula.");
        break;
        case cFrank:
        break;
        case cMummy:
        break;
        case cPhantom:
        break;
        case cWolfie:
        break;
        case cYoko:
        break;
        case cRobot:
        player.Say("Tell me about The Alien!");
        break;
      }
    break;
    
   case cDracula:
      switch(thisIsWho)
      {
        case cAlien:
        //talking to Dracula about the Alien
        player.Say("Tell me about Dracula!");
        break;
        case cDracula:
        break;
        case cFrank:
        break;
        case cMummy:
        break;
        case cPhantom:
        break;
        case cWolfie:
        break;
        case cYoko:
        break;
        case cRobot:
        break;
      }
    break;
    
    case cFrank:
      switch(thisIsWho)
      {
        case cAlien:
        //talking to Frankenstein about the Alien
        break;
        case cDracula:
        break;
        case cFrank:
        break;
        case cMummy:
        break;
        case cPhantom:
        break;
        case cWolfie:
        break;
        case cYoko:
        break;
        case cRobot:
        break;
      }
    break;
    
    case cMummy:
      switch(thisIsWho)
      {
        case cAlien:
        //talking to Mummy about the Alien
        break;
        case cDracula:
        break;
        case cFrank:
        break;
        case cMummy:
        break;
        case cPhantom:
        break;
        case cWolfie:
        break;
        case cYoko:
        break;
        case cRobot:
        break;
      }
    break;
    
    case cPhantom:
      switch(thisIsWho)
      {
        case cAlien:
        //talking to Phantom about the Alien
        break;
        case cDracula:
        break;
        case cFrank:
        break;
        case cMummy:
        break;
        case cPhantom:
        break;
        case cWolfie:
        break;
        case cYoko:
        break;
        case cRobot:
        break;
      }
    break;
    
    case cWolfie:
      switch(thisIsWho)
      {
        case cAlien:
        //talking to Wolfie about the Alien
        break;
        case cDracula:
        break;
        case cFrank:
        break;
        case cMummy:
        break;
        case cPhantom:
        break;
        case cWolfie:
        break;
        case cYoko:
        break;
        case cRobot:
        break;
      }
    break;
    
    case cYoko:
      switch(thisIsWho)
      {
        case cAlien:
        //talking to BrunchLadies about the Alien
        break;
        case cDracula:
        break;
        case cFrank:
        break;
        case cMummy:
        break;
        case cPhantom:
        break;
        case cWolfie:
        break;
        case cYoko:
        break;
        case cRobot:
        break;
      }
    break;
    
    case cRobot:
      switch(thisIsWho)
      {
        case cAlien:
        //talking to Robot about the Alien
        break;
        case cDracula:
        cRobot.Say("Dracula!");
        break;
        case cFrank:
        break;
        case cMummy:
        break;
        case cPhantom:
        break;
        case cWolfie:
        break;
        case cYoko:
        break;
        case cRobot:
        break;
      }
    break;
  }    
}


So, what I think is I should have a similar function to the one that opens the GUI to close it that tells the switch case who the player clicked on.  And actually, I think maybe I don't want a function at all there or maybe one that returns something?  That's where it all falls apart for me but the theory of that switch case being a shelf to put answers on is really appealing to me. 

Well, thanks everybody!

EDIT: I think I have the comments on my switch case backwards.
#165
I don't see a screenshot here so I don't understand the issue 100% but you can use character's .x and .y properties in the SayAt to avoid hard coordinates.
#166
You might find this useful.  It's switch case based like Andreas mentioned and I use it to do similar behaviors to what you're describing.  The hard part is wrapping your head around it.  After that it's been pretty useful for me.

https://www.adventuregamestudio.co.uk/forums/index.php?topic=60044.0
#167
Here's the short version:

Sierra style means that you're probably going to want talking heads style speech views since it displays the speech view at the corner/corners.  The difference between transparent and background is simply whether or not it draws a background behind the text.  I've never used whole screen before but that means it takes you to a different "room" so to speak in that you don't see the background where the characters are you'd just see a background and the characters like Gabriel Knight of Quest for Glory IV.
LucasArts means that the character itself animates/talks so your speech view will be an animation of the whole character talking.

You can set all of this in script too if you want to use a combination of the two.  Here are some screenshots.  I didn't do the Sierra Transparent but it would be just like the one with background without the white box.  I'm also using the speech bubble module so the lucasarts style does get a speech bubble around it which it doesn't by default get.  Hope this helps anyway!




#168
I think people mostly care about cool art, yes, but this is a very distinctive style that certainly qualifies.  Also, to Crimson's points about future edits, I think using the painted background as a base layer would be great and then you could add to it which gets to Creamy's point that it would be tough to make all of these individual pieces fit together.  But I think it's a great idea...just a lot of work!
#169
A secondary question here which is more of a planning and strategy question than anything:

Do you guys have a story written and ready to go before you begin or do you make it up as you go?  Or a little from Column A and a little from Column B?  I'm starting to think that a large part of my problem with this is because I don't really have a whole story planned out but rather I just kind of make it up as I go from a vague outline.
#170
I've tried to do this before and a very narrow walkable area works but it can get weird with the pathfinding since I was finding that EGO would get sort of caught at places.  I think the way I solved it was by coding something super sloppy where a mouse click on the right of EGO moved EGO right a little bit and vice versa for left with no walkable area at all.
#171
I was talking about this topic with a buddy of mine and he had a pretty good idea for tracking game progress.  It was useful for me so I thought I would post it here.  That is, I'm always trying to update a game state and it turns out that that's really not that useful.  What is more useful for me, since my games tend to be very character driven is to keep track of the character state instead.  This is much easier for me to visualize than trying to keep some kind of nebulous game state with many moving parts.  If I know the position a character is in then I can have them interact with the player accordingly.  Game sates can be reserved for situations that don't have any bearing on the characters for more generic stuff.  Anyway, just thought I would share this.
#172
Yeah, great job!  This was a fun one and I get a useful sprite out of it!!
#173
Dude, let's just go to the mall.  That old liminal space.  The stuff that dreams are made of.  Are malls dead?  That's up to you to decide!  Food courts, shops, controlled environments.  There's a million things to do at the mall so show me what that is!








Your goal this month is to create a background suitable for an adventure game that fits with the theme of Shopping Mall. Use the pictures above for inspiration if you like, but also feel free to think outside of the box and go nuts!  Or bananas, if you prefer.

Voting will be based on the below (as usual):
Concept: What is the background about? What sort of mood does it spark? What is, as it were, the big idea?
Playability: What is its opportunity for gameplay like? Walkable areas, hot-spots, and so forth?
Artistic Execution: How well does the picture convey an atmosphere? How well is it executed?

The deadline for submissions is the 23rd of August. Look forward to seeing everyone’s entries and happy shopping!
#174
This was essentially the central question of my first game and learning how to do this effectively is why it is such a mess in the code right now and why it probably won't see the light of day unless I just take the assets and start over.

I guess I'll just start at the beginning here and explain everything i did because maybe somebody will read this and learn something from what I have done since the whole thing was a long learning process for me.  I don't know if I really have much here that you can glean much from because it's mostly a long list of what not to do lol.

I decided early to divide the game into days like chapters to try and also make the organization of tasks a bit more streamlined.  I had an integer like you're talking about.  So, every interaction with anything would start with a check against that.  if (WhatDayIsIt==2) I would know that it is Night #1 and proceed accordingly.  WhatDayIsIt==3 would be Day#2 and so forth.  Then if I wanted to track the progress I would just create a new global variable and name it something halfway intelligent and check that.  Obviously, that becomes very confusing very quickly because it doesn't matter how smart your variable name is, it's going to get very confusing if you have a bunch of them.  Eventually, I started trying to use get the variables under control by using fewer of them but then I got into trouble because I was doing something like GameProgress++; which means you can get extra credit for extra clicking.  Whoops.  That led to a lot of tracking down weird reactions from characters.  Eventually I started doing this:

Code: ags

if (Game.DoOnceOnly("IntroductionToPeter")){
  GameProgress++;
}


I don't know why it didn't occur to me to just set it to a number.  Probably because I was trying to do things like you need to talk to Peter, eat breakfast, and take a nap but actually you can satisfy the requirement by either eating breakfast OR taking a nap but also doing all three would be enough so in this case GameProgress can be either 2 or 3.  But I don't know because I was doing a lot of bullshit code at the time.  But tracking the game state became such a mess that I never wanted to look at it again despite the fact that i was also very attached to it and the characters and had spent a year working on it.  Eventually I learned about enums and this seemed like the way to do it but by then it wasn't really much help.

The second game I made was for MAGS so it was short and pretty dang linear so I didn't really need to track a lot of states.  Now the game I'm working on is getting to a certain level of complexity and I'm starting to ask this question again so I'm glad you asked it since this is exactly what I intend to work on next once I stop stalling and working on extra animations for no real reason and just get on with the meat of the gameplay.  I really like the idea of using an enum but like Crimson Wizard said on the Discord that it also depends greatly on the number of parallel states.  I also thing tracking a non-linear story would be a lot harder to do than just getting from point A to point B.  My natural inclination is to go with a sort of Monkey Island setup where you have more than one task that you can be working on at any one time.  If you can't find Dracula's head shots maybe you can work on the circuit board puzzle for awhile and then maybe you'll figure something out while you do that.  I saw Roberta Williams plan out a game on a gigantic piece of paper in some documentary so I also think that might be a useful thing that's essentially half a map and half a puzzle dependency chart.  At the end of the day I think you're just trying to come up with a way that makes sense to you to keep track of that number going up and so it might make sense for one person to use an enum and another to do it some other way.  It feels like it might be kinda personal.

How would you use your system to track parallel states?  I guess you wouldn't really need to exactly since you could just use one for each and then check both of them when it's time to escape the dungeon or whatever.

There was a little chatter about this awhile ago that I read you may find illuminating although it doesn't go into a ton of depth:

https://www.adventuregamestudio.co.uk/forums/index.php?topic=56638.msg636598246#msg636598246

Now that I read that all back to myself it's kind of a jumbled mess.  Maybe I should have used an enum to track the progress of whatever point I was trying to make.
#175
Oh cool!  I always have fun when I make a background for one of these even if I don't really have any idea what to use it for.  Looking forward to the next one!
#176
I'm using Build 3.6.0.23 on Windows 10 and I can't seem to make ESC stop working with control or alt.  I put in some additional code to the on_key_press and it seems to work just fine for me if that helps.
#177
This is more of a moment in time than a background strictly speaking but I think you get the idea.  Just imagine all that stuff is animated!!

[imgzoom]https://i.imgur.com/JI70rTT.png[/imgzoom]
#178
Work continues AKA scope creep on all sides!  I've added character moods and Sierra style speaking portraits for extra immersion.  I'm also trying to add some puzzles this time since that was the number one complaint about the first one.  Does fixing a circuit board sound fun?  I hope so!!

We'll have some unexpected returning characters as well to help (or hinder?) you on your quest to get back to your wedding.

[imgzoom]https://i.imgur.com/khYnBsc.png[/imgzoom]
#179
Hilariously, it was the same game for me.  I don't know if it counts though because I had a friend playing it at the same time and if either of us got stuck we would help the other out.  For this reason it holds a special place in my heart.
#180
[imgzoom]https://i.imgur.com/jGQCRrB.gif[/imgzoom]

This alien got a job at the circus but they're allergic to hay which makes their antennae really itchy!
SMF spam blocked by CleanTalk