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

#561
Hmm... It seems unlikely that it would be related to this same issue, even if it's occurring around the same spot. Is the player consistently able to replicate the error, or is it more random? I'm not aware of anything on the plugin-side that would be causing it, though I could try pushing up the most recent version to see if it helps in any way (I'll have to double-check that the game runs properly, but as far as I remember none of the existing functions should have changed (their signatures) so it should be fine).
#562
Engine Development / Re: AGS engine Linux port
Sat 05/04/2014 00:43:27
Quote from: xenogia on Fri 03/05/2013 10:36:04Also to note - there is no vSync on AGS games under Linux.  I notice tearing during fade in and out transitions and in some animations.  Though if I run the game under Wine there is no tearing at all.

Is this still an issue for the Linux port? We're looking to start releasing games on Steam for Linux and this could be an issue for games that use v-sync. :-X
#563
@CW: The agsteamstub is a pretty reasonable example of what the plugin looks like with no direct references to the Steamworks API. If anyone needs a non-Steam version of the plugin for any reason (e.g., porting a Steam game to another platform) then that should get you going.

I will note that although previously unreleased, the AGSteam plugin is now released as a Linux shared library as well, and a beta test is under way for an official Steam for Linux launch. 8-)
#564
The Cat Lady is coming to Steam for Linux! If you're a Linux user and are interested in helping with a beta test, please PM me for details.
#565
General Discussion / Re: Free Steam keys!
Fri 04/04/2014 23:47:08
Hi folks! We're getting ready to launch The Cat Lady on Steam for Linux but we need to test it first. I have four free beta keys for anyone who can help us out. Serious beta testers please PM me for details! 8-)
#566
Seeing as any games distributed via Steam for Linux will likely have achievements and so forth, it's better to use the official shared libraries for Linux, now that I've made them available. I was working on it back in December but lost track of the files, and in the meantime forgot how rpath works. Now that I got that all sorted out, everything appears to be working (tested on Linux Mint 15). You can thank Mark Lovegrove for breathing down my neck on that one. (nod)




5 April 2014 - Recent changes to the plugin made it possible to crash the game if the Steam client wasn't loaded, which was a major regression from previous versions. That is fixed in both the Windows and Linux versions.
#567
I was just commenting on the fact that GoDaddy apparently removes the need for a third-party proxy registration. No harm intended. (roll)
#568
You can basically just do:

Code: ags
Dialog *runningDialog = null;

function dialog_options_get_dimensions(DialogOptionsRenderingInfo *info)
{
  runningDialog = info.Dialog;
  // etc.
}

function repeatedly_execute_always()
{
  if (runningDialog != null)
  {
    // blah
  }
}

function repeatedly_execute()
{
  runningDialog = null; // the dialog has ended at this point
}
#569
This thread is hilarious. At least I think so. Right AGA?
#570
It's not strictly relevant to what you're doing here, but you can think of DisableInterface as being like a call to Wait. It forces the game into the blocking thread (read the manual about blocking vs non-blocking) so that animations and movement are still drawn/updated, but user-input like clicking the mouse is ignored (effectively disabling the opposite side of things from what PauseGame does).
#571
You've got the general idea of it. Instead of manually calling PauseGame/UnPauseGame you could simply set the GUI's visibility type to "Pause game when shown" (in the editor). That will automatically handle pausing the game, but again, this still allows events to be run (otherwise you couldn't interact with GUIs and so forth while the game is paused).

So, to deal with that you can do one of the following:

Code: ags
function room_RepExec()
{
  if (!IsGamePaused())
  {
    oRain.X++;
    oRain.Y++;
    // etc., etc., etc.
  }
}


Or, a bit more simply:

Code: ags
function room_RepExec()
{
  if (IsGamePaused()) return; // if game is paused, we don't need to do anything
  oRain.X++;
  oRain.Y++;
  // etc.
}


These both accomplish the same thing, so it's up to you which one you choose. The second one prevents you having the entire function inside a huge if-statement though, so it makes it a bit clearer what's going on. Also note that you could have some things still run in your rep ex functions while the game is paused by simply calling them before you check if the game is paused.

Does that make it clearer?
#572
Quote from: AGA on Fri 28/03/2014 10:04:59As hilarious as I'm sure you think this thread is

Oh, well I guess you showed me then.
#573
As far as I can tell, I have to be Taiwanese, or have a Taiwanese address in order to buy a .tw domain name.  I don't know if there are any rules about this, but are there any trustworthy Taiwanese who would help me acquire one of those fancy domains for an upcoming project of mine? (I'll pay for the domain, of course!)
#574
It seems the easiest way of going about this is just to be Queen Elizabeth the Second.
#575
Site & Forum Reports / Re: Bug reports
Thu 27/03/2014 19:52:06
I was being silly and thought I'd go and add a page to the wiki today, when suddenly the whole thing exploded.

