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

#361
Critics' Lounge / Re: Platformer
Sat 10/08/2024 19:36:35
Looking good @Vincent ! You can play with the camera for zooms if the flying thing is meant to be a partner, like hacking some algorithm that tries to keep both at the screen by zooming out and in the camera. I like you are already using juiceness with screenshake. Maybe getting hit shakes q bit too?

I think with tween you can flash tint for getting hit too - or blinking the transparency if going totally old-school. Maybe getting some bump back too.

Great work!

Overlays can

#362
It all depends how are you designing it. I really like the first Tenchu

https://m.youtube.com/watch?v=8g0pWUmwNhY

Here you can see in the bottom left the stealth indicator has a ? (and blue) if you are undetected but close to the enemy, and there is a circle that grows to indicate some intensity - how close the enemy is. Once you are somewhat detected it turns red with a !?.

In Tenchu because of the 3D camera and geometry the stealth indicator also serves a gameplay use - it helps you detect an enemy before the enemy finds you.

Walking fast or slow changes how easily and enemy can spot you but it won't impact in the indicator, the indicator is only for helping you to visualize two things

  • State the closer enemy is: unaware, aware, looking around
  • Distance from the enemy

So you can make the first one be an enum, and the second one can be an int.

Then to make it a visual you can use either overlays or a GUI, say using two buttons, one will show state and the other will show intensity.

The state is pretty easy, just change the NormalGraphic property depending on the state.

The intensity then can be just something that gets a size set, you can use an overlay and change it's width and height or use a dynamic sprite to adjust the drawing and put the graphic as the NormalGraphic of that button.

Overall I would say it depends what you want to show to the player, what is necessary to indicate, the actual gameplay of the specific stealth mechanics you want to implement.
#363
Engine Development / Re: AGS engine Web port
Thu 08/08/2024 23:02:27
That would work but there is no need to copy AGS.js AGS.wasm and whatever index.html is done, just fix the src URLs to point to the right places :)
#364
Engine Development / Re: AGS engine Web port
Thu 08/08/2024 03:48:49
So, AGS has a Data dir, perhaps you can take the files from there and use your own ags.js, ags.wasm and your own html file.

The magic in the html file is pretty small, if you delete the my_game_files.js you will see the default html will instead look like something that waits the user "upload" their game files. This would trigger the code path here:

https://github.com/adventuregamestudio/ags/blob/0e7d10da6f6ad72626ac3178ae42b254b35de151/Emscripten/launcher_index.html#L539

Overall you can see I just look for any exe file that isn't the winsetup.exe or a .AGS file and try to run the ags engine passing that file specifically as the target.

The only other issue it has to solve is to create the "save dir" which in the browser is kept sync with the URL. If the URL changes the browser local storage will be different.

Itch runs the html in an iframe to prevent it "escaping" to the other things in the website.

Quote from: AGA on Wed 07/08/2024 22:01:39That is, if I use the editor to compile for Web, does it need the included versions of ags.js, ags.was and index.html, or can I always keep the most recent versions of those files to use against games that may have been bundled with different versions?

For ags3 yes that will always work, the latest ags3 will be able to run any previous ags3 that came before, it's binary compatible in a way - minus plugins because they are native language so they are out of our control.

For ags4, that is still in the alpha stage with changes happening but in principle ags4 is incompatible with ags3, so while ags4 may eventually be compatible with ags4 it's not yet and I don't know if it will but it definitely isn't going to be compatible with ags3. But I imagine one could have their own major ags4 versions pre-stored and then just run them instead.
#365
Engine Development / Re: AGS engine Web port
Wed 07/08/2024 09:33:22
It depends, you own the host for all games? Then the "unzipping" may be done by the protocol on request, like you serve them gzipped and they get ungzipped at transport.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding

Going through this route nothing much special has to be done. See for example how itch handles this here  https://itch.io/docs/creators/html5.amp#compression.

