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 - Monsieur OUXX

#821
EDIT: bad reading through thread

I think your issue is a combination of two issues :
1) Your TTF font doesn't have all the characters. Yep, CW guessed correctly : it's perfectly possible for a font not to have all the characters. But most of the times you don't notice it because Windows replaces the missing characters with the same character from a similar-looking font. For example, as a French, how many times have I been using a cool font, only to realize that all the instances of character é appear in Arial? windows knows how to do that. But AGS obviously can't do that.
2) You don't know how to render your TTF font to WFN and how to move the characters you need to the first 256 slots.


I'd follow this process :
1) Read the Font wiki page : http://www.adventuregamestudio.co.uk/wiki/Fonts
2) Use rulaman's tool to turn your TTF font into WFN : look for the "Rulaman's TtfWfnSci" section in the wiki page
3) Use Rulaman's other tool ("Rulaman's WFN-FontEditor" - see dedicated section of the wiki page) to edit that WFN font and draw the (potentially missing) required characters into the first 256 slots.



Oh, and when you're done, UPLOAD the font you made, to make it available to the Persian/Iranian/Farsi AGS community ;)

#822
Quote from: Crimson Wizard on Tue 14/03/2017 17:53:56
1) This is Allegro 5 package, while AGS needs Allegro 4. These libraries are non-compatible, Allegro 5 has very different API (functions).
Yes I thought I remembered that, but then I saw no evidence in the sources, so I thought "hey maybe those magicians managed to upgrade to Allegro 5 after all!"