First (despite being logged in on the forums), it asked me to log in to my account. Again, I was already logged in, so it seemed rather odd bringing me to the forum login page with my avatar and user control panel appearing, but I logged in anyway. It then brought me to the forum homepage. Then I clicked back on the link for the wiki, and I got this:

Code: text
MediaWiki internal error.

Original exception: exception 'MWException' with message 'SkinTemplate::makeTalkUrlDetails given invalid pagename User:' in /var/www/ags/w/includes/SkinTemplate.php:721
Stack trace:
#0 /var/www/ags/w/includes/SkinTemplate.php(648): SkinTemplate->makeTalkUrlDetails('User:')
#1 /var/www/ags/w/includes/SkinTemplate.php(448): SkinTemplate->buildPersonalUrls()
#2 /var/www/ags/w/includes/OutputPage.php(1989): SkinTemplate->outputPage()
#3 /var/www/ags/w/includes/Wiki.php(543): OutputPage->output()
#4 /var/www/ags/w/includes/Wiki.php(446): MediaWiki->main()
#5 /var/www/ags/w/index.php(59): MediaWiki->run()
#6 {main}

Exception caught inside exception handler: exception 'MWException' with message 'SkinTemplate::makeTalkUrlDetails given invalid pagename User:' in /var/www/ags/w/includes/SkinTemplate.php:721
Stack trace:
#0 /var/www/ags/w/includes/SkinTemplate.php(648): SkinTemplate->makeTalkUrlDetails('User:')
#1 /var/www/ags/w/includes/SkinTemplate.php(448): SkinTemplate->buildPersonalUrls()
#2 /var/www/ags/w/includes/OutputPage.php(1989): SkinTemplate->outputPage()
#3 /var/www/ags/w/includes/Exception.php(227): OutputPage->output()
#4 /var/www/ags/w/includes/Exception.php(272): MWException->reportHTML()
#5 /var/www/ags/w/includes/Exception.php(620): MWException->report()
#6 /var/www/ags/w/includes/Exception.php(690): MWExceptionHandler::report(Object(MWException))
#7 /var/www/ags/w/includes/Wiki.php(449): MWExceptionHandler::handle(Object(MWException))
#8 /var/www/ags/w/index.php(59): MediaWiki->run()
#9 {main}


