Show Posts

You can view here all posts made by this member. Note that you can only see posts made in areas to which you currently have access.

Messages - Snarky

Pages: [1] 2 3 ... 191
Not sure I entirely agree with selmiak's answer. It's all described on the wiki page he links to, but the main point is that AGS supports two different kinds of fonts.

1. Vector fonts in TrueType (.TTF) format. These are the kind of fonts Windows uses. Like Selmiak says, you can create or edit them with a program like FontForge. This tends to be pretty complicated, though.
2. Bitmap fonts in SCI or WFN format (they're pretty much equivalent). These are primitive font formats that aren't really used anywhere else any more, but they're much easier to create. You can simply draw the characters in one of the two font editors for AGS (described on the wiki).

I would recommend the second option. (A bizarre wrinkle in the whole thing is a bug that keeps AGS from importing its own font format, WFN. The workaround is described on the Wiki.)

Finally, as another alternative you can use Calin's SpriteFont plugin. In this case you'd draw the font in an image editor like Photoshop, and import the font "sprite sheet" as a sprite.

"A building is a big thing. A plane is a small thing. A small thing cannot destroy a big thing. Poof! QED."

This pretty much sums it up actually. Does it need to be any more complicated?

Just one small problem: It's utter nonsense!

General Discussion / Re: Discouraged Into Ineptitude
« on: Yesterday at 18:11 »
As far as I see it, 8bit has fallen out of favour because the only thing AGS can do in on other colour depth is palette cycling*. It could be fun for a truly retro game but the restrictions aren't really worth the effort.

Also, 8-bit requires the game to set the screen to 256-color screen mode, which can be problematic to get to run correctly on modern systems. There is a high risk that a significant number of players either won't be able to run the game at all, or only with the colors all screwed up.

The only downside is that a 32bit game will probably be larger.

Yea I think this was why I went with 16-bit.  My game has a bunch of different stuff going on at the same time and I must have been worried about slow-downs.  Also, good to see you around Ghost!

It may be larger, but AFAIK there's no reason it should be slower, unless you use some of those alpha transparency effects that are only possible in 32-bit.

I'd recommend 32-bit every time. You never know when you'll find a use for alpha transparency: it comes in handy in a lot of situations (for example, it's the only way – outside of 8-bit palette manipulation – to do a fade-to-black at whatever speed you want).

General Discussion / Re: Bad robot walkcycle
« on: Yesterday at 15:39 »
I love this bit:

I think he might agree to let someone use the image because no money is made and it is good
advertising for his production company.

Yes, the director of the next Star Wars movie could really use the promotion that only a character in an AGS game can provide!

Congratulations on the release and all the great reviews! Preordered, so will have to find some time to play at some point...

The Rumpus Room / Re: *Guess the Movie Title*
« on: 21 May 2015, 17:45 »
Thank you! (It was actually your turn anyway, so take it away!)

The Rumpus Room / Re: *Guess the Movie Title*
« on: 21 May 2015, 16:38 »
No? OK, here's one last screencap and hints:

It's a 2014 Korean dark-comedy/thriller about a dirty cop having a hard day after he runs over a pedestrian and has get rid of the body, while dealing with lots of other complications. That should be pretty googleable.

Yes, if you want to call Character.Saying() with the player name (or any other variable) inserted into the string, you should do something like:

Code: Adventure Game Studio
  1.   String msg = String.Format("My name is %s. Pleasure to meet you!", PlayerName);
  2.   cEgo.Saying(msg);

You could also try:

Code: Adventure Game Studio
  1.   cEgo.Saying(String.Format("My name is %s. Pleasure to meet you!", PlayerName));

...but AGS can be a bit finicky about nested functions, so it may not work – I'm not sure off the top of my head.

General Discussion / Re: Discouraged Into Ineptitude
« on: 20 May 2015, 17:51 »
I would strongly recommend that you make your game 32-bit, and in that case you don't have to mess around with palettes at all. The main use of the "Colours" node is to calculate the AGS color number of a given color, for setting text color etc.

The sprites node is a just to browse through all the sprites you have imported (mainly to look up the sprite number). You can't actually edit the graphics inside of the AGS editor, though it's possible to have it launch another application to do so.

To start off, the best advice is to follow the tutorial in the AGS manual (under Help). It will take you through most of the user interface and teach you the basics.


No, not necessarily. It's just that it interferes with this particular workaround because of one of the most frustrating limitations in the AGS scripting language.

Unfortunately, it seems that this solution was horrible to implement in retrospect.

How so? Seems to me that there should only be two or three steps to it:

1. Create the struct type like Wyz outlines, wrapping all the API methods you need.
2. If you have any AudioChannel* globalvars, change them to regular variables exported by a script and imported in the header.
3. Change every AudioChannel* declaration to a SafeAudioChannel declaration.

The only possible problem I can see is if you've been passing AudioChannel* variables as arguments to functions, or had them as members of other structs.

The Rumpus Room / Re: *Guess the Movie Title*
« on: 19 May 2015, 12:58 »
OK, another one, then:

As you might glean from the frame, it's a Korean movie.

You forgot about the 31st, Khris. ;) Nope, ignore that! :-[

OK, a couple of things:

The repeatedly_execute() snippet is really not the best way to do what you're trying. It's ingenious, the way you use odd numbers to keep it from running more than once and switching on increment, but if something doesn't need to run every game cycle it doesn't belong in repeatedly_execute().

This is a problem because it means the day counter doesn't simply hold the day number (as you would usually expect), so it makes any kind of calculation more difficult. (It's not too difficult to convert, but let's do this properly!)

Instead, let's get rid of the lines in repeatedly_execute(), and just have a function called day_increment():

Code: Adventure Game Studio
  1. function hBed_Interact()
  2. {
  3.     Display("You go to sleep.");
  4.     day_increment();
  5. }
  7. void day_increment()
  8. {
  9.     Day_counter++; // This is a more common way to write Day_counter += 1
  10.     // TODO: Display date
  11. }

Isn't that much simpler?

OK, so how do we actually display the date? Well, it's not too hard. What you want to do is to first calculate what month and day of the month it is, then find the right number suffix (st., nd., rd., th.) depending on the date. So let's write a function that produces the date string from the day number:

Code: Adventure Game Studio
  1. String get_number_suffix(int date)
  2. {
  3.     String suffix;
  4.     if(date == 1 || date == 21 || date == 31)
  5.         suffix = "st.";
  6.     else if(date == 2 || date == 22)
  7.         suffix = "nd.";
  8.     else if(date == 3 || date == 23)
  9.         suffix = "rd.";
  10.     else
  11.         suffix = "th.";
  13.     return suffix;
  14. }
  16. String get_date_string(int dayNum)
  17. {
  18.     String month;
  19.     int dayOfMonth;
  21.     if(dayNum <= 31)
  22.     {
  23.         month = "March";
  24.         dayOfMonth = dayNum;
  25.     }
  26.     else if(dayNum + 31 <= 30)
  27.     {
  28.         month = "April";
  29.         dayOfMonth = dayNum - 31;
  30.     }
  31.     // If you're only going up to 50 that should do it, but you can add more conditions here otherwise
  33.     return String.Format("%s %d%s", month, dayOfMonth, get_number_suffix(dayOfMonth));    // This is the magic that combines these three values into one string
  34. }

And now you can change both day_increment() and hCalendar_Look() to use this function:

Code: Adventure Game Studio
  1. void day_increment()
  2. {
  3.     Day_counter++; // This is a more common way to write Day_counter += 1
  4.     Display("%s",get_date_string(Day_counter));
  5. }
  7. function hCalendar_Look()
  8. {
  9.     Display("It's %s", get_date_string(Day_counter));
  10. }

Edited because Khris reminded me Display() does inline string formatting.

Should be AudioChannel* audio; – but yeah.

Yes. I've rewritten this post a couple of times because it ended up getting rather lengthy. I even considered putting it on my blog instead, but here's basically what I think, shorter version.

Like you I think that certain concepts and words like Moore's law, exponential growth and neural networks are buzzwords that people in the field toss around to make people intrigued and fascinated by what it is they're doing. Certain points in the blog post I linked to are downright silly - no, a person from the 17th century wouldn't die from shock or some kind of sensory overload if transported to our time; even though lots have changed, the most fundamental activities, concepts and mechanics of our world would be quite recognisable, and will have scaled in quite expected ways - houses are bigger, vehicles faster and people more numerous. And while internet is mind boggling it's not exactly imposing in a way that shuts down your brain.

Yes, this is so nonsensical that I decided not to take it literally. For one thing, there are numerous examples throughout history of people from societies with stone-age or medieval-level technology being brought to visit "modern" cities. They don't always thrive, but I've yet to hear of anyone dying from having their mind blown by it.

However, I'm not very into computing or robotics or AI at all, really, so I've chosen to focus on something that I think has been overlooked by AI enthusiasts (where I believe they fail to think outside the box); the psychology of a super intelligent artificial entity.

The most dystopian scenarios described by AI visionaries depict super intelligent robots the way they're portrayed in movies like Terminator and The Matrix; entities driven by a sense of revenge, or greed for world dominance, or just a general aversion towards humans. Alternatively, they're regarded as potential benefactors, like kind gods who will deprive humans of any authority and destructive capacity, and let us live in peace and harmony, like sheep on an endless pasture. But all those qualities are the result of psychological processes and characteristics, not of pure reasoning.

The machines in The Matrix behave just like we're used to seeing organic species behave on Earth, but all organic species we know of are programmed by evolution to spread and populate and survive. A computer is not.

That begs the question - will pure intelligence also necessarily induce an agenda? A drive to do something? A need of something?
Ultimately, we humans do stuff because we have motives, which derive from biological needs. We have pleasure centers to satisfy, we have a strong instinct to survive, and that goes first on an individual level (protect ourselves) then on a community level (protect our family and tribe) and so on. We have a moral compass because it’s evolutionary relevant for a tribe’s survival if its members are morally competent individuals. We’re mostly sympathetic and considerate to our peers, but can turn cruel and dominant if we sense that it’s necessary for us to climb a few steps on the hierarchical ladder.

Will a computer develop a will to survive? Why? Is it logically sound to exist? Existing is only rational if it gives you pleasure, and pleasure comes from hormones. My latest MacBook Air didn’t come with hormone glands last I checked. Just kidding, I haven’t checked (I don’t know how to open the damn thing). It's not necessarily reasonable to exist - the only effect is that you're vulnerable to events that will surely kill you no matter how high your IQ; meteors, the sun's collapse, or the terminal heat death, or the big crunch, or whatever.

There's no real reason to fear that the computer, no matter how intelligent, won't still be our slaves, just like we are slaves to our instinct to survive (most of us), because it makes no sense for it to go against it.

Well... maybe.

Let's take a step back and ask why would we want "strong AI" in the first place. Well, the problem is that these expert systems that we've been getting pretty good at building, while quite impressive, reach a limit at a certain point. They work fine within certain parameters, but when they fail, they often produce answers that are way off (there are some "optical illusions for AIs" in one of the links I posted above that vividly demonstrate the problem), because they lack "common sense". And there are some levels of meaning they can't decode at all; for example, you might be able to get coherent "literal" translations, but try to detect and understand ambiguity, subtext, humor, poetry, etc. and they fall down badly. Try to get one to pass an unrestricted Turing test, and a clever tester will eventually trip them up catastrophically.

Most AI researchers believe that in order to create systems that can solve tasks such as these, we need artificial general intelligence (AGI): a generalized system with the power and flexibility of the human mind. And a few furthermore believe that achieving this requires the system to be conscious, self-aware (strong AI). (Others take the behaviorist, Turing-inspired view that we only need to worry about behavior, not whether there's any "ghost" in the machine.) Why? Well, partly because humans are conscious, and the most obvious explanation of why we're not just zombies or robots whose brains process input and produce commands for our bodies to carry out without any awareness at all, is that self-awareness is somehow a necessary component of higher-level intelligence. So the goal becomes to achieve that same spark of consciousness in a computer.

When we're discussing strong AI, then, we're talking about a conscious, self-aware mind. It's a little bit fuzzy exactly what we mean by that, but I think most would agree that it implies that it has some sort of psychology (instincts, emotions, drives), and that it can form goals and opinions independently, through internal reflection. Being a creature of "pure reasoning" seems somehow at odds with the idea of self-awareness: it's basically what computers do now, and what we're trying to transcend. Also, if we look at intelligence in animals (or in very young children), they seem to possess different forms and degrees of sentience and self-awareness, and it seems reasonable to assume that higher-order consciousness in humans rests on such simpler forms, and on more primitive, instinctual processes. So to achieve consciousness in a computer, we might want to (or have to) endow it with similar instincts. This could be done in various ways; we could try to specifically encode them into the pathways of its brain, or if we use an evolutionary algorithm to progress from simpler "brains" to more sophisticated ones they might emerge from the context of the "game world" by natural selection.

And at that point, it's hard to predict exactly what it will do, even if we know the fundamental instincts, partly because it will be the first of its kind, and partly because the enthusiasts assume it will quickly become more intelligent than us, so we won't be able to follow the progress of its thinking. (Of course, even a much simpler and more familiar mind, like a dog or a child, can be highly unpredictable, and may resist instruction or commands.) On top of that, we may not actually be able to precisely describe or fully know the instincts and motivations that drive it, depending on exactly how the breakthrough is achieved: That's already a problem with digital neural networks, that we can't really explain exactly why they behave in certain ways.

So I think the concern is reasonable, if we accept that creating a self-aware mind in a computer is possible in principle. Still, I think the Kurzweilians overestimate the link between increased processing power and increased (potential) intelligence, and between potential intelligence (as limited by brain complexity) and actual capability, underestimating the role of training, interaction, experience and absorption of information. (Keeping in mind that a strong AI is no more going to be able to suck in all the information on the Internet than I am able to learn anything just by flipping through a book on the subject.) Some of these projections about superintelligence and "intelligence explosions" sound like the film Lucy with computers.


Maybe try to keep it on-topic, eh? And I think conflating AI in general with the singularity and with transhumanists is a bit unfair; claiming that "AI is horse shit" doesn't really hold up.

General Discussion / Re: Breakup drama
« on: 18 May 2015, 07:37 »
Some of you may have witnessed a lot of weirdness in this thread, with posts coming and going and being changed multiple times. As there are a couple of points of concern we'd like to be open about, here's an official statement and explanation:

As he has described, Arj0n used to date another AGSer, and they attended Mittens 2013 and 2014 together. They broke up shortly afterwards. This AGSer and AGA are now dating, and plan to attend Mittens 2015 together. Arj0n is hurt and upset by these events, and alluded to them in a previous version of the first post above. AGA, feeling that this was none of people's business and hoping to avoid confrontation, edited the post to remove the mentions, using admin privileges to suppress the "edited" tag on the post.

The other moderators believe it was poor judgment by AGA to step in as moderator on a matter where he was so personally involved, rather than asking another moderator to handle it. We also feel that best practice for moderating requires the "edited" tag to remain, as an indication that the post has been changed from what its author wrote. That should be the policy going forward.

When Arj0n noticed the edits, he responded by posting details about the breakup as well as certain accusations, which have been privately disputed by the other parties. Only the people involved know the full story, but as this is a private matter and discussion could only turn ugly, the moderators have determined that it's not appropriate for the forums. The comments have been removed, but Arjon was invited to write a calmer explanation (the post right above). As far as the forums are concerned, this matter is closed. Thank you for your understanding.

D'oh! I actually linked to the wrong post (I didn't at first see that you'd solved the original problem you asked about, and linked to an explanation of that). Here's the post I meant:

Pages: [1] 2 3 ... 191