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

#121
Question about this, was the font rendering somehow changed from AGS 3.2 to newer versions? I was considering an Android port of my game IWWHIIWWHITOMIROTPG, but running the game with AGS 3.3.0 or later the fonts become unreadable. The game was built with AGS 3.2, and it seems AA was turned off. I lost the source some time ago though. Is there a way to disable TTF font AA from the CFG? And any reason why 3.3.0 and later would be forcing it when it wasn't being used in 3.2?

Edit: Actually... I think AA must have been enabled in the game settings, but 3.2 just wasn't applying it to the speech for some reason. :/ When dialog options are rendered (3.2 engine) there is visibly AA, but it isn't applied to speech or GUI labels. I think since I do not have the source I can use a custom engine build for this app that just brute-forces AA to be off. Not ideal, but it's the best I can think of since I don't have the game source.
#122
Source of the Scourge of the Underworld app

This project actually serves well enough as a template for my purposes. It's extremely simple to swap the project files to a new game, a process I've actually done twice this morning already for Scourge DX and Mighty Pirate. I've explained the process in the README, though it will take some time to get everything set up properly the first time (install Android Studio, install gradle 2.10, download prebuilt native libs, setting up the necessary resource files, etc.). That being said, though, it occurred to me that if you are publishing multiple apps on Google Play, that using this git repository as a base, you can check out a branch for your app, make the necessary modifications, and then git will prevent you from having to clone the agsEngineLibrary, google_play_licensing_library, and google_downloader_library libraries multiple times. Since a large portion of the APK code between games is the same, git can keep track of the changes instead of you using multiple project folders. This is what I am doing for the OSD games that I am publishing on Google Play.

At some point I will try to create a separate thread that details, step-by-step, what needs to be done, with images.... at some point.
#123
I think I was confused because of the fact that there is active development in master, develop-3.3.5, and develop-3.4.0. I was thinking that the latest changes to master were the latest pre-3.4.0 changes. The motivation then was to finalize master for a formal release and prepare 3.4.0, but of course I misunderstood. I don't understand why any changes have been placed in master as I thought master was supposed to always represent "latest stable release". Obviously if we're making changes to master, then that's not the case... :(

What, then, must be done to merge 3.3.5 into 3.4.0 I wonder... I'm not trying to frustrate the situation, I'm just trying to find some way to be helpful and do something useful.
#124
Quote from: Mehrdad on Wed 03/02/2016 12:26:56If it takes too long if you don't mind please lead me step by step for make this package(APK+OBB) as dummies with keystore . Unfortunately I'm not good programmer special for Java and can't any help to you.

Android Studio actually integrated a keystore tool, so there's a very simple GUI for that when you select "Generate signed APK". I'll post full details later.

Edit: I was able to implement the downloader interface and get it working with this. Turns out that the "library" project that Google supplies is kind of out-of-date! Also, it probably turns out that a lot of my work figuring out how to get these gradle build scripts working with the "experimental" plugin was unnecessary, as I've realized that since I'm invoking the NDK manually, it doesn't really matter about the built-in NDK support! (sorry, implementation details)

The last thing I need to get working is a prompt for downloading the expansion file over cellular (regarding data charges, seems a good idea to prompt the player instead of assuming). Then I can release the source code for this app and design it into a template for general use.

....aaaaand, I got called into work. So.... soon.
#125
I plan to start working on a two-phase build process for standalone Android apps.

The simplest method for standalone apps is to use the mountObb function to mount an expansion file as a read-only file system. This allows games up to 2 GB without any modifications to the engine. Packing the game files into the APK would limit the game size to 100 MB at best (Google Play Store limit).

The editor could likely build an appropriate OBB file (opaque binary blob files can be literally anything; mountObb expects a FAT16 file system with the files stored appropriately in its file table), but building, signing, and aligning the APK are a bit beyond a realistic scope for now. However, I have had success in updating the Android project files to Android Studio, so a prefabricated AS project could be supplied. You would change a few lines in the string resource file and update the graphical assets, and then you could export your signed APK from AS, and upload the APK and the OBB file to the Google Play store. This two-phase building is actually rather simple, once the other steps are put in place. I'm finishing reimplementing some steps that I had done a few years back, but then the prefab AS project should be finished. At that point, a three-phase process would be available: 1) build the game data files with AGS 3.4.0, 2) build the Android expansion file using the jobbifier tool, and 3) build the APK using the Android Studio project.

