Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Foxy Of Jungle

396
Posts
11
Topics
761
Followers
63
Following
A member registered Jul 01, 2018 · View creator page →

Creator of

Recent community posts

Nice! Thanks for the tip :D

Hello!

I think in this case you could use shadow.Destroy() when deleting the chunk, and shadow.Apply() to re-add the shadow to the renderer.

Regarding preventing light from passing through walls, see: Light leaks through the wall (even with shadows)

1 - Yes, this is done with the .GetLightsCollisionAt() function. It returns the pixel color at the specified position, and with that, you can use color_get_value() to obtain the brightness of the color and thus create gameplay mechanics.

2 - Lights are objects, so you can do this without relying on Crystal; Crystal only provides the function of detecting the color of the light at that position.

3 - Yes, but you would have to create a shader that darkens the object's sprite according to the light's position. Since the lighting system is 2D, and the sprites are simple quads with two ultra-thin triangles, that's why there's such a drastic change when altering the light's depth.

4 - Yes, see: How to have any layer or graphic unlit (without being affected by lights)

I'm more than happy to hear that! My focus is on ensuring it remains simple to implement while still being powerful. Thank you! :D

Oh wow! that went unnoticed xD Thanks for letting me know!

It will be available in the next update. As a temporary fix, just add this to the "__ppf_Macros" script:

#macro PP_BLUR_GAUSSIAN_AMOUNT "amount"

Thanks ^^

(2 edits)

Wow! I'm so glad to read that, it's really cool to know! I tried to make PPFX as simple to implement as possible, and I'm happy to know that I achieved my goal ^^ Thanks a lot, Jason!

(1 edit)

I appreciate the support, and I truly understand the request.

Unfortunately, there is no method to distribute updates to GameMaker Marketplace buyers anymore.

When possible, I’ve already shared the last Marketplace-compatible version individually as a courtesy, but this cannot be offered as an ongoing or official update channel.

itch.io is a separate marketplace with its own licensing and delivery system, so updates here cannot replace purchases made on the GameMaker Marketplace. The viable option at the moment is to get it from Itch.io to get the latest updates.

I genuinely appreciate everyone who supported the project through the Marketplace, but at this point there is no reliable way to provide continued updates through that platform.

(6 edits)

You had requested the latest version of the Marketplace, and I sent it to you via Discord (03/12/2025). It's not something I usually do, as I've been scammed before for sending the source code outside of the store.


Purchases made on the GameMaker Marketplace remain exclusively linked to that platform.

Although the store still exists, authors are no longer allowed to upload updates there, so it is technically impossible to distribute new files to existing buyers.

Free updates exist as long as it is possible to update, as long as I am alive and as long as the store exists.

Since the GameMaker Marketplace platform disabled updates for creators, those updates can no longer be delivered through that store. The license agreement also specifies that updates are provided when possible (6.1, 7.1).

Itch.io is a separate marketplace with its own licenses and terms, so releases published here do not automatically replace purchases made on another platform.

I hope you understand and I hope this clarifies the situation.

(1 edit)

Jon! I also love your videos and the things you do! I'm flattered by this comment, thank you ^^ The next Rezol update will make it even better

Evanski! Thanks for the feedback, it comforts me to know you like PPFX! This motivates me to continue working on it and delivering quality <3

(1 edit)

Hello Meister! It's truly an honor to have the creator of Palpus X: Annihilation as a customer :D

Is this negative effect probably happening because of the normalized blend mode? I recommend using the "multiply" mode with renderer.SetLightsBlendmode(0). You can also try using "Multiply LDR" if you're using HDR, to create a "clamp" on the pixels.

Another thing that might be happening is that the overall light intensity is too high. You can reduce it to 1 using the renderer.SetLightsCompensation(1) function. By default it is currently 3.

And you could also disable the HDR of lights by using .SetLightsHDREnable(false)

Hello!

I just fixed the Discord link, thanks for letting me know! :D

In the .yyz project there's an example specifically about Displacemaps, could you take a look? See: "objPPFX_09_Displacemaps"

Basically, you will use the "PPFX_NormalmapRenderer". This constructor aims to draw normal map objects on its internal surface, and for this, it uses the default parent object "__ppf_objNormalEffect" (localized inside PPFX's folder), which has raindrops as its child, which you can create to generate the drops on the screen.

I hope this helps :)

Hehe thank you! 🎄😁

So, it seems this problem still exists? My GIFs aren't loading D:

Oh! that makes sense :D Since when this is enabled, GameMaker automatically draws the application_surface over the Crystal drawing, which makes it seem like it didn't work. I'm glad it worked now!

Hello theyakuzi!

