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 - Crimson Wizard

#1861
I don't know if this matches the topic, but I've been writing a "dungeon crawler" prototype in AGS.
I did not have exact plans for it, but put some effort in making it customizable, instead of hardcoding things like perspective, types of walls and objects, etc. It is still in preliminary stage, and all the wall gfx are generated using colored triangles:
(EDIT: to clarify, this is not real 3D, it's all made out of Overlays arranged as wall tiles)



Quick list of what it supports at this point:
- Configurable first person view (tells where the walls should be located on screen, etc);
- Each cell part (floors, ceiling, walls) may have a switchable or animated "texture";
- Triggers and simple list of actions (currently used only to make "teleports");
- For active objects and characters it uses state machine scripts inspired by classic Doom engine's actor scripts.

Spoiler
Code: ags
// SYNTAX:
//
//     STATE STATENAME
//         LOOP L F,F,F... [DELAY [ACTION [CHANCE [ARGS]]]]
//         ACTION [CHANCE [ARGS]]
//         GOTO CHANCE STATENAME
//         STOP

Example:
Code: ags
		"STATE Walk					\n"
		"    LOOP 0 0,1,2, 4		\n"
		"    LOOP 0 3 4 A_Step 1	\n"
		"    LOOP 0 4,5,6 4			\n"
		"    GOTO 1 Walk			\n"
[close]

Few older videos were posted on Discord a while ago, but keep in mind these had bad perspective settings:
https://cdn.discordapp.com/attachments/221048119637311489/1138681750109835355/2023-08-09_06-52-48.mp4
https://cdn.discordapp.com/attachments/221048119637311489/1139451793915527168/2023-08-11_09-53-10.mp4
https://cdn.discordapp.com/attachments/221048119637311489/1140479946364571748/2023-08-14_05-59-13.mp4

Game download link:
https://www.dropbox.com/s/kra2jx9ocspk086/crawler_test.zip?dl=0
Controls:
- arrows to move and turn,
- Z,X to strafe

Game project:
https://github.com/ivan-mogilko/ags-crawlproto
It's opensource under MIT license, although I would not exactly recommend using this code blindly for any purpose, as it's may be overcomplicated in parts. As mentioned, i had an idea to make everything configurable.
I'm writing this in AGS 4, primarily because of a newer script compiler, so you'll have to download AGS 4 Alpha for opening the project.

I'm posting this also because I know myself as a person who rarely finishes any side projects, so if not me, then maybe someone else could find this useful, or at least curious.
#1862
Quote from: Danvzare on Mon 30/10/2023 16:24:54It'd be nice if you could just save and load the text parser words to and from a text file.
But unfortunately you can't.

It should be possible write a tool which loads a text file and modifies game xml based on this, for instance. That's the most primitive way of achieving this.
There are numerous xml parsing libraries, probably available for all popular programming languages.

On the other hand, writing a plugin for the editor may be a viable solution. Afaik plugins may add menu commands, and access game data. Hence they may be a good choice to implement import/export formats.

Quote from: Danvzare on Mon 30/10/2023 16:24:54Is it possible that text parsers aren't popular in AGS, because it's difficult to use?

How many discussions are there about improving a text parser, around AGS forums? From my memory in all this time (~10 years) there have been only 1 request concerning the parser in our issue tracker on github, something regarding getting the result of last parsing iirc.
A group of "unofficial" translators have contacted me once (several years ago), asking to make a custom engine that would support replacing parser's dictionary with translated words. That's how I learnt that parser's dictionary is not translated. But I do not remember any game authors asking for the same thing.

If one would make statistics of number of users who would like to use a text parser but cannot because of its complexity, that will show this feature's demand.

Then somebody could make a list of things that needs to be improved, and even better make a plan on how they could be improved, that would be something to start a work with. This may be a complete feature overhaul, as well as improvements for existing one.

Quote from: Danvzare on Mon 30/10/2023 16:24:54A text parser template doesn't even come with the engine, and the template you can find, could use some major refinement in my opinion

If one will make a good template with a text parser, and there will be a demand for it, we may include it into AGS distribution.
#1863
..or if someone will write a tool or a editor plugin that would work with the same data, but in a more convenient and fast way in terms of UI.

I guess it would be possible to improve the workflow in the editor itself, but frankly, text parsers are not very much popular nowadays, so this feature has not been updated in AGS for many years.
#1864
Beginners' Technical Questions / Re: Padlocked
Sat 28/10/2023 04:29:02
Quote from: jwalt on Sat 28/10/2023 04:25:58That was quick, thanks. For some reason it still won't open the properties for the objects. Did a quick check, and it looks like the Sierra template works as expected. I'd only put three objects in the Bass room, but I've swapped out the image for one of them several times now. Guess I'll use Sierra style? Looks like I've buggered up Bass, somehow.

Could you send the non-working project to me? I don't remember hearing of this happening before.
#1865
The one named "SDL2 software renderer" is the... software renderer, formerly known as "DirectDraw5". It's the slowest from all, but may be used in case others failed, as SDL2 will try to create an available output (which may be direct3d, opengl, and few others).

But I cannot answer the rest, which one of Direct3D or OpenGL to choose from. In the past Direct3D seemed to work better on Windows, but this is not necessarily the case after Win10, as D3D9 is a legacy driver and is supported only through some kind of an emulation.

We definitely should add a contemporary DirectX renderer (11 or 12).
#1866
Beginners' Technical Questions / Re: Padlocked
Sat 28/10/2023 03:56:52
Quote from: jwalt on Sat 28/10/2023 03:52:44Using the Bass template. I'm also seeing some kind of odd padlock mouse cursor, from time to time. Have I accidentally locked myself out?

The Room Editor now has ability to hide and lock particular objects and whole layers. Bring up "objects" dropdown list from the navigation bar on top, and check the "lock" button.

See the screenshots in this article for the reference:
https://adventuregamestudio.github.io/ags-manual/EditorRoom.html
#1867
Hello.
Have you perhaps updated the game to a newer version recently?

AGS has a known problem that when the game changes, the saves may stop working. That's because they work as a primitive state-saves.
Although this happens not with any change, but many cause this effect. Number of frames in a view is one of those.

It may be worth to mention this to the game's author in his/her game's forum thread:
https://www.adventuregamestudio.co.uk/forums/completed-game-announcements/abscission-detectivehorror-available-now-on-steam-mature-content/

This is mostly interesting for game developers, but the thorough technical information on this topic may be found here:
https://adventuregamestudio.github.io/ags-manual/GameSavesCompatibility.html

UPD: seeing that this is a Steam game; the case of a Steam version may be specifically annoying, as it may have automatic game updates and no way to choose an older version of the game. I may only recommend to disable automatic updates for all AGS games just in case, and don't update without a real need.
#1868
Quote from: Torchiest on Fri 27/10/2023 15:48:13Just to follow up, this is what I was referring to in the tutorial. https://adventuregamestudio.github.io/ags-manual/acintro8.html

"This is not the same type of script that we've used for our Events like picking up the key. It's a much simpler dialog-only scripting language."

Unfortunately some parts of the manual are outdated... it's not being updated as often as it should.
I will mark that this needs an update, perhaps pointing out that you may add regular script commands in a dialog too.
#1869
Hello.
In this case you do not have to use run-script, but put these commands directly in the dialog script, indenting by at least 1 space:

Code: ags
// Dialog script file
@S  // Dialog startup entry point
EGO: My keys were in the door!
  Display("You grab the keys, happy to have them.");
stop

This is explained in the manual:
https://adventuregamestudio.github.io/ags-manual/DialogScript.html#using-regular-scripting-commands-in-dialogs


In regards to order of actions, Dialog.Start does not start dialog immediately, but schedules it until the current script event ends ("hDoor_Interact" in your case). Dialog is run afterwards.
#1870
Quote from: Reave on Thu 26/10/2023 20:24:58I would like to make a game with this template.

I have two doubts: it's been a long time since the first message, is it necessary to install the proskitos template or the one that comes with the game is already ok?

Erm, this is an ancient thread, and frankly I'd suggest that it should be locked and unpinned, and a new sticky thread made if necessary with up-to-date info.

The newest module version that comes with AGS is called "Tumbleweed Verbs" (a parody on "Thimbleweed Park" game) and its thread may be found here:
https://www.adventuregamestudio.co.uk/forums/modules-plugins-tools/template-tumbleweed-verbs-1-4/
#1871
Quote from: Radiant on Tue 24/10/2023 21:07:13I confirm that these work, and as far as my issue reports are concerned, this new patch can be released. Thank you for your help!

I guess i'll wait until next week just in case something else comes up.
#1872
There's also a small chance that if 3.6.1 has some performance improvements then the game runs somewhat faster and video syncs better.

But to be fair the video playback in AGS lacks proper sync mechanism. I started writing a simple one in the past, but never completed, it was in the midst of various changes and refactor in 3.6.0.
Would be nice to have it implemented anyway.
#1873
3.6.1 did not have any improvements to videos, and 3.99 was tested which is on par with 3.6.1 in this.
#1874
Quote from: Khris on Tue 24/10/2023 10:30:06I created a test game with 3.5.1 and can confirm that the video track runs faster than the sound track. The video finishes about 5 seconds early, the screen simply stays black while the audio track plays to the end.

The same thing happens in the latest 3.6.0 build and 3.99. In VLC, the video is in sync.

Given this occurs in every AGS version, this also may be a mistake or limitation either of the OGG Theora library which decodes this, or APEG library (intermediate between Theora and AGS).

I'd like to check the video properties and see what may be the difference between this and other ogvs that work.
#1875
For the long term I'd rather consider replacing this function with explicit Debug struct that has various tools in it, than keep shoving in various commands with different logic.
#1876
Quote from: Vincent on Wed 25/10/2023 15:43:33You mean it can be done by editing the engine? I think that might could be useful, so maybe if the value is true then it means you teleported

Yes, I think i'd rather suggest to add a return value indicating Teleport window result, rather than a new variable to game struct. The reasons for this are:
* The "Teleport" window is not a part of the script API directly, it's hidden in the generic Debug command, so it's better to not add anything related to it in the global structs.
* This variable would have a too narrow use-case, it will be useless if a developer decided to make their own debugging controls, or even a random ChangeRoom call for testing.

So handling this situation will be as suggested above, except you do:
Code: ags
    // Ctrl-X will let the player teleport to any room
    teleporting = Debug(3, 0);

Quote from: eri0o on Wed 25/10/2023 15:34:33Maybe return room number or something that means cancel?

Yes, the return value could be a room number, or -1 for cancel, for instance.
#1877
It should not be at all difficult to make a custom GUI for teleporting, and I've seen many devs actually do that in their game. Besides it's often important not to teleport to a particular room but to a particular story stage, which AGS cannot do on its own of course, so you will have to do a custom gui again.

But speaking directly of the proposed feature, what is the use case? Or, which difference do you want to handle with this?

If you want to know that player appeared in the room not following the story, but "jumping over", then you could rather use your own "story"-related global variables to find that out. You may also check player's position in the room to find out that it's wrong (in case you must fix it).
EDIT: there's also player.PreviousRoom, which may be used in conjunction with the story vars.


EDIT 2: speaking of the teleport window result, it's possible to make the Debug function return a true or false value (1 or 0) depending on the player's choice.
(On a side note, this Debug function is ugly as hell)
#1878
Updated to Beta 11
(Please use download links in the first post)

Changes in this update:

Editor:
- Added "Export Global Messages to script" menu command. This command is meant for upgraded pre-3.2 game projects, and will generate a script with a String array, moving global messages texts there.
- Made Editor be somewhat more tolerate to missing XML nodes in Game.agf, in many cases it will still let open a game.
- When upgrading older game projects, Editor will insert a call to SetRestartPoint() in the end of the 'game_start' function in GlobalScript.asc. This is done to complement removal of an automatic startup SetRestartPoint() call in the engine. This inserted command is safe to remove.
- When upgrading pre-3.2 rooms with disabled SaveLoadEnabled property the Editor will reset this property and insert a comment with a warning into the corresponding room's script. This is done because this property is deprecated as is no longer accessible.
- Fixed Project Explorer's folders collapsing after certain user actions, such as dragging items or renaming things.
- Fixed Script editor not marking "autoptr" and "builtin" as keywords.
- Fixed Script editor not applying color theme to character literals.

Scripting:
- Support "#else" preprocessor directive.

Script API:
- Added support for a text formatting to a number of functions: DisplayAtY(), Character.SayAt(), Character.SayBackground(), DrawingSurface.DrawStringWrapped().

Engine:
- Removed an automatic SetRestartPoint() call at startup. This is done in case user does not want to use default "restart" save slot, or has a custom save system.
- When starting up, engine will now precache only first 4 or 8 loops of the starting player character's View. This is done to avoid filling sprite cache with too much sprites at once in case when the player's View contains lots of additional animations.
- Fixed engine failing to startup sometimes if controller device subsystem failed to init (it should not init at all in this version, as we do not support joysticks yet).
- Fixed characters occasionally "teleporting" when ordered to move (regression since Beta 10)



NOTE: In regards to the SetRestartPoint() change, I have to post this clarification.
SetRestartPoint() and RestartGame() are still working as before. The change refers to the automatic restart point set when the game starts. This was disabled in the engine, in favor of letting users set it themselves if and where they prefer. Some games may need this, others not, some games use custom saves and it would not be fair to generate an unnecessary file on startup (and sometimes this file may be quite big, as it also depends on amount of script data).

As an attempt to make this transition easier, upon loading an older project the Editor will insert a SetRestartPoint() call into game_start() function in the GlobalScript. This call is safe to remove, or move elsewhere.
#1879
There's a bug introduced in the latest Beta (10) where a character who is ordered to move several times in a row would "teleport" to a random location in he room.

I was going to release a new update soon, but got distracted. So until then, here's a temporary build that has it fixed:
https://cirrus-ci.com/task/6707220583284736
#1880
Multiple games used ogv, there may be something specific about this particular ogv, or maybe something got broken in a particular version of the engine.

Quote.avi files work just fine in AGS, but I'd like to know why .ogv ones don't.

Please tell which version of AGS do you use, because latest version does not support avi.
SMF spam blocked by CleanTalk