And indeed, if we're using a patched Allegro 4, it wouldn't work as NuGet is meant to reference compiled libraries (that said my knowledge in patching is very blurry, I have no idea how the magic happens when patching files "externally" -- by externally I mean applying some external automated set of targetted changes rather than editing the file directly) (I'm not asking you to explain -- just saying I don't know) ('cause I know that you're always willing to help so don't waste time explaining how patching works) ( :wink: :wink: :wink: )
#823
Just a thought: with NuGet, the hassle of including Allegro (and having to build it) would now be greatly reduced wouldn't it?

https://www.allegro.cc/forums/thread/615945
#824
I'm playin git. It's really cool. I'll use this post as a placeholder for bug reports

BUGS
Spoiler

1. Proofreading : "it's Earth-normal atmosphere" should be "its Earth-normal atmosphere"
[close]
#825
Very good theme
#826
Quote from: Khris on Thu 09/03/2017 23:02:31
I referred several people and activated Camera Uploads on my phone. I currently have a free Dropbox with 8,75GB of space.

I understood none of the 3 parts of this sentence.  ;-D What is "referring people". What is "camera upload". How on earth do you have 4 times the 2GB limit? Off to google!


Quote from: Kumpel on Thu 09/03/2017 19:18:10
The pro account gives you 1 TB but your colleagues won't get anything of that. They can't get more than 2GB+bonus space synchronized. You all need pro for that to work.
OK that's what I was afraid of. That's stupid. Well I'll need to find another solution.
#827
Question on Dropbox quotas.

Quotas for free Dropbox work like this:
- The maximum size of one account is 2GB
- My personal account happens to be 75% full (1.5GB)
- A friend shares another dropbox account with me as the Dropbox equivalent of shared folders. That Dropbox happens to be 25% full (500MB). that Dropbox is our team dropbox and is shared with other people too.
- Dropbox calculates space usage as follows : it sums up all the folders to which I have access : 1.5GB + 500MB = 2GB --> LIMIT REACHED

My question is : what's the best way to push that limit?
- Should I pay for a non-free Dropbox?
...or...
- should he pay for a non-free Dropbox?

I'm worried that if I follow the first solution, then some calculation bullshit will prevent other team members to reach the 2GB limit.
I'm worried that if he follow the second solution, my personal free Dropbox will drag down the upper limit.


#828
Quote from: Khris on Wed 08/03/2017 10:41:36
People have survived falling out of airplanes, so it is entirely in the realm of plausibility.
Khris is right, but try to avoid the hollywood blockbuster syndrome, where gravity doesn't exist, and neither do shocks nor inertia nor injuries of any kind. (See that ridiculous scene from The Island where they jump from a sckyscrapper and get saved by some sort of tiny fishnet)
#829
Me voting is uselss since Hobo is getting most of them and that's precisely what I wanted to push :)
So I'll just post to say: Hobo, great low-color work. I only just saw this ocmpetition's theme and thought "hey I should try doing a low-color drawing". And then I saw yours. Perfect.
#830
Quote from: Kumpel on Sun 12/02/2017 20:40:43
I found a way to download the spanish demo of that jungle scene via the waybackmachine: here is the link:

http://web.archive.org/web/20120306132759/http://www.teckelstudios.es/files/ROTLA%20DEMO%20Setup%20(spanish).exe

Have you found any broken links to the english demo? Maybe this way you can get them too.
Thanks a lot. Really really cool.
#831
Quote from: Crimson Wizard on Fri 24/02/2017 12:23:46
When you say "expensive" you need to be more specific. Naturally, copying stuff, and parsing strings to extract some data is relatively more expensive than passing data by pointers and accessing them from proper containers. But how does it look in absolute measurement? And for human players?

For the reference, I used monkey0506's vector class, and a prototype functionality of my structstream module to make an arcade game. That game did have about 8 or 10 enemies on screen simultaneously (plus their shots, which were temporary objects), that were moving, attacking, updating, playing distinct animations on various events, etc. And on every game tick in repeatedly_execute I unpacked their data from the string, and then put it back if I had to modify it. And I never noticed any slowdowns.

In the end, I thought that using strings to store data was more inconvenient than slow, because frankly with the number of elements and data complexity I had it would be simplier to just have fixed-sized arrays. But, well... that was all for an experiment.

[not saying that in an arrogant or condescending way] My statement was something about the language abilities, therefore I'd rather not enter detailed discussions about performance because it would lead us away from that. I'll just say that I'm skeptical about storing/reading an int into/from an array being on the same performance scale as performing Substring operations. But apart frmo that it meets the requirement to sort arrays into arrays.
#832
Just for the record: passing arrays around by reference does not solve the core issue I raised, but it does help on some things:
- it's still not possible to store arrays into arrays. (except using the StructStream trick, which is rather expensive)
- But it does help separating data from functions (a complex structure stored into an array can still be passed around to several modules for a very low cost).
- It also helps in another way (at least, it facilitates) :  passing arrays by reference facilitates emulating the storage of an array (or a pointer to that array) into a container array. For example, it's not too expensive to store the index of a dictionnary in the first half of the dynamic array, and the values in the second half. then it's easy to make the index "point" to the values, within the container array. However beyond a certain level of complexity, it becomes expensive and inconvenient again.
#833
I have no idea what this is about but I'm always enthusiastic about engine inner workings clarifications.
#834
...and yet another test to see if the number of cells in an array impacts the speed to write to a given cell. it doesn't. Accessing cell #0 of an array with just one cell is as fast as accessing cell #99999 of an array of size 100000.
That also makes perfect sense, but I wanted to make sure there's not bads surprise coming from the underlying memory management and boundaries check

Test script
Spoiler

Code: ags


void noloopcheck Test5()
{
    int a_size=1000000;
    int b_size=1;
    int a[] = new int[a_size];
    int b[] = new int[b_size];
    
    resetChrono();
    for (int i=0; i<nbLoopsTest; i++) {
        a[a_size-1] = 0;
    }
    int result1 = getChrono();
 
    resetChrono();
    for (int i=0; i<nbLoopsTest; i++) {
        b[b_size-1] = 0;
    }
    int result2 = getChrono();
    
    Console.W("result1=%d, result2=%d", result1,  result2); 
}

[close]
#835
I ran a new test that shows that the manipulation of dynamic array sby AGS is truly by-reference -- In other words, the size of the array does not impact the speed in any way.
That makes perfect sense but I wanted to be sure.


Test script
Spoiler

Code: ags


int[] Test4_Helper(int array[])
{
   int a2[]= array;
   return a2;
}

void noloopcheck Test4() 
{
    int a[] = new int[1000000];
    int b[] = new int[1];
    
    resetChrono();
    for (int i=0; i<nbLoopsTest; i++) {
        a = Test4_Helper(a);
    }
    int result1 = getChrono();
 
    resetChrono();
    for (int i=0; i<nbLoopsTest; i++) {
        b = Test4_Helper(b);
    }
    int result2 = getChrono();
    
    Console.W("result1=%d, result2=%d", result1,  result2);
    
}


[close]
#836
Really cool additions CW. Thanks a lot.
#837
Quote from: Crimson Wizard on Tue 21/02/2017 10:43:57
We should review this table for the latest 3.4.0 release I guess. Also, maybe make it sticky topic?

i have edited it to update with the info I got here.
and I'm using 3.4 patch 2 for my tests
#838
while you were writing I ran a test and edited my previous message
#839
if by "managed arrays" you mean "arrays (whether static or dynamic) of managed types", then let's forget about those for a moment. They are of limited interest for the paradigm that i'm trying to address here.
The really important arrays here are arrays of unamanaged types. arrays of int for general use, arrays of String for dictionaries, arrays of float for coordinates, etc.  Those are indeed always passed by-copy.
Anyway, you get my point. I was just suggesting another "relatively easy" way of unlocking some difficulties in AGS scripting.


Spoiler

Just to avoid a misunderstanding in "programmers talk" -- yes, the pointer's array is passed by reference, but then if you change values inside the function it does not reflect back when the array is returned from it. So in the end you may say it's passed by copy.
[close]


EDIT I'm so confused right now. I recal running tests some time ago to check if arrays of unmanaged types were passed by copy or by ref, and I came to the conclusion that they were passed by copy.
I even wrote it here (and I got conforted in my result by the fact that nobody contradicted me)

I just ran this test :
Code: ags

void dummyFunc(int ar2[])
{
    ar2[0]=88; ar2[1]=99;
}

void Test2()
{
    int ar[] = new int[2];  ar[0]=66;  ar[1]=77;
    dummyFunc(ar);
    Console.W("values after call: %d, %d", ar[0],  ar[1]);

}


...And indeed the console shows : "values after call: 88, 99"

Maybe it's because I ran my tests on Strings back then, and made a mistake. I'll never know.
It's still not possible to reference an array from another array, but it's made unnecessary since arrays can be passed around and worked on, with no limits, very cheaply. Now I'm praying not to trip on some unexpected AGS bullshit (you know, something like "even though we just pass the array by reference, the function call is still proportionally slow to the number of items in the array"), but I can't see why something like that should arise.

EDIT: passing arrays by reference does not solve every problem (I'll update with a new post)
#840
I forgot to mention: another (relatively easy) way to unlock most of AGS issues would be to let arrays be passed by reference into functions, instead of by copy.
SMF spam blocked by CleanTalk