I intend to publish the Android Studio project files once I have finished implementing the downloader interface for ensuring the expansion file exists.
#126
It seems that the master branch can be merged into develop-3.4.0 without any conflict. Would it be a good time to go ahead and merge the branches and start to consolidate this into a release version?
#129
I did a thing, but... VERSIEN 0.01VI9-ALPha is actually fundamentally broken. 8-) I'll be pushing an update so that you can actually play it.

Edit: The app isn't creating a necessary folder. You can use a file manager or PC to create the folder "/sdcard/Android/obb/com.monkeymoto.osd.scourge/" and it will work (like I said, pushing a fix for this). "/sdcard/" may mean your phone memory or actual SD card (it varies).

VERSIEN-0.02XK7-ALPha2 corrects the game not loading. The next update will fix the music not playing. The error about the missing DIGMID patch is a feature.
#130
Quote from: SilverSpook on Mon 01/02/2016 06:08:00I was thinking of putting a boolean in each and every hotspot, object, character's every interaction to check if you're being choked or not, but I was thinking there might be a simpler way, thanks!

You're sort of on the right track. You'd want a single global boolean, not a separate one for each interaction. Then, instead of checking it in every single interaction script available at that moment, you can check it in your on_mouse_click function. If the boolean is true, then redirect to the "Can't do that!" event function. Otherwise, call ProcessClick as normal. ;)
#131
Editor Development / Re: Strings Again
Mon 01/02/2016 06:41:36
Quote from: Snarky on Sun 31/01/2016 15:14:50For these reasons, most C-like languages discourage use of '==' for string comparisons (though some simply treat null as an empty string)

I'm not sure what "most C-like languages" you're referring to. C doesn't have any support for operator overloading (and doesn't have traditional function overloading for that matter). C++ allows overloading the global operator== for char* and char const*, and provides a built-in overload (as part of the STL) for std::string. C# has a built-in operator== for System.String.

As gurok already pointed out:

* C's strcmp is undefined behavior if any of the parameters are not a null-terminated byte string.
* C++ has explicit reference types (references and pointers) that are not comparable to objects, so there is no such thing as a "null" std::string.
* C# checks references first. If both are null, then the result is true. Otherwise, if either is null, then the result is false. Otherwise, it compares the text of the two strings.

Of the three common, major "C-like languages", two of them support operator==. Of those two, only one has a by-reference string type, and it produces exactly the expected output when using operator==.

As expected, C# throws a NullReferenceException if the "this" reference in String.CompareTo is null, but produces expected output for a valid String object with a null parameter. (test)

Quote from: Gurok on Sun 31/01/2016 11:26:24Is there any desire to bring this more in line with C#? Where:

Code: ags
"a".CompareTo(null); // false
String a = null; a.CompareTo("b"); // null reference exception
"a" == null // false
String a = null; a == "b" // false

This is completely consistent with the way C# handles null String references, so I would say absolutely, yes. The first line, calling a function on a string-literal, isn't currently supported either, but I see that as a tangential point. Regarding the handling of String comparison, I definitely feel that it should mirror C# when working with null references.
#132
People need to be more excited for this.
#133
I don't have any screenshots and also I am not the creator of this game, but there is a new game coming from Secret Fawful in February 2016 called FOSTER HOME. It's a really amazing short project with incredible graphics and a dark storyline that will leave you craving more from this outstanding developer.

Secret Fawful is also the developer of the award-winning upcoming game, A Night at Camp Ravenwood.
#134
I'll fix your indentation for you, because without it your code is an unreadable mess (I'll be an ass about that).