Feels bad man. :~(
#576
Khris, I'm afraid you're a bit mistaken.

IsInterfaceEnabled would return true if the Inventory ANY GUI is/isn't shown, regardless of whether or not the game is paused. The only time that IsInterfaceEnabled would ever return false is during a blocking event or upon manually calling DisableInterface. GUI visibility will never affect the user interface. "Pause game when shown" will cause IsGamePaused to return true, not IsInterfaceEnabled to return false.

The basic premise of what Khris said is still generally correct though, you just need to check IsGamePaused.




Rant about Pausing the game vs. Disabling the interface

Spoiler
To help make the distinction, pausing the game (e.g., via a GUI or PauseGame) will tell AGS to stop the background processing. This means that animations (e.g., Character.Animate, Object.Animate, etc., not any user-defined manual animations), movement (e.g., cEgo.Walk, oBall.Move, etc., not any user-defined movements like oBall.X++), and so-forth will temporarily stop being processed by the engine, and resumed when the GUI is closed or UnPauseGame is called (note that PauseGame calls can stack, so you may have to call UnPauseGame more than once if you're pausing it from multiple locations). All calls such as repeatedly_execute, on_event, on_mouse_click, on_key_press, interaction events, and GUI events will still be called normally! GUIs and their controls will not be disabled by pausing the game.

Disabling "the interface" (e.g., during any blocking event or by calling DisableInterface) is essentially the opposite of pausing the game. That is, it tells the engine to stop processing user input, rather than to stop doing its own work. The interface will remain disabled until the blocking event ends or EnableInterface is called (similarly to PauseGame, calls to DisableInterface also stack, so you may have to call EnableInterface more than once if disabling from multiple locations). Calls such as repeatedly_execute, on_event, on_mouse_click, on_key_press, interaction events, and GUI events will not be called while the interface is disabled. GUIs and their controls will be greyed out or disabled while the interface is enabled. The engine will automatically set the mouse cursor to eModeWait (regardless of name, this is hardcoded behavior for cursor mode 7) while the interface is disabled).

I'll also note that the wording in the manual can sometimes be a bit misleading or counter-intuitive given these descriptions. For example, the entries for Wait, WaitKey, and WaitMouseKey all begin with the phrase, "Pauses the script" by which it actually means the interface is disabled. The game is not paused by calling Wait.

And not that you were probably about to, but you should generally avoid calling PauseGame and DisableInterface at the same time because then the only thing the engine would do is call repeatedly_execute_always and draw the screen. It wouldn't process any input, animations, or anything until you released it to do so... (roll)
[close]




In short, all you have to do is check that the game isn't paused:

Code: ags
function room_RepExec()
{
  if (!IsGamePaused()) // equivalent to IsGamePaused() == false
  {
    // update and check loop count
    // do animation, if needed
    oRain.Y++;
    // sanity/bound checking on oRain.Y, I presume?
  }
}
#577
AGS should really be raising a warning

Strike that. AGS shouldn't even have to raise a warning for this situation. The default room template should have some background defined, even if it is just a blank, black one.
#578
I'm bumping this for the latest version. In addition to the methods I mentioned previously, this version includes the following:

Code: ags
enum AGSteamScoresRequestType
{
  eAGSteamScoresRequestGlobal, // used to request global leaderboard scores
  eAGSteamScoresRequestAroundUser, // used to request leaderboard scores around the player's best score
  eAGSteamScoresRequestFriends // used to request leaderboard scores for the player's Steam friends
};

///AGSteam: Returns the value of a global Steam INT stat
static int AGSteam.GetGlobalIntStat(const string steamStatName);
///AGSteam: Returns the value of a global Steam FLOAT stat
static float AGSteam.GetGlobalFloatStat(const string steamStatName);
///AGSteam: Returns the name of the current leaderboard (call FindLeadboard first)
readonly static String AGSteam.CurrentLeaderboardName;
///AGSteam: Requests to load the specified Steam leaderboard. This call is asynchronous and does not return the data immediately, check for results in repeatedly_execute.
static void AGSteam.FindLeaderboard(const string leaderboardName);
///AGSteam: Uploads the score to the current Steam leaderboard. Returns false if an error occurred.
static int AGSteam.UploadScore(int score);
///AGSteam: Downloads a list of ten scores from the current Steam leaderboard.
static int AGSteam.DownloadScores(AGSteamScoresRequestType);
///AGSteam: Returns the name associated with a downloaded score. Call DownloadScores first.
readonly static String AGSteam.LeaderboardNames[];
///AGSteam: Returns a downloaded score. Call DownloadScores first.
readonly static int AGSteam.LeaderboardScores[];
///AGSteam: Returns the number of downloaded scores (if any). Call DownloadScores first. Max is 10 scores.
readonly static int AGSteam.LeaderboardCount;
///AGSteam: Returns the current game language as registered by the Steam client.
static String AGSteam.GetCurrentGameLanguage();
///AGSteam: Returns the Steam user's username.
static String AGSteam.GetUserName();


The biggest difference here is support for Steam leaderboards. Again, feel free to ask if further explanation is required for usage.
#580
The Rumpus Room / Re: Icey games' thread
Sun 16/03/2014 02:23:39
icey, you have the expectations and aspirations of a clinically insane space midget.

But you don't let it drag you down if things don't pan out the way you hoped.

You're an amazing artist, and I envy your talents.

Don't stop dreaming, don't stop believing in yourself, and no matter how far out of reach it seems, never, ever, ever give up.

You're an inspiration, and I love you.
SMF spam blocked by CleanTalk