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

#342
I think this is because you are continually calling ChangeModeView on every frame, which is bumping the animation forwards (ignoring any delays that you may have set).
#343
The Rumpus Room / Re: Happy Birthday Thread!
Sun 27/01/2019 23:59:45
Yes, one minute left.
Happy Birthday.
#344
I think it is either a missing library (which doesn't effect a Snap package since it comes with its dependencies) or there is a config issue that is out of scope of the Snap package (the last person I spoke to who had audio issues had an invalid ALSA config file in their home folder). There is nothing wrong with the binaries, I've just tested it on Ubuntu 18.04 and it had working sound.

Quote from: GameWithSound
Adventure Game Studio v3.4 Interpreter
Copyright (c) 1999-2011 Chris Jones and 2011-2018 others
ACI version 3.4.1.15

Initializing allegro
Initializing game data
Located game data file: /home/mwillcock/Downloads/ex/data/3GEEKS - DEMO.ags
Opened game data file: game28.dta
Game data version: 49
Compiled with: 3.4.1.15
Setting up game configuration
Logging scipt to "warnings.log"
Setting up window
Initializing TTF renderer
Initializing mouse: number of buttons reported is 3
Checking memory
Data directory: /home/mwillcock/Downloads/ex/data
Audio vox found and initialized.
Initializing keyboard
Install timer
Sound settings: digital driver ID: 'Auto' (0xffffffff), MIDI driver ID: 'Auto' (0xffffffff)
ALSA lib rawmidi_hw.c:233:(snd_rawmidi_hw_open) open /dev/snd/midiC0D0 failed: No such file or directory

Unable to initialize your audio hardware.
[Problem: /dev/sequencer: No such file or directory]
Installed digital driver ID: 'ALSA' (0x414c5341), MIDI driver ID: 'None' (0x0)
Install exit handler
Initialize path finder library
Game GUI version: 118
Requested script API: v3.4.1 (5), compat level: v3.3.4 (2)
Game title: '3 GEEKS'
Checking for disk space
Initializing MOD/XM player
Game native resolution: 1024 x 768 (32 bit)
Game settings: windowed = no, screen def: max, screen size: 0 x 0, match device ratio: yes, game scale: proportional
Requested graphics driver 'D3D9' not found, will try existing drivers instead
Mouse control: on, base: 1.000000, speed: 1.000000
Initialize sprites
Audio is processed on the main thread
Engine initialization complete
Starting game
***** ENGINE HAS SHUTDOWN
#345





Quote from: The AuthorIt is my fifth full title, this time about a miserable stock broker and an unemployed musician who while desperately trying to swim out of debt find unlikely answers in the local Ku Klux Klan branch, leading them on an absurd and often comedic adventure.

Please consider this game for:

  • best writing
  • best short game
database entry
itch.io
#346
Hints & Tips / Re: Bittersweet
Sun 20/01/2019 18:27:17
Oh dear. I've completely misunderstood what is going on then; the solution seems to be the opposite of what I did to progress in the other rooms.
#347
Hints & Tips / Re: Bittersweet
Sun 20/01/2019 00:56:26
I'm only at my first stop on the train, but not sure how to progress...
Spoiler
in the room with the razor blades and the bucket, I think I'm meant to kill the person (but apparently not with the rubber gloves)
[close]
I guess the puzzles in each location are self-contained and I wouldn't have to take the train somewhere else to get an item?
#348
Site & Forum Reports / Re: Bug reports
Fri 11/01/2019 22:09:25
https://www.adventuregamestudio.co.uk/site/games/awards/

QuoteDatabase query F.9.1 error: Unknown column 'multiple_winners' in 'where clause'
#349
Site & Forum Reports / Re: Bug reports
Sun 06/01/2019 14:19:26
When trying to edit this page:
https://www.adventuregamestudio.co.uk/wiki/Keyword:_attribute

I got this:
Quote from: Internal error
[104536ca1a6d4a8a8ff0c1e6] /w/index.php?title=Keyword:_attribute&action=edit Error from line 489 of /home/ags/html/w/extensions/ConfirmEdit/SimpleCaptcha/Captcha.php: Class 'CaptchaTriggers' not found

Backtrace:

#0 /home/ags/html/w/extensions/ConfirmEdit/SimpleCaptcha/Captcha.php(554): SimpleCaptcha->triggersCaptcha(string, Title)
#1 /home/ags/html/w/extensions/ConfirmEdit/SimpleCaptcha/Captcha.php(214): SimpleCaptcha->shouldCheck(WikiPage, string, string, RequestContext)
#2 /home/ags/html/w/extensions/ConfirmEdit/includes/ConfirmEditHooks.php(62): SimpleCaptcha->editShowCaptcha(EditPage)
#3 /home/ags/html/w/includes/Hooks.php(177): ConfirmEditHooks::confirmEditPage(EditPage, array, integer)
#4 /home/ags/html/w/includes/Hooks.php(205): Hooks::callHook(string, array, array, NULL)
#5 /home/ags/html/w/includes/EditPage.php(4346): Hooks::run(string, array)
#6 /home/ags/html/w/includes/EditPage.php(3633): EditPage->getEditButtons(integer)
#7 /home/ags/html/w/includes/EditPage.php(2881): EditPage->showStandardInputs()
#8 /home/ags/html/w/includes/EditPage.php(674): EditPage->showEditForm()
#9 /home/ags/html/w/includes/actions/EditAction.php(60): EditPage->edit()
#10 /home/ags/html/w/includes/MediaWiki.php(500): EditAction->show()
#11 /home/ags/html/w/includes/MediaWiki.php(294): MediaWiki->performAction(Article, Title)
#12 /home/ags/html/w/includes/MediaWiki.php(861): MediaWiki->performRequest()
#13 /home/ags/html/w/includes/MediaWiki.php(524): MediaWiki->main()
#14 /home/ags/html/w/index.php(42): MediaWiki->run()
#15 {main}
#350
Thank you for testing this, eri0o.

Quote from: eri0o on Sat 22/12/2018 14:22:12
I like the new progress bar addition, I think previously AGS just stood there unresponsive, in a folder with too many sprites, this is nice.
To be honest, it was more a debug tool that was left in. It turns out that majority time whilst the Editor was in hung state was spent modifying the GUI control in a loop, and nothing to do with the import actions at all. This should be fixed now, so you should see a massive performance increase as well as the progress bar.

Quote from: eri0o on Sat 22/12/2018 14:22:12
On the tiled sprite import, one minor thing, it loads with a number in x,y position, I think the default should be 0,0 (imagining I have a single sheet png, with each images of the same size).
I think you are right, and just leaving it on 0,0 makes more sense in practice. I'll change it.

Quote from: eri0o on Sat 22/12/2018 14:22:12
The is an option to copy a sprite to the clipboard on the sprite navigator, I don't know if that was there before, but when I click, it does nothing.
I don't think this was modified, but it doesn't seem to work for me either, so I'll have a look.

Quote from: eri0o on Sat 22/12/2018 14:22:12
Feature requests for the sprite GUI!:

- I have Aseprite triggering as my external editor, and it opens lightning fast, but a way to view and zoom a imported sprite, in AGS, would be cool.
- sprite GUI, has all things available through the right click on white space, adding a small bar on top of the GUI, with the same functions, would easier. I prefer inside the tab instead of the main toolbar like the rest of AGS, but both would work - one favor low resolution monitor and the other bigger resolution monitors.
- totally new feature: import folder -> would import a folder with pngs, and if a folder with png is inside that folder, recreate the folder structure inside AGS. I think is unneeded as project normally evolve slowly but could enable really fast use of ready made graphics from graphic asset packages.
Personally, I'm still aiming for just having sprites on the disk, and 'importing' is just defining the import options for each image. So I would hope that the final result would just be a 'project browser' instead of a 'sprite manager', and you could choose some action on any type of file or folder, or hand-off to any external program. I think the toolbar has a lot of issues anyway, in that things magically appear there depending on what you are editing (since they also include the paint controls), and it contains functions that aren't available in any other place (probably makes sense for choosing a paint brush, but not for mask import/export).

Quote from: eri0o on Sat 22/12/2018 14:22:12
Script Compatibility seem kinda broken since BASS template doesn't work anymore.
I tried the one in the archive and it seemed to work. If it was an error for 'ProcessClick' it could have been an older copy of the template that hadn't had the fixes made. I think the plan is to release the final version of 3.5 with the templates from here.
#351
Engine Development / Re: Switch?
Fri 21/12/2018 21:54:57
Given that:
Quote from: License.txt
"Copyright Holder" means the copyright holders listed in the file Copyright.txt
and
Quote from: Copyright.txt
Copyright (c) 1999-2011 Chris Jones and 2011-2018 various contributors
...it doesn't seem entirely clear who be defined as 'Copyright Holder' in Artistic License 2.0. Just reading it from a layman's perspective I think you would be okay to distribute compiled versions based on the text in Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source as long as you documented the differences (from an external perspective, so keep your code private) and renamed all references of AGS to something else (so you are complying with option b in section 4):
Quote4(b) ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version.
That said, I imagine the preferable solution of the original project would probably be to take changes to make the engine backend agnostic, and just declare an interface that anyone could use to add additional platform support. 'Extending' AGS this way would likely fall under Items That are Not Considered Part of a Modified Version and so you wouldn't have to comply with any of the restrictions. How feasible this approach is would be questionable; I imagine it would be significantly more work, but potentially each side of the interface could be funded separately if there was someone else with a commercial interest.

Note: the above is just my personal opinion
#352
Do the AudioClips for the music have their type set to music, either directly or by their folder?
#353
I've tried it and it seemed to work okay, but the value will initialise to 0 and you didn't show how you are assigning any other value.
I think the problem is probably where you are assigning the value, rather than in the bits you have shown.
#354
Depends what you are syncing the audio with, I mean that the loop can potentially end early as well as never end.
I did preface this with "generic solution" (for people searching for how to implement this in their game) because this has edge cases, as well as a missing null check on the channel.
#355
Quote from: Crimson Wizard on Mon 17/12/2018 20:21:43
How does it decide on whether application needs it or not? Maybe there is a way to integrate some info into executable?
I think this is the relevant info: https://docs.microsoft.com/en-gb/windows/desktop/hidpi/high-dpi-desktop-application-development-on-windows
#356
Quote from: Chicky on Mon 17/12/2018 20:02:36
Or would you just recommend just setting it to 'Scaling performed by: Application' before deploying the game?
I doubt this would work, it probably wrote a setting to the registry on your computer and didn't modify anything to do with the game.

Unless it is related to whether you start the game with winsetup or not, I think it is likely that either the OpenGL implementation for AGS or the OpenGL driver is not doing something it should, but even if there were no issues in testing I think you'd be better releasing  your game with the option set to Direct3D. I think other than one round of bad Windows 10 updates, Direct3D is the most compatible choice, and stuff like Surface tablets have previously been launched with completely broken OpenGL support.
#357
If looking for a more generic solution, I think you should be careful of blocking against an AudioChannel without any checks on it (it might get something else played on it unless you are sure nothing else could hijack it with a high priority, or just use it directly). Depending on the format and how you want to handle playback stopping early, it might be safer to read the duration immediately after playback starts (incorporating a null check for people who have the audio turned off) and then block against the duration instead of the actual playback.
#358
Okay, I did check it before I posted it but if you need to store the choices the above way wouldn't work.

Try this instead:
Code: ags
readonly int EXPECTATION_COUNT = 10;

String[] GetEditorExpectations(int count)
{
  String expectations[] = new String[EXPECTATION_COUNT];

  expectations[0] = "Aggressive";
  expectations[1] = "Emotional";
  expectations[2] = "Fictional";
  expectations[3] = "Friendly";
  expectations[4] = "Informative";
  expectations[5] = "Interesting";
  expectations[6] = "Intrusive";
  expectations[7] = "Personally Viewed";
  expectations[8] = "Tabloid";
  expectations[9] = "Thrilling";
  
  String chosen[] = new String[count];
  
  for (int i = 0; i < count; i ++)
  {
    int max = EXPECTATION_COUNT - 1 - i;
    
    // pick a phrase
    int pick = Random(max);
    chosen[i] = expectations[pick];
    
    // shift array elements
    for (int j = pick; j < max; j ++)
    {
      expectations[j] = expectations[j + 1];
    }
  }
  
  return chosen;
}

String GetExpectationsAsString(String expectations[], int max)
{
  String text = "";
  
  for (int i = 1; i <= max; i ++)
  {
    // everything but the first phrase uses a separator
    if (i > 1)
    {
      if (max > 2)
      {
        text = text.Append(",");
      }
      
      text = text.Append(" ");
    }
    
    // the final phrase also includes "and "
    if (i == max && max != 1)
    {
      text = text.Append("and ");
    }
    
    text = text.Append(expectations[i - 1]);
  }

  return text;
}

function WhateverYourTriggerIs()
{
  // how many expectations to get
  int choose = 3;
  // store these somewhere for use later
  String expectations[] = GetEditorExpectations(choose);
  // get expectations as text
  String text = GetExpectationsAsString(expectations, choose);
  
  if (text != null)
  {
    String display = String.Format("The story is expected to be: %s", text);
    Display(display);
  }
}
#359
I imagine the goal of this is to pick 3 unique items from the array, so I thought I'd give it a try as there didn't seem to be an easy or obvious solution. Is there any better way than this, if the array values aren't used elsewhere?
Code: ags
readonly int EXPECTATION_COUNT = 10;

String ChoosePhrase(String phrases[], int count, int current)
{
  String expectations = "";
  
  // everything but the first phrase uses a separator
  if (current > 1)
  {
    if (count > 2)
    {
      expectations = expectations.Append(",");
    }
    
    expectations = expectations.Append(" ");
  }
    
  // the final phrase also includes "and "
  if (current == count && count != 1)
  {
    expectations = expectations.Append("and ");
  } 
  
  // pick a phrase
  int pick = Random(EXPECTATION_COUNT - current);
  expectations = expectations.Append(phrases[pick]);
  
  // if not done
  if (current != count)
  {
    // shift array elements and choose again
    for (int i = pick; i < EXPECTATION_COUNT - current; i ++)
    {
      phrases[i] = phrases[i + 1];
    }
    
    expectations = expectations.Append(ChoosePhrase(phrases, count, current + 1));
  }

  return expectations;
}

String GetEditorExpectations(int count)
{
  String interviewExpectations[];
  
  interviewExpectations = new String[EXPECTATION_COUNT];
  interviewExpectations[0] = "Aggressive";
  interviewExpectations[1] = "Emotional";
  interviewExpectations[2] = "Fictional";
  interviewExpectations[3] = "Friendly";
  interviewExpectations[4] = "Informative";
  interviewExpectations[5] = "Interesting";
  interviewExpectations[6] = "Intrusive";
  interviewExpectations[7] = "Personally Viewed";
  interviewExpectations[8] = "Tabloid";
  interviewExpectations[9] = "Thrilling";
  
  return ChoosePhrase(interviewExpectations, count, 1);
}

function WhateverYourTriggerIs()
{
  String expectations = GetEditorExpectations(3);
  
  if (expectations != null)
  {
    String display = String.Format("The story is expected to be: %s", expectations);
    Display(display);
  }
}
#360
I manually added the line breaks, just to clarify where those came from.
SMF spam blocked by CleanTalk