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

#121
So I'm in the testing phase, and I can probably present a game for you: “Castle Escape”.

It's become a one-roomer, so sadly, no hall yet. (Perhaps in another chapter of that story.)
Stay tuned ...

For a start, here's a screenshot:

#122
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)

#123
I've just looked into the code (the version I have is 0.91). It seems to have been converted to the "modern" object oriented calls, so I don't see why it shouldn't work.

Its main implementation idea is to keep an internal array of views, one for each inventory item, and loop through the inventory items in each game cycle.
In each loop cycle, check whether the item should be animated. If it should, replace the inventory item "Graphic" by the appropriate frame of the appropriate view, as stored in the internal array.

In addition to the inventory image, items also have a cursor image. This is not going to animate.

It might be a good idea to arrange things so that animations only run whenever the user can see them, i.e., whenever the inventory is shown ("PauseAll()", "ResumeAll()").

#124
Quote from: bx83 on Tue 27/07/2021 14:30:12
...How do I request a feature from the developers?

Here.
You'll need a Github account which is free.
#125

Filled in lots and lots of hotspot and object events.
#126
Put in the starting cutscene yesterday night.

#127
I need to fine-tune the tune tempos.
#128
Remember Larry and Randy?


They need a theme, too, and here it is!


#129
Don't make Lady Anemone cross!  :-D

Here's Vexed Lady Anemone's theme:
#130
Here's the background music to the groom's bedroom:

My keyboard is geared for dance music: swing, trance, ballroom etc.. So I didn't find it easy to make it play some likeness to chamber music. I suppose I could have done away with the rhythm and chord generator altogether and simply played the keyboard like a piano, with some baroque sheet music. If I were a competent piano player. But I'm not, I dropped out of piano lessons at age fifteen. :-[
#131
FINALLY got the turnarounds and walkcycles for the three protagonists (Lady Anemone, Count Bumbley and Lady Anemone's pair of shoes Larry and Randy).

I'll probably need to reduce scope ...
#132
Quote from: Crimson Wizard on Thu 15/07/2021 11:35:59
It looks like we may be few steps away from actually supporting managed pointers inside managed structs.
:-D :-D

#133
Engine Development / Re: Save system overhaul?
Wed 14/07/2021 18:48:35
Quote from: Crimson Wizard on Wed 14/07/2021 15:32:41
The voiced concern was that if we add that users will have wrong expectation of how it works and have more trouble with it.

So we might perhaps add another flag to our "General" section. Call it, e.g., "Allow restoring outdated save files". This flag would be False by default and make the Engine throw up as soon as it needs to restore something that hasn't been saved (the current way it works).

However, if a game coder sets it to True and compiles a game with it, then by that they promise that they won't let themselves be confused and that they'll be happy and thankful for whatever we can offer them here.  8-)

Crimson's prototype code even seems to have provided such a flag, too.




Reading to the old thread that Crimson Wizard linked to, I can only feel that his idea had much more acclaim than might be recalled now. Lots of voices saying "Let's do this!"

For me, the most elegant idea of that thread is Crimson's idea to save the game starting state in a savefile. (Use the same code to write it but call it differently from other savefiles so that users don't meddle with the file by accident.) Then, on restoring a game, use the starting state file as a "default" for all the entities that the game needs and the savefile doesn't supply.

I also like Dave Gilbert's idea of a "lock" that you can set in the Editor somewhere. If the lock is set, the Editor doesn't let the user do anything that might break saves.
#134
Engine Development / Re: Save system overhaul?
Wed 14/07/2021 15:02:39
Let's suppose we had 10 characters, configured in the Editor. At the start of a game, all the characters are at factory default (as configured in the Editor).

As far as I understand the description in the manual page:

  • When the game starts, all characters are at factory default (i.e., as configured in the Editor).
  • When savefile is saved, then all 10 characters are saved, and it is saved that we have 10 characters.
  • When savefile is loaded, then all its 10 characters are loaded, and it is loaded that we have 10 characters.