Sorry to hear, which part exactly confused you? Did you follow this guide specifically? Could you tell me what have you tried to do so far so I can give you some direction?

The .yyz project actually has more code because I needed to demonstrate how Crystal works in different situations. I know it might seem intimidating at first, but the process is simple. Sometimes it can be something silly that caused something not to work. I also have a Discord server for a more extensive discussion.

Check the console log for any error messages, both from Managix and GameMaker. Also note that the progress value is per resource, so even if a texture group has multiple sprites, it counts as 1. Could it also be that the progress is reverting to 0 before it even reaches 1?

Haha nice!

Hello! Is the texture group configured as "dynamic"? (Probably shouldn't work properly if it's not)

Hello! Thanks!

You configure this in the Screen Manager configs struct, using the function .SetMSAALevel(REZ_RENDER_MSAA.X8) 

Thank you, Johto! <3

Everyone knows that dealing with resolution to keep your game looking flawless on all screens is difficult. That's why I developed a library capable of solving all screen resolution problems forever.

With it, just one setup is needed and your game will look amazing on any device with a screen, including consoles and mobile devices!

Rezol, in short, handles everything related to how your game displays on your screen!

Pixel-perfect Cameras, Scaling of GUI, Split-screen, Surfaces, Drawing, Window, Mouse functions, Dynamic render resolution, Frame Skip, HDR and More!

This is the REAL definitive and most complete solution available for GameMaker. Whether you are a newbie or an advanced user, this is for you.

It is useful for ALL game genres: Platformer, RPG/Roguelike, Match 3, Isometric, Racing, TD, Puzzle, Shooter, Visual Novel, Co-op, Point and Click (Farm, Idle), Horror, etc.

There is rich documentation and a Discord server for technical assistance.

Get REZOL kindly now on Itch.io! ^^

https://foxyofjungle.itch.io/rezol

:D

Hi! It works in GameMaker only

Hi, oh yes, you need to enable depth buffer so you can depth sort things

(1 edit)

Hello! Thanks ^^

Did you follow the Quick Start guide? Which part exactly are you having trouble getting to work? Take a look at Troubleshooting.

Edit: Oh, I'm glad it works now ^^ thanks!

This comment is also amazing! Thank you for your kindness and I'm happy that you're enjoying it! :D

Thank you! I wish the same for you too :D

Thanks for your interest, Godot is a great engine, but I only use GameMaker ^^', maybe you could try GameMaker? 👀

Hello!

Yes, if you use .LayerApply(), this functionality only works with orthographic cameras so you can actually draw on the layer. It's worth noting that if you're drawing in full screen, this doesn't make a difference (it works with both perspective and orthographic cameras - 2D and 3D, as it only depends on the input surface).

You're right, this is a limitation compared to forward rendering, where shaders are applied to each object individually (you just need to skip the lighting calculation to get something unlit). Since Crystal uses deferred rendering, everything naturally receives lighting, so to get something "unlit", you need to light it. The other alternative is to use the Combine pass, but it can only be drawn after everything.

Hello, thanks!

No, sorry. This is a paid product, and making it open-source means making it freely available to everyone. I hope you understand :)

You want this for specific sprite or all the screen? You can try the Color Curves effect (In the hue section, you can change the selected color in the curve)

Hello! Yes, there are several Color Grading effects that can do this, such as: Colorize, Color Tint, Color Mixer, Hue Shift, etc. What exactly do you want to do and what difficulty are you having?

Hello!

This way should work: Mozart Junior (@foxyofjungle)

Hello! Thank you for the kind words ^^

Yes, this is indeed a common problem, and depending on the effect, such as smoke, it might be better to draw the particle system manually at the desired depth and use a Direct Light with litType = LIT_EQUAL and intensity 1. This way, the light will illuminate only the depth where the particle is (you need to modify the light depth all the time in your case). And in fact, the Combine pass doesn't support depth because this is drawn after the lighting system is drawn (but on the same final surface).

(2 edits)

Hi Pycho! Don't worry.

You'll still be using texture groups. The point of Managix is to combine all the confusing and manual work of GameMaker functions into an intuitive API, giving you greater control over when to load, unload, or even keep them in memory.

Each Managix_Resource can be a texture group containing sprites. And a special thing about Managix is that you can load sprites without freezing the game, and there's even support for loading things on-demand - that is, while you are already in the level, without freezing the game.

Without Managix, it's much harder to know when texture groups have finished loading - also harder to know the loading progress, and you still have to deal with GM's async functions which are cumbersome to handle manually.

Amazing work! Congrats!

I'm glad you like it! It's a great use in your game ^^

Hello!

Thank you for being kind! ^^ Crystal only works with orthographic projection cameras.