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 - KodiakBehr

#1
I missed the first hour, sadly, but was able to catch the second half of the awards.  Thank you for choosing Rogue State as 2015's award winners for Best Programming and Best Non-Adventure Game.  AGS changed my life by making game development accessible in the absence of a formal education in programming, and five years later, seeing Rogue State on the stage alongside such fantastic titles has been a humbling and proud experience.
#2
These worked wonderfully.  Thank you both!
#3
I've got a non-blocking character animation repeating constantly through a scene.  (A whale is swimming.)

I want to trigger the start of another non-blocking animation at a specific point in time, but I want it to be only at the end of a cycle of repeating non-blocking animation so the character doesn't suddenly jump mid-way through the animation cycle.  (The whale needs to attack at a specific point in time, but only after we've reached the end of the swim loop.)

Is there a clever way to go about this?
#4
This is phenomenal.  I wish I noticed this thread was still alive sooner.  Thank you so much!
#5
Thanks for this AGA.  If possible, grateful if you add Problem as the co-creator of Rogue State.
#6
All eyes of the international community are on The Glorious People's Republic of Basenji as stability feels just slightly beyond your reach.  With an internal power-struggle looming, a recession on the horizon and a despotic chicken testing your borders, Rogue State puts the player in the drivers seat of a nation teetering on the brink of collapse.  It would mean a lot to Problem and I if you would consider our bastard lovechild for the 2015 AGS Awards.

You can check out the game on Steam @ http://store.steampowered.com/app/396090/, and before you say, "I don't buy games.  No thanks." we're offering free Steam keys to anyone in the AGS community interested in trying it for themselves.  Send me a message if you've always wanted to try the game, but can't justify the expense.



#7
Thank you so much Monsieur for taking a crack at it.  I'm afraid my inability to understand how your code works is making implementation very difficult.  I'm hoping by giving you more information, it'll be easier to see what I'm doing wrong.

I've taken a sledgehammer to the original typewriter module code to get rid of extraneous features and make things easier to read.  What is currently happening is a series of variables is being passed from GlobalScript to a script called Typewriter.

The GlobalScript code presently looks like this:

Code: =ags
Typewriter.Type(0, 0, 1, 2016, eFontfntAnnouncements, "All I wanted was love and affection", **a given sound file**, lblAnnouncement);


The Typewriter.asc code presently looks like this:

Code: =ags
Overlay *olTypedText;
 
static void Typewriter::Type (int x, int y, int delay, int color, int font,
                              String text, AudioClip *sound, GUIControl *element) {
  
  String displayedLine = "";
  element.OwningGUI.Visible=true;
    if (element.AsButton!=null)
    {
      element.AsButton.Text=displayedLine;
      element.AsButton.TextColor=color;
      element.AsButton.SetPosition(x, y);
      element.AsButton.SetSize(System.ViewportWidth - x, element.AsButton.Height);
    }
    else if (element.AsLabel!=null)
    {
      element.AsLabel.Text=displayedLine;
      element.AsLabel.TextColor=color;
      element.AsLabel.SetPosition(x, y);
      element.AsLabel.SetSize(System.ViewportWidth - x, element.AsLabel.Height);
    }
  
  
  int i = 0;

  while (i < text.Length) {
    
    
    
          displayedLine = String.Format ("%s%c", displayedLine, text.Chars[i]);
            if (element.AsButton!=null)   element.AsButton.Text=displayedLine;
            else if (element.AsLabel!=null)     element.AsLabel.Text=displayedLine;    
          

      if (text.Chars[i] == ' ')
        Wait(delay);
      else if (text.Chars[i] == '[')
        Wait(delay*4);
      else {
        if (sound)
          sound.Play ();
          Wait(delay);
       }
 
      i++;    
   
  }
}



You've taken what is in Typewriter.asc and put it in a new void called Update_Rendering, which presumably wouldn't work if everything is being called from Typewriter.Type?  Is Update_Rendering supposed to go in GlobalScript?  Does Reset_Rendering need to apply new text, when Typewriter.Type should be handling it?  Should IsWaitActive be returning if delay>=1, rather than delay>=0?  Is there a reason why this is more effective than using timers?

I would be grateful for some hand-holding to get where I need to be.
#8
I'm using Phemar and Dual's Typewriter Text module, and it's great, but I need to make some adjustments for it to suit my needs and I'd like a second opinion as to whether I'm attempting the impossible.

I'm looking to produce typewriter text without blocking or pausing.  The typewriter text must be occurring while the game code is running.  Because of the way the module uses Wait() commands, I didn't think it would be practical.  But then I started thinking that anything with a wait command in it should also be doable with cleverly used timers.

For context, I'll zoom into the critical slice of code, but I can provide more if needed:

Code: =ags

int i = 0;

  while (i < text.Length) {

          displayedLine = String.Format ("%s%c", displayedLine, text.Chars[i]);
          if (display==eTypewriterDisplay_Overlay)
          {
            olTypedText.SetText (System.ViewportWidth - x, font, color, displayedLine);
          }
          else if (display==eTypewriterDisplay_UIElement)
          {
            if (element.AsButton!=null)   element.AsButton.Text=displayedLine;
            else if (element.AsLabel!=null)     element.AsLabel.Text=displayedLine;    
          }

      if (text.Chars[i] == ' ')
        Wait(delay);
      else if (text.Chars[i] == '[')
        Wait(delay*4);
      else {
        if (sound)
          sound.Play ();
          Wait(delay);
       }
      i++;
  }