Now if you don't own the host of the games then I don't think it's doable very easy - people will give URL address to places where you don't get direct access to files (think like itch or gamejolt where the URL of the actual files isn't the url of the "game page"), plus not sure how to get around cors. Additionally I think in this case you can't just use protocols and would need to have something like zip reimplemented in JS so these files could be loaded.

Being the host vs depending of other hosts will entail in very different approaches I think because of CORS. Workaround CORS in JS only will mean we can "never" go multithread in the web (because the headers that one needs to serve to enable the required things restrict CORS a lot). Other approach is to download it in the backend (through php magic or something else), but then you have foreign files going in your server...

Other approach is to be a file host but restrict total size - say 25MB max, wouldn't work for a full featured game but perhaps is enough for MAGS games.

Important reminder is ags3 games have backwards compatibility as far back as around 2.5something, so you will be alright having just the latest 3.X release web port and using it to run all the games from 3.X.
#366
Engine Development / Re: AGS engine Web port
Wed 07/08/2024 01:09:10
@AGA are you asking about it to integrate some ags player in some website? :p (like, for playing old games)
#367
Engine Development / Re: AGS engine Web port
Tue 06/08/2024 21:20:34
There isn't an easy way to dynamically load a wasm code in a way that would integrate with it (perhaps we could add support for pure JS plugins at some point).

Because the plugins are required to be statically built, if you are using one that isn't in the ags upstream repository, you need to fork the engine and build it with your added plugin.

I never heard about the plugin you mentioned and don't have it's source so I can't upstream it either. Here: https://github.com/adventuregamestudio/ags/tree/master/Plugins
#368
@Perpetuall you can use the latest version of AGS for 8-bit color games, it will work the same. The only restrictions for 8-bit color games in AGS are the following

- Allegro remaining internals that are still in the engine actually uses a 63 color palette, so that is the actual maximum number of colors (this has been lifted to all 255 colors in AGS 4).

- Palette shifting requires the graphical driver be set for Software. It's possible to one day implement this in the hardware accelerated ones using shaders or something, but it's not as trivial once you actually try your hand at the entirety of the details of AGS. In the end someone has to actually sit and write, test and provide such feature integrated with everything else.

There's some other details but I don't remember everything well right now...
#369
Just a minor trick I use for hotspot as objects , I create a few squares and rectangles in more or less standard sizes, as rectangles that I draw in black with the opacity at 1% in the drawing program, so they are practically invisible in AGS or I draw them in any color and then script them to have 99 in transparency, and then position the objects where I want in the room Editor. This allows the full rectangle to be picked even in pixel perfect mode.

I do this because when there is an object in the background that should be clickable to avoid readjusting hotspots manually later. I noticed through trial and error that on touch screen, specially in an average smartphone, a game with 320x180 resolution, needs at minimum 20x20 square or something like a 22x18 or 18x22 to be able to be reasonably clicked with the finger - for direct touch but also it allows a less precise mouse usage on indirect mode too that feels more comfortable. Using this trick of object as hotspot I can easily mass adjust the size of "background object hotspots" in my games.
#370
I had mailed him when I posted and he mailed me back with "Thanks for notifying me, we'll follow up with the account owner.", so hopefully he will get in touch with you.
#371
@Honza try reaching out directly to Leafo (https://leafo.itch.io/) or some other itch dev to see if it works faster.
#372
@Honza have you reported somewhere to itch Io support?
#373
Well, object Z sort (named baseline) will by default use the Y position of it. You really don't want that, you should instead use a manual baseline setting in the object so it has a predictable Z sort.
#374
@Monsieur OUXX , since the latest release of ags4, the int format parameter has now been replaced by a proper enum and it's actually working now.
#375
New 0.6.1 version released, should fix last listbox item not being available, it was reported here by @edmundito .
#377
Uhm, there are a few other small additions in ags4 that aren't listed because they were added with intention of being in the at some point upcoming 3.6.2 but they are also in ags4 simply because ags4 gets all improvements.  8-) 
#378
I don't understand, just create a script function to deal this in a new script and call from global script.
#379
Accessing the link I get a message that the file has been deleted.
#380
String.Split (and join and trim) are already in ags4. The string things were  sped up in ags3 since 3.6.1 - I remember indexing of chars got a 12x speed, I don't remember the rest.

I think if one is using dictionaries they can get away without sorting because dictionaries can be sorted.

I don't know about the pixel stuff, the pixel stuff is more complicated, the approach we tried with direct memory access didn't do significant improvements - it was like 30% faster but this was still slow so we didn't go that road. Here the test with direct pixel array manipulation (https://github.com/adventuregamestudio/ags/issues/1997#issuecomment-1537151745), this is direct manipulation of memory, but somehow was still slow.
SMF spam blocked by CleanTalk