Code: ags
function cMystica_Interact()
{
  cThrif.Walk(166,166, eBlock, eWalkableAreas);
  player.Say("What are you in for?");
  cMystica.Say("That some kind of joke?");
  cMystica.Say("Why are you chatting when there's many guards here.");
  cMystica.Say("You know, the kind ready to catch you.");
  cPoo.Say("He's just being polite.");
  cMystica.Say("Is it normal for a rouge to chat up prisoners.");
  cThrif.Say("Yes.");
  cPoo.Say("Yeah.");
  cMystica.Say("Look, I don't want to get into anymore trouble. So please don't talk to me.");
  {
    if ( player.ActiveInventory = iBag);
    {
      Display("I don't she'll miss this little thing.");
    }
    if else
    {
      Display("She turns away from me to pout, like a child.);
      Display("I notice the small pouch close to the door, I was curious and rent was due.);
      Display("I took the thing, finding it was some kind of powder. Sleeping powder if I am not mistaken.");
      cThrif.AddInventory(iBag);
    }
  }


I also took the liberty of moving some of your braces, but only the one that was actually inconsistent with the rest.

Things to fix:

* You have unnecessary braces { and }.
* You are using the assignment operator, = in an if statement. AGS doesn't allow that, and it's not what you meant. The equality operator is ==.
* You have a semicolon at the end of your if statement, meaning that the block following it is not conditional.
* You transcribed "if" and "else". else if applies if you have a second condition to test when the first condition of an if statement fails. If you do not have a second condition to test, then you simply use else.
* You are missing closing quotation marks in the first two Display statements in your else block.
* Your code snippet is missing a closing brace, }, but that may be due to the use of extra, unnecessary braces.

Code: ags
function cMystica_Interact()
{
  cThrif.Walk(166,166, eBlock, eWalkableAreas);
  player.Say("What are you in for?");
  cMystica.Say("That some kind of joke?");
  cMystica.Say("Why are you chatting when there's many guards here.");
  cMystica.Say("You know, the kind ready to catch you.");
  cPoo.Say("He's just being polite.");
  cMystica.Say("Is it normal for a rouge to chat up prisoners.");
  cThrif.Say("Yes.");
  cPoo.Say("Yeah.");
  cMystica.Say("Look, I don't want to get into anymore trouble. So please don't talk to me.");
  if ( player.ActiveInventory == iBag)
  {
    Display("I don't she'll miss this little thing.");
  }
  else
  {
    Display("She turns away from me to pout, like a child.");
    Display("I notice the small pouch close to the door, I was curious and rent was due.");
    Display("I took the thing, finding it was some kind of powder. Sleeping powder if I am not mistaken.");
    cThrif.AddInventory(iBag);
  }
}
#135
Hints & Tips / Re: Error in The Cat Lady
Thu 28/01/2016 16:30:33
Which version of the game are you playing? Is this a Steam version of the game, or did you purchase it directly from the Screen 7 website?

The line of dialogue in question is this one?

Spoiler
QuoteJack made those pictures on your wall. Was he an artist?
[close]

The line should be playing properly in the latest Steam build, Version 1.5 of the game.

I will send m0ds a message to see if he knows anything about this problem.
#136
It's for custom dialog option rendering. To use the module you need to specify some basic info, such as the size and position of the "GUI" where the dialog options will be drawn:

Code: ags
  ScrollingDialog.X = 0;
  ScrollingDialog.Y = 125;
  ScrollingDialog.Width = 320;
  ScrollingDialog.Height = 75;
  ScrollingDialog.TextColorNormal = player.SpeechColor;


That alone should be enough to get you going, I think. The normal text color should actually be defaulted by the module, but I think I overlooked that.

The other options allow you to change various other graphical features, background graphics, border decorations, scroll arrows, etc.

The module does much more than just provide scroll arrows at this point, but I kept the name for historical purposes. The early versions were the modularization of the scripts I submitted in my early days of AGS, long before the custom dialog rendering system was put into place.
#137
Great! Are you going to merge issues? I can work on that if you'd like.
#138
DOWNLOAD

The MathsPlus module adds some additional Maths functions, including:

* float Maths.Abs(float)
* float Maths.Ceil(float)
* float Maths.Floor(float)
* float Maths.Max(float, float)
* float Maths.Min(float, float)
* float Maths.Round(float)
* int Maths.AbsInt(int)
* int Maths.MaxInt(int, int)
* int Maths.MinInt(int, int)

Requires AGS 3.4.0.6 or higher
#139
I can look later and see which VC++ runtime(s) are installed on that system, but is there a change in the required runtime from 3.3.4 to 3.3.5.1? Again, 3.3.4 runs on that system without problem.
#140
*bump* for new version. See first post for details.
SMF spam blocked by CleanTalk