I've been experimenting with putting SetTimers in various places and IsTimerExpired checks in various places within the while command, but I can't figure out a way to make the code run correctly without these waits.  Does anyone have any insight into how I could pull this off -- or is it a lost cause?
#9
Adventure Related Talk & Chat / Re: Firewatch
Tue 12/01/2016 13:36:19
I'll be picking this up for the PS4 for sure.  Highest of hopes, lowest of expectations.  It's supposed to be a pretty short game.
#10
I want my afternoon back.

I really loved how the game made me grit my teeth and push my hull to the limit because I know I'm going to need those shields to repair it later.  Very interesting mechanics!
#11
Quote from: Jack Lucy on Wed 06/01/2016 10:41:30
I mean, so blackwell won pretty much everything last year. Look at the game's page on wadjet's site. Does it mention the AGS awards or even AGS anywhere? No. It's only adulation from mainstream sites that was deemed worthy.

That's unfair.  Dave has invested fourteen years as an active and thoughtful member of the AGS community, so let's not penalize him for what he does or doesn't put in his shiny, well-stocked and well-deserved trophy case.

Quote from: Snarky on Wed 06/01/2016 12:47:34
I absolutely don't want to have this discussion again

As a moderator, that's your call.  But assuming another vote is ultimately held, I suggest pinning the outcome and rationale to the forums and pointing to it if anyone wants to crack the issue open.

Quote from: Snarky on Wed 06/01/2016 12:47:34
I think excluding commercial/professional/full-time games makes a mockery of the categories. "Best Game Created with AGS"... except a bunch of other games that might be better, but were excluded because some people thought it was unfair having to compete with people who are so dedicated to AGS and adventure games that they've actually made it their living. Same with all the other categories: Talking about "Best Background Art" out of the year's AGS games is a lie if a bunch of great-looking games weren't allowed to compete.

This absolutely reflects my view.  I don't mind losing every single year to Wadgeteye's titles because they ultimately set an incredibly high bar for me to pursue, and the awards, to me, are a showcase of the accomplishments of the engine, not the pursestrings and time invested by the winner.  I would, meanwhile, be a little disappointed if I was alone in losing every single year to Wadgeteye's titles because I wasn't permitted to compete any other category. 
#12
Never would have occurred to me.  Thank you!
#13
I was surprised to discover that drawing a transparent circle within an opaque circle worked wonderfully.  In the end, because it needed to be transparent, not opaque black, I had to set the color to -1.

The end result code looked like this.

Code: ags

scanarea = DynamicSprite.Create(500, 500, true);
btnDrawScanZone.Clickable=false;
DrawingSurface *surface = scanarea.GetDrawingSurface();
surface.Clear();
surface.DrawingColor = 2016;
surface.DrawCircle(250, 250, scan_radius);
surface.DrawingColor = -1;
surface.DrawCircle(250, 250, scan_radius-2);
surface.Release();
btnDrawScanZone.NormalGraphic = scanarea.Graphic;


Thank you both!
#14
Dungeon of the Endless
#15
I'm in full agreement with Dual.  My unsolicited take, for what it's worth, is that the debate usually revolves around the assumption that the commercial titles have access to resources not available to non-commercial games.

When Conspirocracy (2013) was nominated, it was considered a "commercial" game, because it was being sold commercially (seems reasonable).  But the game cost all of $500 for me to produce, and the overwhelming majority of revenue it raised went to charity.  It was a fundraiser for the Foundation Fighting Blindness.

Rogue State (2015) can also considered a commercial game, but it was produced with approximately the same budget as Conspirocracy, give or take a few bucks and neither Problem nor I were able to give up our day jobs working on it.  Practically speaking, the playing field was level and the only distinction, therefore, between our game and one that is non-commercial, is that we tried to make money.

At the end of the day, it'll be what it is, but I wanted to at least voice the opinion that if you stratify commercial games from non-commercial games, you're effectively making the statement that the second you charge money for a product, you're in an entirely different caliber.  This doesn't really reflect the reality that a lot of the free games can well be superior to what other people will put paywalls in front of.
#16
Hi guys,

I could use some help.  I'm trying to use dynamic sprites to draw an unfilled circle whose radius continuously expands until a set point.  I have only been successful in drawing a filled circle.  Is there any obvious way to accomplish what I'm attempting?

The code, for what it's worth, follows:

Code: ags

scanarea = DynamicSprite.Create(800, 600, true);
btnDrawScanZone.Clickable=false;
DrawingSurface *surface = scanarea.GetDrawingSurface();
surface.Clear();
surface.DrawingColor = 2016;
surface.DrawCircle(400, 300, scan_radius);
surface.Release();
btnDrawScanZone.NormalGraphic = scanarea.Graphic;

#17
Ooooh!  I'm excited to try this.
#18
Happy New Year!
#19
AGS Games in Production / Re: Projector Face
Thu 17/12/2015 04:43:12
Wow.  This is a neat concept.  You've got my vote!  Good luck!
#20
Late to the party.  But here's my advice:


  • If you have the capital to invest, and you are confident that your project is commercially viable, you will want to pay somebody for their work in cash.  If you don't have one or both of these, I strongly advise sharing project equity instead, assuming you are willing to make your dream a collective dream.  The indie market gets more crowded all the time, and if you're a new entrant at this stage of things, talent alone will probably not be enough to make it.  (http://kotaku.com/when-two-best-friends-make-video-games-and-only-one-se-1748226383)
  • Contracts are great, not because they're going to legally protect you, but because they set clear expectations.  Look them over carefully and/or be prepared with your own.  Missing a little detail in a contract has cost me dearly, but that's the price of being sloppy.
  • The music and voice acting market is way more elastic than pretty much any other service you'll be contracting, so it pays to shop around there.
  • Being a project manager is a full time job in of itself.  Be diplomatic and flexible, and find ways of keeping unreliable stakeholders focused.
SMF spam blocked by CleanTalk