Now an 11th character is added.

  • When an old savefile is loaded, then its 10 characters are loaded, and it is loaded that we have 10 characters in all, overwriting the information in the new code that there are 11.

Why? Let's do this differently. When a savefile is loaded, only change those entities that are in there (identified by their ID), but don't change the number of entities overall. All the missing entities would be simply left at factory default, i.e., as set up in the Editor. Throw a suitable event after the restore so that the programmer can decide what to do with those entities that are missing. It would be on the programmer to find out what would be sensible to do.

This could probably be done in a way that is robust against additions to characters, guis, inventory objects, and views, at the end of the respective array. Insofar as the restore operation itself is concerned.

Code that would, e.g., store the number of characters in a variable would still break when that variable is restored, but that would be on the programmer to resolve.

This would probably go a long way towards alleviating the pain that the game can't be modified once old savefiles exist.

#135
Engine Development / Re: Save system overhaul?
Tue 13/07/2021 15:15:04
As far as I know, Visionaire has robust save files (but AFAIK, they don't have user-defined public structs). How do they do it?
#136
Quote from: Mandle on Mon 12/07/2021 23:58:09
Looks like a statue belongs on the landing of the stairs.

Good idea! I'll see what I can come up with.
#137
As an aside, beware of AGS "pointers"; they look like C pointers but aren't. As far as I know, AGS is nearer to C# in this respect than to C.

Concerning your question: If you define
Code: ags

struct SOMETHING {
...
}


... then you automatically define a type that is NON-managed, and all variables you declare with it will automatically need to be NON-managed: So you need to declare the variable as "SOMETHING my_variable;" (without asterisk).

On the other hand, if you define:
Code: ags

managed struct SOMETHING {
...
}


... then you have a type that is managed, and all variables you declare with it must be managed: So you need to declare your variables "SOMETHING *my_variable;" (with asterisk)

So the question whether you want a "pointer" variable or a non-"pointer" variable, that is something you need to already decide at type declaration time. In principle, the "*" would be superfluous because the compiler already knows whether you want the symbol after it has read the type you have declared.

Your line
Code: ags
import void ResetCrowd(Crowd *crowd); 

has a parameter that is managed. This will only work if you start the declaration with "managed struct Crowd".
#138
Concerning tweening: I'm no expert for this module, but they will probably only work with normal GUIs, not text GUIs. This is probably going to need advanced programming, so if you don't have much experience with AGS, especially if you haven't coded a game before, I'd suggest experimenting with other features first.
#139
Quote from: Flint0 on Fri 09/07/2021 10:41:45
2.Can you change the font used with the "Say" or "Display" function …

That's Game.SpeechFont and Game.NormalFont.

Code: ags

Game.NormalFont = eFontGothic;
Display("This is displayed with font eFontGothic");


For this to work properly, you need to have a suitable font loaded with that name.

The speech colour is set in cYourCharacter.SpeechColor.
Code: ags

player.SpeechColor = Game.GetColorFromRGB(213, 11, 77); 
player.Say("Look! I'm talking in a foreign colour!");


AFAIK, the colour for Display texts is somewhat complicated to set: Set up a "text GUI" (not a normal GUI) and enter its ID in General Settings / Text output / Custom text-window GUI.Give the GUI a name, let's say it's called gDisplayGUI.

If you already have a custom Display() text GUI, you're all set and can use that. Otherwise, you'll need to configure the text gui so that its edges are invisible:  In the Properties pane of the text GUI, select each TextWindowEdge in turn and set Image to 0.

You can then do:
Code: ags

gDisplayGUI.TextColor = Game.GetColorFromRGB(213, 11, 77); 
Display("This text is in foreign colour!");


(I don't usually use Display() at all in my own games so I might not be up to date with this. If someone knows an easier way to do that, I'd like to know about it. )
#140
Yes, the jam has ended, but even after two months, Thinker is still getting a sporadic trickle of some views and downloads.

People still seem to be finding and playing the jam games, every now and then.

SMF spam blocked by CleanTalk