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

Topics - fernewelten

#1
Hi folks, I'm stumped.

(I'm on AGS 3.5.1, newest official build 3.5.1.19, on Windows 10).

I'm managing a handful of trolleys that run on tracks across a room. The trolleys are called “crate” internally and the tracks “conveyor” because I've been stupid and English isn't my mother tongue.  :)

So here's how I define my trolleys:
Code: ags
struct tyCrate
{
    Object *Object;
    DynamicSprite *DS;
};

#define CrateCount 10
tyCrate Crate[CrateCount];

function room_Load()
{
    Crate[0].Object = oCrate0;
    Crate[1].Object = oCrate1;
    …
    Crate[9].Object = oCrate9;
    for (int crate = 0; crate < CrateCount; crate++)
    {
        Crate[crate].Object.Visible = false;
        Crate[crate].DS = null;
    }
}


Whenever a trolley must enter the scene, I select an unused one out of the pool above (parameter crate), let it look like a certain sprite (parameter gr) and initialize it as follows:
Code: ags

#define Crate_DispatchX 1300
#define LowerConveyerY 540
function Crate_Assign(int crate, int gr)
{
    Crate[crate].DS = DynamicSprite.CreateFromExistingSprite(gr);
    Crate[crate].Object.Graphic = Crate[crate].DS.Graphic;
    Crate[crate].Object.Visible = true;
    
    Crate[crate].Object.StopMoving();
    Crate[crate].Object.X = Crate_DispatchX;
    Crate[crate].Object.Y = LowerConveyerY;
}


I have to do it this way because the sprite will be modified while it is "on stage". In particular, a printer will write a checkmark onto its side:

Code: ags
function Printer_PrintLabel(int crate, int gr)
{
    DynamicSprite *ds = Crate[crate].DS;
    DrawingSurface *dsu = ds.GetDrawingSurface();
    dsu.DrawImage(23, 20, gr, true);
    dsu.Release();
}


When the trolleys run off-stage, I dismantle them and return them into the pool, as follows:
Code: ags

function Crate_Destroy(int crate)
{
    Crate[crate].Object.StopMoving();
    Crate[crate].Object.Graphic = kGr_CrateEmpty;
    Crate[crate].Object.Visible = false;
    if (Crate[crate].DS != null)
    {
        Crate[crate].DS.Delete();
    }
    Crate[crate].DS = null;
}


So the dynamic sprite is duly deleted â€" this means when I call  Crate_Assign() again later on, it is extremely likely that DynamicSprite.CreateFromExistingSprite() will return this newly deleted sprite.

And there's my problem: When Crate_Assign() is called the second time around, the object shows a sprite that still has the check mark from the first time written on it. So does that mean that the dynamic sprite hasn't been set correctly? Seemingly not, because the trolley goes into the printer, and when the printer does its thing, shwoosh, suddenly the correct sprite for the trolley shows up at this point. 

I haven't done that much with dynamic sprites so far, so this might be a coding error. OTOH, I might have uncovered an Engine bug, too.

Do you have any pointers where the coding has gone awry?

Find the project with the code here. The original has become quite large; I've pared down the files as much as possible. Everything is in room 6.

To demonstrate the problem:
1. Hit F5 to compile and start the game
2. Left-click on the rightmost "cinorq" (the one above the champagne bottle).
3. Right-click on the rightmost "cinorq".
4. Observe how two different trolleys make their way across the room, ultimately disappearing in the tunnel on the left-hand side.
5. Wait 5 seconds to make sure that the trolleys have been dismantled.
6. Now do it the other way round: RIGHT-click on the rightmost "cinorq", then LEFT-click on the rightmost "cinorq".
7. Observe that the trolleys that emerge still have their printed marks on them. Also, they still look like the ones created in 2. and 3., not the other way round.
8. In the printing station, however, they suddenly switch to the correct graphics.
#2
Hi folks,

A short heads-up: AdventureJam 2022 is about to start on itch.io â€" not Gamejolt as in preceding years â€" over here: https://itch.io/jam/adventure-jam-2022 .

It seems that more than 700 participants have signed up already, although I doubt that several hundreds of entries will come about at the end to be voted on.

If you can come up with a flight-themed adventure (and, of course, if you write your adventure in AGS), you could perhaps double-dip and place it as an entry to MAGS June, too.
#3
So, I've got an AGS4 game that has the usual ANSI (ASCII) code files.
It features room 1 having the code:
Code: ags

function room_AfterFadeIn()
{
    […]
    player.Say("Vamp squawks: Say hello to Felix or Jody!");
}


The corresponding trs file has the name DE-de.trs:
Code: ags

// AGS TRANSLATION SOURCE FILE
// […]
// 
// ** Translation settings are below
// ** Leave them as "DEFAULT" to use the game settings
// The normal font to use - DEFAULT or font number
//#NormalFont=DEFAULT
// The speech font to use - DEFAULT or font number
//#SpeechFont=DEFAULT
// Text direction - DEFAULT, LEFT or RIGHT
//#TextDirection=DEFAULT
// Text encoding hint - ASCII or UTF-8
#Encoding=UTF-8
[…]
Vamp squawks: Say hello to Felix or Jody!
Vamp quäkt: Grüß Felix bzw. Jody schön!


... and is in UTF-8 without BOM, as far as I can ascertain.

When I compile the translation and run the program, it seems that the Engine:

  • does find the translation of the sentence,
  • but does not convert its UTF-8 combinations properly into multibyte characters:



So what am I missing so that UTF-8 translation files work and display umlauts correctly?
The game is here: https://www.loquimur-online.de/ags/talk/2022-04-07/Test.zip
#4
[glow=blue,2,300]Castle Escape[/glow]

Hello folks, Meet Count Bumbley.

He's a brave chap, he's affable, and ... he doesn't want to marry his love, Lady Anemone, just yet.

Lady Anemone, OTOH, has other plans. And she has the wiles and willpower to see her plans through.

Count Bumbley must escape his fate – and with your help, he will be able to!

  • Battle talkative shoes!
  • Help a poor ghost to be redeemed!
  • Solve absurd riddles!
  • Meet absurd characters!




Download the game here
There are two chapters available, for the time being in separate files:
#5
Hi folks,

Huggles has moved to Gamejolt, and he's looking for feedback on how he's doing in presenting himself.

Here's his capsule:


Here's his page (click the pic):


What do you think?
What can he do to show himself in the right light?
(And yes: He's already planning on joining the AGS Database shortly.  :-D )
#6
Hi folks,

As far as I understand, we're supposed to give credits according to the in-editor help topic, “Credits”, when publishing games, although this isn't mandatory. And the section, “Distributing your game”, has further requirements in subsection “Licensing”.

I'm writing games from time to time, and so I'd like to prepare a handy “Credits+Licenses.txt” file that has all these references in it, so that I can include it in the zip archives and reference it in-game in the Credits room.

So I was wondering whether the pointers in the documentation are even current? I suspect that this is a typical documentation part that someone has prepared at some time â€" doubtlessly with lots of diligence â€" but that tends to be forgotten in the daily chores and work and so might have become very out of date without anybody really noticing.
#7
Hi folks,

I'm in a true-colour game. I've got a drawing surface. I'd like to draw a semitransparent black rectangle onto it, transparency 70 %. How do I do it?
Code: ags

DynamicSprite *ds = DynamicSprite.Create(500, 500, true);
DrawingSurface *dsu = ds.GetDrawingSurface();
// […]
dsu.DrawingColor = Game.GetColorFromRGB(0, 0, 0);
// And at this point, I lack a possibility to set the pen transparency.
dsu.DrawRectangle(10, 10, 20, 20);
dsu.Release();
object[6].Graphic = ds.Graphic;
#8
Hi folks,

Remember Thinker?

One thing he's particularly bad at is Atmosphere (Rank #27 of 31, i.e., fourth-last place).
He wakes up in a philosophical mood in a kind of bunker, but players seemingly can't relate.
The background music doesn't seem to help any.

He seems to have kind of a forgettable characterization, too (#19).


So how do you improve on that.
#9
Hi community,

itch describes the "cover image" as follows: “[It] is used whenever itch.io wants to link to your project from another part of the site.”
They say that it can be 315x250 or larger, but in particular on screen, I've seen it as tiny as 243x192. That's not a lot of room:


Gamejolt has a similar concept called "thumbnail": “Think of [it] as [your game's] box cover if it was sold off a shelf in a store ... It should attract attention and give an impression of what the game is like … should be more than just a title floating on a blank background.”

So how do you come up with a good pic for that purpose?

Take “Flight from the robots” as an example. It's in essence a one-roomer. I've got empty playing space, a bed bunk, some technical gizmos, a cabinet and a round table. Ian, of course, and a kind of robot that is only featured in a cutscene. That's not much to work with but not so untypical for the games I seem to write. How am I supposed to arrive at anything spectacular â€" a “box cover” â€" from that? 

How do you do it?
Any ideas?
#10
Hints & Tips / Flight from the Robots
Tue 14/09/2021 12:42:27
Here's a Hints and Tips thread for “Flight from the robots”.

Let's start off with a general one: Don't try to examine things with the left mouse button. You'll make Ian interact with them instead which will usually turn out to be something different than you had in mind. (Use the right mouse button to examine things.)
#11

Hello folks,

I'd like to proudly present:
Flight from the Robots
A sci-fi Point & Click adventure.

It's the year 2154. The climate catastrophe has happened. Life on earth has become too hot, so humanity has had to move underground. The robots have become autonomous. All work for humans is exclusively provided by the robots' anonymous organization “Cinorq”. The few human rebels that exist don't stand a chance against the robot's superiority.

Chapter 1
Meet Ian, a human that is actively collaborating with the robots and helping them to increase their technological advantage.He's been promised a train ticket to the robots' HQ and a promotion. But very shortly, he's going to change his mind about the robots being on his side. And a tomato incident is going to play an important role.

Ian needs your help.

He needs to to stop the police bots from entering through his front door, and then find a different way than that door to leave the flat and escape.

All new: Chapter 2
Ian has escaped out of his flat by the breadth of a hair. All the bots are on the lookout for him, and he's standing there pantsless â€" literally.

He's cornered behind a hedge on the Recreation Deck and must outwit a gardening robot to get away.
And he still wants to catch his train to the robots' HQ â€" he's a fugitive now and can't enter it normally. so he must find another way.

Help Ian escape!
Without your determined struggle, Ian won't get out of his plight. He will need

  • your ingenuity,
  • your good eye for visual clues,
  • your perseverance,
  • and your logical thinking “out of the box” (and yes, boxes of sorts play a role in this adventure, too!).










Download the game here:


#12
Completed Game Announcements / Commando Raid
Sun 12/09/2021 00:33:37
Hello community,

after much delay, I'd like to present my game and tied winner of the  MAGS 2018/05 jam (Theme: “Rats”):



The Devious and Daring
Commando Raid
of Linkattus, The Lowly Janitor Rat,
In Order to Free
Ratzelda, the Princess of His Dreams,
And to Get Her, Too

(What? That whole string is the title of this adventure! 8-) )

It features:

  • a BASS like interface,
  • hand-drawn art in Inkscape,
  • original music, recorded from a Yamaha keyboard and edited in Audacity
  • the AGS system by Chris Jones and later contributors
  • lots of Adventuring and Frolicking :-)
  • Rats
  • and a Cat.
Oh, and bugs (probably :-[ ).


Get the game here

Have lots of fun!
#13
I'm not quite sure where to put this, so I'm going to put this here.

I started out without using any source control whatsoever. My games all had an "_Assets" folder within the main game folder that contained all the assets and their respective source files for the game.

For backups and intermediate states, I simply copied all the whole main game folder with all its files to an USB stick into a suitably named folder ("AGS/TheSpecificGame/1999-12-04a/" and such). Nowadays, sticks have so much memory that a single stick will have storage for many saves even if you blindly copy all the files. And my computer itself is set up with an automatic backup system that does regular saves, so this simple system was enough to guarantee that I'd never lose more than a few hour's work in case of a system failure. That was sufficient for the typical month-long jam.

Trouble is, by now i've written several adventures, and this simple system has rapidly come to its limits.

By now,

  • The different adventures have their own assets (of course)
  • but they also share some assets, particularly background music, sounds, fonts, cursor sprites, and character sprites.
  • Shared assets evolve at a different pace from the games that use them. They've become separate, independent entities with their own version progression.
  • The adventures and assets have been written with different AGS versions. Different versions aren't always freely exchangeable, due to their file format: If GUIs or (I think) modules have been saved with a specific AGS version, they won't be importable into an AGS that is older. If I don't want to be forced to upgrade the whole game just because I need to fix something tiny, I need to juggle with different save formats.
  • Due to space constraints, my games proper have ended up at a different place from the shared assets, on another volume even.

Simply "saving everything" won't cut it any longer, it's no longer error-proof when different shared assets in different places are involved.

Just source controlling the game would similarly not be good enough; how do I keep the shared files in sync that reside in different locations, even on a different volume?

Putting a copy of the shared assets into the individual games is ugly, too. Then if the copy of the assets is modified/improved, these modifications might get lost on the original shared asset.

So something must come; I haven't a clear idea what exactly.

What system have you come up with to keep track of all your sprites, pics, and sources?

BTW. I'm noticing that the AGS documentation on source control discusses SourceSafe (that I've never heard of) but not git. AGS doesn't detect git either although git is indeed installed on my box and integrated into Visual Studio.



#14
Hi,

I'm noticing that the similarly-titled sticky post in the "Advanced technical forum", still from CJ in person, has sadly become badly out of date by now. And I quote:

Quote
INFORMATION
Before posting, have a check of the various documentation which is available on the (404 page) and (404 page) pages. [...]

The (leads astay to the forum overview) lists known bugs and current suggestions for future AGS versions. If you think one of the suggestions would really help your game, feel free to reply to its entry and lend your support.

In addition to the one built into AGS, an (dated Ver. 3.4.3 manual) is available as well. Also, there's a (404 page).

AGS supports user-written plugins and script modules. You can find them listed (404 page), (404 page) and (leads astray to the AGS games page). Once you're comfortable with AGS, why not check them out and see if they can help you. [...]

Interesting topics including plugin and module support threads have been archived in the (non-link to non-existing forum)

#15
So the following ended up on the AGS github site:

QuoteProbably terrible place to report this, but there are no contact webmaster links on the site, registering on forums requires completing AGS programming quizzes, and I dont have a discord account.

https://www.adventuregamestudio.co.uk website has this gem:

Code: ags
<img src="/images/facebook_logo.svg" onerror="this.src='/images/facebook_logo.png'" height="29" alt="Facebook logo">


When one of >10 million people with uBlockOrigin and "Fanboy’s Annoyance" filter visits one of its rules filters:

Code: ags
/facebook_logo.


this triggers an image load error, so executes 'onerror' and ..... you get the picture, 100% CPU utilization and constantly growing ram usage until tab crashes and is reloaded.

I'm just passing the message; I haven't verified any of verified this.

If unregistered viewers can't reach or easily find the the way to reach the webmaster, then this might pose a worse problem than in the current case. For instance, suppose a hacker has found a way to turn the website into a spam spout or virus infector and those that try to report this speedily are thwarted by questionnaires.
#16
Quote from: FormosaFalanster on Tue 25/05/2021 07:17:49
It still means that, besides Unity, then AGS is the only one which was used by more than 2 games. Not trying to trumpet AGS here, just trying to get a picture of the situation. In short, AGS is dwarfed by Unity, but it's the only one else that gathered more than a couple users.

In Thinker downloads, 6-7 % were for Linux so far (converting to a proportion of 1 for every 15 downloads). All the others were for Windows. A large proportion of the Facebook viewers came from mobile Facebook (m.facebook.com). So I suspect that there might also be quite a lot of mobile users among the non-Facebook viewers, and all those mobile users might have been very interested in a mobile Thinker but were foiled. But I compiled with 3.5.1 which doesn't offer Android out-of-the-box.

Modern IT distribution being what it is (Windows retreating, Android and iOS coming), game writers might possibly prefer Unity over AGS if it is easier to provide mobile builds with Unity than with AGS.

Crimson Wizard is implementing Object turning functionality, which would let AGS do roughly the same animations easily that you could do with PowerPoint (in combination with Object resizing and the tweening module). That's great to have. I suspect that other adventure building systems have already been able to do this and we are only catching up in this respect. This might also be a reason that coders prefer Unity over AGS.

I think I heard the sentiment that AGS was “good enough” for hobbyist projects but if you want to go professional you need to switch sooner or later (I think from the developers of “Kathy Rain”). That would put AGS into a bad position because then many coders would think it wise to bypass AGS and start with an “adult” system right from the get-go.

AGS doesn't need to lose this particular competition, however: Almost everything within the AGS universe has always been free for professional use ever since Chris Jones' time. You do not automatically lock yourself into remaining a hobbyist if you start with AGS as a hobbyist. But I suspect that over the decades, some very specific issues might have come up that professionals can't do without and if AGS doesn't provide those specific things, then coders will shun all of AGS even if they only tentatively think of turning professional one day.

In any case, being the #2 is still a comfortable position. It is said that in every area with competition only the #1 and #2 survive in the long run. That would still garner AGS a place on the rostrum.
#17
Is there a bug in the paging function for the thread overviews?

Consider the board "Completed games anouncements".

The last entry of page 1 is  "GRANDMA, episode 1 'confinement 2021'". This thread was touched last on 8 May.
Spoiler

The first entry of page 2 is "Chronicle of Innsmouth: Mountains of Madness"; this thread was touched last on 5 May, 10:38 Berlin time.
Spoiler

However, there's also the Thread "Huggles goes on a trip", touched last on 5 May, 18:42 Berlin time. As far as I can see, this thread is completely missing from the overview although it should be on the board (https://www.adventuregamestudio.co.uk/forums/index.php?topic=59000.msg636634550#msg636634550). Shouldn't this thread be listed first thing on page 2?
#18
Adventure Jam 2021 is about to end. One and a half dozen games have already been registered.

So if you're wondering what would be a great way of spending all your leisure time on Pentecost, have a look here.

#19
Hints & Tips / Thinker (Adventure Jam 2021)
Fri 21/05/2021 21:49:42
Let's put hints and tips for Thinker here.

Here's one: If you absolutely can't make heads or tails of the mail sorting mini game,
Spoiler

After you have entered the sorting station, alt-tab out of your game and look into your save games folder . For Windows, thise folder typically is C:\Users\[Your account name]\Saved Games\Thinker. There's a file "MailStationSolution.bmp" that will show exactly what letter goes where. This will only work for the newest puzzle, so if you restore some old game state, you might be out of luck.
[close]
#20
Completed Game Announcements / Thinker
Fri 21/05/2021 16:26:04

Hello folks,

I can proudly present a snack-sized sci-fi adventure to you:

Thinker

Meet a robot that lacks a voice but is full of thought and follow his life as he awakes from his crate.
Help him escape his self-chosen isolation and help him struggle to stay charged!



Thinker's signature tune:




Standard BASS interface (right-click: examine things; left-click: interact with things).

Download the game here: https://gamejolt.com/games/Thinker/617947

Hints and tips thread

(Viewers beware: Playthroughs must by nature be full of spoilers! Now that that has been taken care of:)
A list of all the playthroughs that I know of



This is an entry to AdventureJam 2021.
Find the other games of this jam here
.


What do you think?
SMF spam blocked by CleanTalk