Asset - Project 🦊 Foxey Platform Engine (Complete 2D Platformer Project) ⭕ v1.3.1

FoxyOfJungle

Kazan Games


VERSION 1.2.1 IS NOW AVAILABLE!
(Itch.io and YYG Marketplace)


It is with great pleasure that I come to announce the version 1.2.1 of Foxey Platform Engine! Check out the demo to get up close:

Compiled YYC .EXE and .APK Demo available on Itch.io.

Although small, this is a very important update! Fixed crash issues and added support for gamepads.


>> Release Notes:
[ADDED] Gamepad support
[ADDED] Gamepad connection status message
[ADDED] Gamepad sprite
[ADDED] Shuriken now deals damage to enemies
[ADDED] Small camera shake when enemies die

[FIXED] The game crashes under certain collision conditions through the infinite loop
[FIXED] All object collisions
[FIXED] The obj_game_controller gives an error if not created first
[FIXED] The obj_sign now add the messages normally
[FIXED] Dialog box sometimes don't open
[FIXED] Wall jump sound effect was in the incorrect audio group
[FIXED] Now it's the explosion that shakes the camera, not the bomb
[FIXED] Small bug fixes

[CHANGED] Input is now and individual object
[CHANGED] The water now has individual shader uniforms
 
Last edited:
Ok, thank you.

Well, I managed to get the persistent "obj_game_controller" working (as that's just my style of coding).

But, there's also another error that I keep encountering in GMS 2.3. When I run the asset in VM it works just fine but, when I try to run it in YYC, it shows the "FAILED: Run Program Complete" error.

I know I'm currently using the Beta version, but I get this error in the released version of GMS 2.3 as well. But this might be what the error is, as I don't know what file is not found: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Unable to find the specified file

Here's the long list from the compiler so you can see what it's showing:

"cmd" /c subst Z: "C:\Users\kyler\AppData\Roaming\GameMakerStudio2-Beta\Cache\GMS2CACHE"

elapsed time 00:00:00.0450613s for command "cmd" /c subst Z: "C:\Users\kyler\AppData\Roaming\GameMakerStudio2-Beta\Cache\GMS2CACHE" started at 11/18/2020 11:56:12
"cmd" /c subst Y: "C:\Users\kyler\AppData\Local\GameMakerStudio2-Beta\GMS2TEMP"

elapsed time 00:00:00.0846108s for command "cmd" /c subst Y: "C:\Users\kyler\AppData\Local\GameMakerStudio2-Beta\GMS2TEMP" started at 11/18/2020 11:56:12
"cmd" /c subst X: "C:\ProgramData\GameMakerStudio2-Beta\Cache\runtimes\runtime-23.1.1.228"

elapsed time 00:00:00.1200625s for command "cmd" /c subst X: "C:\ProgramData\GameMakerStudio2-Beta\Cache\runtimes\runtime-23.1.1.228" started at 11/18/2020 11:56:12
"C:\ProgramData/GameMakerStudio2-Beta/Cache/runtimes\runtime-23.1.1.228/bin/Igor.exe" -j=8 -options="C:\Users\kyler\AppData\Local\GameMakerStudio2-Beta\GMS2TEMP\build.bff" -v -- Windows Run

Loaded Macros from C:\Users\kyler\AppData\Roaming\GameMakerStudio2-Beta\Cache\GMS2CACHE\FoxeyPlatf_DABBD7EA_95956248\macros.json
Options: X:/bin\platform_setting_defaults.json
Options: C:\Users\kyler\AppData\Roaming/GameMakerStudio2-Beta\kyle_612126\local_settings.json
Options: C:\Users\kyler\AppData\Roaming\GameMakerStudio2-Beta\Cache\GMS2CACHE\FoxeyPlatf_DABBD7EA_95956248\targetoptions.json
Setting up the Asset compiler
X://bin/GMAssetCompiler.exe /c /mv=1 /zpex /iv=0 /rv=0 /bv=0 /j=8 /gn="FoxeyPlatformv12GMS 23 Project" /td="Y:/" /cd="Z:/FoxeyPlatf_DABBD7EA_95956248" /zpuf="C:\Users\kyler\AppData\Roaming/GameMakerStudio2-Beta\kyle_612126" /m=llvm-win /tgt=64 /llvmSource="X://yyc/" /nodnd /cfg="Default" /o="Y:/FoxeyPlatformv12GMS_23_Project_25E5FAB5_YYC" /sh=True /optionsini="Y:/FoxeyPlatformv12GMS_23_Project_25E5FAB5_YYC\options.ini" /baseproject="X:/BaseProject\BaseProject.yyp" "C:\Users\kyler\Documents\GameMakerStudio2\FoxeyPlatformv12GMS 23 Project\FoxeyPlatformv12GMS 23 Project.yyp" /preprocess="Z:/FoxeyPlatf_DABBD7EA_95956248"
We have a Zeus Project!
Found Project Format 2
Core Resources : Info - Blank IdReference found - could be that the project is corrupt.
ProjectFileWatcher:StartWatching:C:\Users\kyler\Documents\GameMakerStudio2\FoxeyPlatformv12GMS 23 Project
Started: 11/18/2020 11:56:14 AM
Finished: 11/18/2020 11:56:15 AM
Diff: 00:00:01.0216764
Loaded Project: FoxeyPlatformv12GMS 23 Project
finished.
Release build
Options: Z:/FoxeyPlatf_DABBD7EA_95956248\ExtensionOptions.json
OptionsIni
Options: Z:/FoxeyPlatf_DABBD7EA_95956248\PlatformOptions.json
[Compile] Run asset compiler (YYC)
X://bin/GMAssetCompiler.exe /c /mv=1 /zpex /iv=0 /rv=0 /bv=0 /j=8 /gn="FoxeyPlatformv12GMS 23 Project" /td="Y:/" /cd="Z:/FoxeyPlatf_DABBD7EA_95956248" /zpuf="C:\Users\kyler\AppData\Roaming/GameMakerStudio2-Beta\kyle_612126" /m=llvm-win /tgt=64 /llvmSource="X://yyc/" /nodnd /cfg="Default" /o="Y:/FoxeyPlatformv12GMS_23_Project_25E5FAB5_YYC" /sh=True /optionsini="Y:/FoxeyPlatformv12GMS_23_Project_25E5FAB5_YYC\options.ini" /baseproject="X:/BaseProject\BaseProject.yyp" "C:\Users\kyler\Documents\GameMakerStudio2\FoxeyPlatformv12GMS 23 Project\FoxeyPlatformv12GMS 23 Project.yyp" /bt=run /rt=yyc /yyc64bit=true
Compiling Shader Shader_sh_transition... compiled with vs_4_0_level_9_1 (optimised)
Compiling Shader Shader_sh_transition... compiled with ps_4_0_level_9_1 (optimised)
Compiling Shader Shader_sh_water... compiled with vs_4_0_level_9_1 (optimised)
Compiling Shader Shader_sh_water... compiled with ps_4_0 (optimised)
Compiling Shader Shader_sh_flash... compiled with vs_4_0_level_9_1 (optimised)
Compiling Shader Shader_sh_flash... compiled with ps_4_0_level_9_1 (optimised)
Compile Constants...finished.
Remove DnD...finished.
Compile Scripts...finished.
Compile Rooms...finished.
Compile Objects...finished.
Compile Timelines...finished.
Compile Triggers...finished.
Compile Extensions...finished.
Global scripts...finished.
finished.
collapsing enums.
Final Compile...finished.
Writing Chunk... GEN8
option_game_speed=60
Writing Chunk... OPTN
Writing Chunk... LANG
Writing Chunk... EXTN
Writing Chunk... SOND
Converting snd_level_1 to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
Converting snd_menu to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
Converting snd_level_2 to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
Converting snd_wall_bump to Wav 16bit mono @ 44100Hz
Converting snd_walljump to Wav 16bit mono @ 44100Hz
Converting snd_jump to Wav 16bit mono @ 44100Hz
Converting snd_boss_rocky_hit to Wav 16bit mono @ 44100Hz
Converting snd_swin to Wav 16bit mono @ 44100Hz
Converting snd_spring to Wav 16bit mono @ 44100Hz
Converting snd_item_live to Wav 16bit mono @ 44100Hz
Converting snd_enemy_died to Wav 16bit mono @ 44100Hz
Converting snd_nextlevel to Wav 16bit mono @ 44100Hz
Converting snd_messagebox_appear to Wav 16bit mono @ 44100Hz
Converting snd_player_damage to Wav 16bit mono @ 44100Hz
Converting snd_water_splash to Wav 16bit mono @ 44100Hz
Converting snd_player_dead to Wav 16bit mono @ 44100Hz
Converting snd_skill_shooter to Wav 16bit mono @ 44100Hz
Converting snd_item_powerup to Wav 16bit mono @ 44100Hz
Converting snd_skill_shuriken to Wav 16bit mono @ 44100Hz
Converting snd_skill_bomber to Wav 16bit mono @ 44100Hz
Converting snd_messagebox_disappear to Wav 16bit mono @ 44100Hz
Converting snd_pause_out to Wav 16bit mono @ 44100Hz
Converting snd_explosion to Wav 16bit mono @ 44100Hz
Converting snd_water_splashout to Wav 16bit mono @ 44100Hz
Converting snd_pause_in to Wav 16bit mono @ 44100Hz
Converting snd_item_coin to Wav 16bit mono @ 44100Hz
Converting snd_messagebox_hit to Wav 16bit mono @ 44100Hz
Writing Chunk... AGRP
Writing Chunk... SPRT
Writing Chunk... BGND
Writing Chunk... PATH
Writing Chunk... SCPT
Writing Chunk... GLOB
Writing Chunk... SHDR
Writing Chunk... FONT
Writing Chunk... TMLN
Writing Chunk... OBJT
Writing Chunk... ACRV
Writing Chunk... SEQN
Writing Chunk... TAGS
Writing Chunk... ROOM
Writing Chunk... DAFL
Writing Chunk... EMBI
Writing Chunk... TPAGE
Texture Group - Default
Writing Chunk... TGIN
Writing Chunk... STRG
Writing Chunk... TXTR
0 Compressing texture... writing texture texture_0.png...
Writing Chunk... AUDO
Writing Audio Group AG_Music
Writing Audio Group AG_SFX
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Unable to find the specified file.
at GMAssetCompiler.Output.LLVM_Windows.(String , Dictionary`2 )
at GMAssetCompiler.Output.LLVM_Windows..ctor()
at ..()
at ..(GMAssets , String )
at GMAssetCompiler.Program.(GMAssets )
at GMAssetCompiler.Program.Reentry(String[] _args)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Igor.Program.(String )
at Igor.WindowsBuilder.Compile(Boolean _exe)
at Igor.WindowsBuilder.Deploy(Boolean _exe)
at Igor.WindowsBuilder.Run()
Igor complete.
elapsed time 00:00:18.1819945s for command "C:\ProgramData/GameMakerStudio2-Beta/Cache/runtimes\runtime-23.1.1.228/bin/Igor.exe" -j=8 -options="C:\Users\kyler\AppData\Local\GameMakerStudio2-Beta\GMS2TEMP\build.bff" -v -- Windows Run started at 11/18/2020 11:56:13
"cmd" /c subst Z: /d

elapsed time 00:00:00.1061061s for command "cmd" /c subst Z: /d started at 11/18/2020 11:56:31
"cmd" /c subst Y: /d

elapsed time 00:00:00.0959218s for command "cmd" /c subst Y: /d started at 11/18/2020 11:56:31
"cmd" /c subst X: /d

elapsed time 00:00:00.1007397s for command "cmd" /c subst X: /d started at 11/18/2020 11:56:31
FAILED: Run Program Complete
For the details of why this build failed, please review the whole log above and also see your Compile Errors window.
 

FoxyOfJungle

Kazan Games
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Unable to find the specified file.
YYC just works fine for me with Game Maker Studio v2.3.0.529 | Runtime: v2.3.0.401
Try clearing the cache and see if it resolves...



System.IO.FileNotFoundException: Unable to find the specified file.
There it informs you that a file is missing. But I don't know what is that error... Better to wait for the stable version of GMS 2.3.1 and YYC compatible.

Edit: It works fine in GMS 2.3.1 and YYC, I tested.
 
Last edited:
After the recent update you released it now runs in YYC in the Beta version. Maybe something was just wrong in my version or something?
 

FoxyOfJungle

Kazan Games
After the recent update you released it now runs in YYC in the Beta version. Maybe something was just wrong in my version or something?
It still worked in the version before that. I avoid making demo available without being YYC because of possible cases of decompilation of the source code. I suppose it was a problem with the cache. But good that now works :)
 
Hey, I wanted to ask a question and request a new feature.

How would I change the player's sprite for each additional jump? Ex. the first time they jump, it plays the jump animation and the second time they jump play a different animation (like them using a jet pack or thruster boots).

Also, how can I make the shooter sprite have a slight delay? I have a character that when they shoot they extend a blaster, but, the animation only last for a split second. How can I give it a delay to last longer?

Can you create a "ground slide" action? Like in the NES Mega Man games? That could also be used in attacking enemies depending on the "skill"?
 

FoxyOfJungle

Kazan Games
How would I change the player's sprite for each additional jump? Ex. the first time they jump, it plays the jump animation and the second time they jump play a different animation (like them using a jet pack or thruster boots).
Since all sprites are changed in the player's End Step event, then you must change in that event.

1 - Go to the player's End Step event.
2 - Go to the case player_state.jump section in the p_state switch;
3 - Notice that there is a variable called sprite_index = spr_pl_normal_jump. You will delete this line and change the sprites as each jump changes through the jump_count variable.
The first thing you need to know is that there is a variable called jump_count, if you set the amount of jumps to 2, then the variable jump_count will be 2 while you are jumping, subtracting -1 from this variable, until reach 0 and there are no more jumps. Then you will use this to your advantage. Use a switch for each number, you change the sprite, like this:

GML:
case player_state.jump:
                switch (jump_count)
                {
                    case 1:
                        sprite_index = spr_pl_normal_jump; //player sprite jump first time
                        break;
                 
                    case 0:
                        sprite_index = spr_pl_normal_jump_impulse; //player sprite jump impulse
                        break;
                }
             
                if (wall_jump_delay == 0) {if abs(input_h) image_xscale = input_h;} //flip player
                image_speed = 0; //sprite speed
                if (vsp > 0) {image_index = 1;} else {image_index = 0;} //jumping or falling
                break;
If the jump_count was 2, when jumping, it automatically goes to 1, so this is why the first value of the switch is 1.

Note that the image_index is changed as the player is jumping "up" or "down" (using the vsp variable), if your player modifies the jump as an animation, just change these values as needed.

If your character wears different "outfits" (which are the skills), you will need to do this for all skills, as they are different sprites.


4 - Result:



The black and white sprite would be the sprite you want to change with the next jump in the air. If you want to modify the jump sound as well, just use a switch using the jump_count variable in the step event, in the same place where the jump is made and the sound is played, just modify it.


------------------


Also, how can I make the shooter sprite have a slight delay? I have a character that when they shoot they extend a blaster, but, the animation only last for a split second. How can I give it a delay to last longer?
Any sprite changes are made in the End Step event, so you need to modify that there.

1 - Enter the player's End Step event.
2 - Locate the part where the shooter sprites are changed:



Notice that there is a switch, you will have to modify it as your project is going, but let's assume that you are doing this while the player is stopped, so you will make changes to the case player_state.idle:.

Notice that there is a line of code containing this:
GML:
image_speed = 0.2; //sprite speed
Just create a time variable that will increase according to what you want, but you will have to do it because I don't know how your project works. If the time variable reaches a certain value, the animation of the sprite will play.

------------------


Can you create a "ground slide" action? Like in the NES Mega Man games? That could also be used in attacking enemies depending on the "skill"?
I think I understand, but can you show me a video just so I can understand better? I can do this. I never played Mega Man games, so I don't know... I tried to look for some NES Mega Man videos, but I'm still confused.

Also, my college classes are back, so I might be slow to do that, but I will try to do my best.


Thanks.
Regards.
 
Last edited:
Since all sprites are changed in the player's End Step event, then you must change in that event.

1 - Go to the player's End Step event.
2 - Go to the case player_state.jump section in the p_state switch;
3 - Notice that there is a variable called sprite_index = spr_pl_normal_jump. You will delete this line and change the sprites as each jump changes through the jump_count variable.
The first thing you need to know is that there is a variable called jump_count, if you set the amount of jumps to 2, then the variable jump_count will be 2 while you are jumping, subtracting -1 from this variable, until reach 0 and there are no more jumps. Then you will use this to your advantage. Use a switch for each number, you change the sprite, like this:

GML:
case player_state.jump:
                switch (jump_count)
                {
                    case 1:
                        sprite_index = spr_pl_normal_jump; //player sprite jump first time
                        break;
                  
                    case 0:
                        sprite_index = spr_pl_normal_jump_impulse; //player sprite jump impulse
                        break;
                }
              
                if (wall_jump_delay == 0) {if !(input_h == 0) image_xscale = input_h;} //flip player
                image_speed = 0; //sprite speed
                if (vsp > 0) {image_index = 1;} else {image_index = 0;} //jumping or falling
                break;
If the jump_count was 2, when jumping, it automatically goes to 1, so this is why the first value of the switch is 1.

Note that the image_index is changed as the player is jumping "up" or "down" (using the vsp variable), if your player modifies the jump as an animation, just change these values as needed.

If your character wears different "outfits" (which are the skills), you will need to do this for all skills, as they are different sprites.


4 - Result:



The black and white sprite would be the sprite you want to change with the next jump in the air. If you want to modify the jump sound as well, just use a switch using the jump_count variable in the step event, in the same place where the jump is made and the sound is played, just modify it.


------------------




Any sprite changes are made in the End Step event, so you need to modify that there.

1 - Enter the player's End Step event.
2 - Locate the part where the shooter sprites are changed:



Notice that there is a switch, you will have to modify it as your project is going, but let's assume that you are doing this while the player is stopped, so you will make changes to the case player_state.idle:.

Notice that there is a line of code containing this:
GML:
image_speed = 0.2; //sprite speed
Just create a time variable that will increase according to what you want, but you will have to do it because I don't know how your project works. If the time variable reaches a certain value, the animation of the sprite will play.

------------------




I think I understand, but can you show me a video just so I can understand better? I can do this. I never played Mega Man games, so I don't know...

Also, my college classes are back, so I might be slow to do that, but I will try to do my best.


Thanks.
Regards.
Thank you! I'll give those a try.

Here's a video of what I mean by ground slide.

What the player is doing at the start of the video

 

FoxyOfJungle

Kazan Games
Also, I just added the double jump code and if the player just walks off of an edge without jumping it plays the second jump sprite. How would I fix that?
Okay, forget the tutorial I did previously (in parts) and do the following:

1 - Put this variable in the player's create event: jump_impulse_count = 0;
2 - Locate in the player's step event the part where the player jumps and modify it for this:

GML:
// JUMP, WALL JUMP AND SWIM
// setup multi jump
if (onground)
{
    jump_count = jump_count_default;
    jump_impulse_count = 0;
}
else
{
    if (jump_count == jump_count_default)
    {
        jump_count = 0;
        jump_impulse_count = 0;
    }
}
3 - In the if (global.input_key_x_pressed), there is a p_state switch, where there is "default", below the jump_count -= 1, put jump_impulse_count += 1;


4 - In the end step event change the old code that I talked about in the tutorial and do that:

GML:
case player_state.jump:
                switch (jump_impulse_count)
                {
                    case 1:
                        sprite_index = spr_pl_normal_jump; //player sprite jump first time
                        break;
                
                    case 2:
                        sprite_index = spr_pl_normal_jump_impulse; //player sprite jump impulse
                        break;
                }


4 - Result:



If the player continues with the jump state when entering and exiting the water, just put jump_impulse_count = 0 when colliding with the water.
I will try other methods of doing this, if it works I will come back here with the different method.
 
Last edited:
Thank you! It works now!

But, how my animation works, when the player is "falling" it's just 1 frame of the walking sprite. But I wanted it to be the jump sprite.

So, to fix that I added the following to the Switch (jump_impulse_count)

GML:
case 0:
    sprite_index = spr_pl_normal_jump; // player jump sprite first time
break;
 

FoxyOfJungle

Kazan Games
@KyleRansford
I made an adjustment in the way it is possible to make infinite jumps, now it will no longer be necessary to use the variable jump_impulse_count, just jump_count will be enough. This will be available in the next update.
 

Ubu

Member
Looks like a great platformer template. Here are some requests for features I would love to see:

Environmental elements:
----------------------------
- Buttons / switches / pressure plates (for opening doors, moving platforms, triggering traps, setting off explosives etc.).
- Fall-through platforms (press down to fall through platform).
- Path based platforms (follows GMS2's paths).
- Conveyor belts.
- Teleporters.
- Ropes.
- Lifts (moving platforms which are triggered when player enters and stops at end points).
- Keys (for unlocking closed doors etc.)

Environmental hazards:
--------------------------
- Falling blocks/platforms (after standing on them).
- Crushers / crushing blocks (2 types: 1: Falls/crushes when player is below, then resets/pulls back, 2: in a timed loop like pistons).
- Spike traps (timed loop or triggered after standing on them).
- Falling roof/stones (falls on player when player is below - does not reset).
- Lava / geysers (springs out from ground).
- "Electric currents" ((or something else?, not sure what to call it). Blinks on and off and has to be avoided).

Control:
----------
- Air dash.
- Ledge grab.
- Slide.
- Air glide (keep holding jump button pressed to slowly descend).
- (Flying)?

Camera:
----------
- Zoom in/out.


Keep up the good work 👍
 

FoxyOfJungle

Kazan Games
@Ubu
All these things are possible for me to do, but I just don't guarantee that it is possible to do these controls that you mentioned. Because these are things that I have not yet done at GM, it will be a new attempt, I will see what can I do...
It will not be possible to make the character fly, as this is a characteristic that can be considered specific for a certain type of game, doing this can make the engine very specific, and it can mess up the logic of the engine core, I prefer not to do it flying.
About the Ledge grab, the only problem is that I will have to draw new sprites of the player grabbing the wall, I suck at pixel art XD. But I will analyze...


Zoom in/out.
I had done this in an update (in version 1.1.1), but I had to remove it because it caused conflicts in the water shader, it was not being rendered properly. In case I solve the problem, I add that.

I have the suggestions saved and I will remember to try to make them, at the moment I am quite sick, I will not say that I am with Covid because I still don't know... So I was kind of stopped these days. Besides, I am also studying in college, full of things to do and I don't have much time to use Game Maker Studio, but I will try to do my best, I appreciate your understanding.

@KyleRansford I didn't forget to do what you asked.

Conveyor belts | Crushers
What would that be?

I will do some optimizations for the next update as well.

Thanks for the suggestions!
Regards!
 
Last edited:
  • Like
Reactions: Ubu

Ubu

Member
I'm sorry to hear that you're not well, hope it's not Corona or anything serious. Get well soon.

All these things are possible for me to do
Ah, this is great! I agree with you that flying might be too specific and would probably not fit with the platformer theme. And no problem if some of my suggestions are too difficult to add or would break the engine. I didn't think you'd actually consider them all anyway.

What would that be?
Conveyor belt example
Crusher example

And take your time, there's no hurry.
 
Thank you for the update!

Just wanted to ask a couple more questions.

With the "Shooter" Skill, the player can shoot in 3 directions (left, right & up), how can I set to where they can only shoot left or right when using the Shooter Skill?

How to I add exclusions to what solids the player can wall slide on? Like, it's ok to wall slide on tall walls, but on small blocks or moving platforms the player will grab a hold of them and slide down if trying to jump while beside them.

How can I add a "Climb Shoot" to the climb state? While the player stays on the ladder, but can shoot either left or right?

I keep adding to this lol, but also, how do I enable the player to jump while on a ladder? I tried to to to it but it wasn't working.

P.S. Just because I suggest something, doesn't mean you should necessarily add it to your actual asset. I just ask for my own use.
 
Last edited:

FoxyOfJungle

Kazan Games
With the "Shooter" Skill, the player can shoot in 3 directions (left, right & up), how can I set it to wear they can only shoot left or right when using the Shooter Skill?

In the obj_player's Step Event, change the input_dir180 variable to this:
GML:
if (abs(input_h)) {
input_dir180 = point_direction(0,0,input_h,0);}



How to I add exclusions to what solids the player can wall slide on? Like, it's ok to wall slide on tall walls, but on small blocks or moving platforms the player will grab a hold of them and slide down if trying to jump while beside them.

1 - In obj_player, go to the Step Event, find the slide part, it says "// WALL SLIDE".
before "if (_collision.solid_type == 0)", put this:
GML:
if (variable_instance_exists(_collision.wall_slide, "wall_slide") && _collision.wall_slide)
Then it will look like this:
GML:
if !(_collision == noone ....
{
    if (variable_instance_exists(_collision.wall_slide, "wall_slide") && _collision.wall_slide)
    {
        if (_collision.solid_type == 0)
        {
In the object that there is a collision, you will just put this in the Create Event:
GML:
wall_slide = false;
Therefore, it will not enable the wall slide.
There are other ways to do this, such as detecting the height of the sprite using sprite_height, but I think it is not necessary in this case.



EDIT!!
There is a problem with the code above and it has been fixed here.



How can I add a "Climb Shoot" to the climb state? While the player stays on the ladder, but can shoot either left or right?

This is somewhat specific to a particular type of project.
This would only be possible if you make a combination of the shooter state with the climb state, I cannot give you codes about it because it is long, but the guidance I give is to merge the player_state "climb" with the shooter. You will obviously need to create sprites for the player, in this case, it would be a sprite of the character grabbing the grid with the gun in his hand aiming sideways, then you will modify in the End Step event, in the "case player_state.climb:" section. You can for example add a condition: "if p_skill == player_skill.shooter", then you will modify the sprites in that condition. And to shoot, you also make a condition like this:

1 - In the obj_player's Step Event, find the "// SKILL SYSTEM"
2 - There is a "p_skill" switch, where there is "case player_skill.shooter:", as it is not possible to do two conditions on the switch, you can substitute a combination of If else, like this:

GML:
if (p_skill == player_skill.normal)
{
    //...
}

if (p_skill == player_skill.bomber)
{
    //...
}

if (p_skill == player_skill.shooter || (p_skill == player_skill.shooter && player_state == climb)
{
    //...
}

if (p_skill == player_skill.shuriken)
{
    //...
}
This is just an idea, try to see how it will work on your project, I can't help much in this case.




I keep adding to this lol, but also, how do I enable the player to jump while on a ladder? I tried to to to it but it wasn't working.

This is already possible, while using the keyboard, you just need to hold the key UP and press Z (In that order). You can modify this this way:
1 - Go to obj_player, go to Step Event.
2 - Where there is "// CLIMB COLLISION", notice the comment "// leave climb [hold up + z pressed]"
Below is the key combination:
GML:
if (global.input_key_up && global.input_key_z_pressed)

And sorry for late reply, I was very busy.
Thanks!
 
Last edited:
1 - In obj_player, go to the Step Event, find the slide part, it says "// WALL SLIDE".
before "if (_collision.solid_type == 0)", put this:
GML:
if (variable_instance_exists(_collision.wall_slide, "wall_slide") && _collision.wall_slide)
Then it will look like this:
GML:
if !(_collision == noone ....
{
if (variable_instance_exists(_collision.wall_slide, "wall_slide") && _collision.wall_slide)
{
if (_collision.solid_type == 0)
{
In the object that there is a collision, you will just put this in the Create Event:
GML:
wall_slide = false;
Therefore, it will not enable the wall slide.
Thank you. For the answers.

On the Wall Slide code, when I added the code to the Wall Slide excluded Objects, they work as intended (not being able to wall slide) but on Objects that Wall Slide is enabled, I get a "Variable <unknown_object>.wall_slide(101025, -2147483648) not set before reading it." error? Do I need to include wall_slide = true; on the objects that Wall Slide is enabled?

But isn't that what variable_instance_exists(); is for? Checking if the variable exists or not? I wouldn't think I would have to add wall_slide = true; to every Wall Slide enabled Object.
 

FoxyOfJungle

Kazan Games
Thank you. For the answers.

On the Wall Slide code, when I added the code to the Wall Slide excluded Objects, they work as intended (not being able to wall slide) but on Objects that Wall Slide is enabled, I get a "Variable <unknown_object>.wall_slide(101025, -2147483648) not set before reading it." error? Do I need to include wall_slide = true; on the objects that Wall Slide is enabled?

But isn't that what variable_instance_exists(); is for? Checking if the variable exists or not? I wouldn't think I would have to add wall_slide = true; to every Wall Slide enabled Object.
You don't need to place it on every object, this is why I used variable_instance_exists() function; You will only put wall_slide = false; on the object you want to disable the wall slide. (Which has the obj_par_solid parent).

If you want to add this check to all solid objects, then you must remove the variable check and put wall_slide = true; on all solid objects:

So you would just do this:
GML:
if !(_collision == noone ....
{
    if (_collision.wall_slide)
    {
        if (_collision.solid_type == 0)
        {
But I think it's extra work to do.
 
Last edited:
You don't need to place it on every object, this is why I used variable_instance_exists() function; You will only put wall_slide = false; on the object you want to disable the wall slide. (Which has the obj_par_solid parent).

If you want to add this check to all solid objects, then you must remove the variable check and put wall_slide = true; on all solid objects:

So you would just do this:
GML:
if !(_collision == noone ....
{
    if (_collision.wall_slide)
    {
        if (_collision.solid_type == 0)
        {
But I think it's extra work to do.
What I'm saying is that I am using the variable check and I get the "Variable <unknown_object>.wall_slide(101025, -2147483648) not set before reading it." error when the player tries to Wall Slide on Objects where it is permitted. Do you get an error in your test project?
 

FoxyOfJungle

Kazan Games
What I'm saying is that I am using the variable check and I get the "Variable <unknown_object>.wall_slide(101025, -2147483648) not set before reading it." error when the player tries to Wall Slide on Objects where it is permitted. Do you get an error in your test project?
I made a little typo, I was putting variable_instance_exists(_collision.wall_slide, "wall_slide"), but it's actually variable_instance_exists(_collision, "wall_slide");, sorry.

Code:
GML:
if !(_collision == noone ....
{
    if (_collision.solid_type == 0)
    {
        if !variable_instance_exists(_collision, "wall_slide")
        {
And in this case, I put the ! before.
Now just put wall_slide = false; on the object you want to disable the wall slide.


 
Last edited:
I made a little typo, I was putting variable_instance_exists(_collision.wall_slide, "wall_slide"), but it's actually variable_instance_exists(_collision, "wall_slide");, sorry.

Code:
GML:
if !(_collision == noone ....
{
    if (_collision.solid_type == 0)
    {
        if !variable_instance_exists(_collision, "wall_slide")
        {
And in this case, I put the ! before.
Now just put wall_slide = false; on the object you want to disable the wall slide.
Thank you, it now works!

Just another question about shooting while climbing. I think I found why it isn't working. The line where you have
GML:
if !(p_state == player_state.swim) and !(p_state == player_state.climb) and !(p_state == player_state.slide)
{
This must be the line preventing the Skills from being used on ladders. This is a basic feature in Mega Man. Also an expected action to be able to shoot enemies that are chasing you beside a ladder. I know you said you haven't played it, but I would think other people would actually like to see this be an added feature as well. I've tried other code arrangements to do this but, based on how you coded it to work, I don't currently know how to do it. I either get weird animation behavior or the player won't even jump.

Starting here in the example video, this is what I'm talking about:

 
Last edited:

FoxyOfJungle

Kazan Games
Thank you, it now works!

Just another question about shooting while climbing. I think I found why it isn't working. The line where you have
GML:
if !(p_state == player_state.swim) and !(p_state == player_state.climb) and !(p_state == player_state.slide)
{
This must be the line preventing the Skills from being used on ladders. This is a basic feature in Mega Man. Also an expected action to be able to shoot enemies that are chasing you beside a ladder. I know you said you haven't played it, but I would think other people would actually like to see this be an added feature as well. I've tried other code arrangements to do this but, based on how you coded it to work, I don't currently know how to do it. I either get weird animation behavior or the player won't even jump.

Starting here in the example video, this is what I'm talking about:

You are right about adding this, the only thing is that I can’t mess with the project while I’m having class in college, because there’s not enough time, I usually spend between 8 to 10 hours on Game Maker a day. (Lately I've only been working on my Utiki project because it's easier for me to program interfaces.)
I will only be able to add the suggested things (yours and others) when Im on vacation, I will do my best to try to add this without breaking the logic of the code, but something I say I will do is separate the grid object from the ladder (they will be different objects), on the ladder, what shouldn't happen is the character walking sideways, but aiming sideways when pressing the left and right keys.
 

FoxyOfJungle

Kazan Games
@KyleRansford

Hi!
I managed to do what you asked for and it will be a new feature that will be released in the next update. The system works perfectly now, I just haven't done the player's animation sprites yet.

Details:
1 - Now I can decide if I can shoot into the water or other state. You can only shoot sideways (or other directions) if you press left or right while on the ladder, it does not influence while the player is standing or walking and so on.
2 - When climbing the ladder, the player is aligned in the center of the ladder.
3 - There is obj_ladder and obj_climb now, both have a different parent.
4 - I changed the key combination, now to leave the ladder or climb, you hold UP and the Jump key at the same time.



I wanted to do this now because I was anxious, although I have a lot of college things to do. 😅
 
@KyleRansford

Hi!
I managed to do what you asked for and it will be a new feature that will be released in the next update. The system works perfectly now, I just haven't done the player's animation sprites yet.

Details:
1 - Now I can decide if I can shoot into the water or other state. You can only shoot sideways (or other directions) if you press left or right while on the ladder, it does not influence while the player is standing or walking and so on.
2 - When climbing the ladder, the player is aligned in the center of the ladder.
3 - There is obj_ladder and obj_climb now, both have a different parent.
4 - I changed the key combination, now to leave the ladder or climb, you hold UP and the Jump key at the same time.

I wanted to do this now because I was anxious, although I have a lot of college things to do. 😅
Thank you for doing it so quick!

Also, just to ask (so I could do it myself), would it break the system again if I tried to enable skills while climbing on grids? Because I was thinking of a cool boss fight that could be fought while on a grid?
The way I figured the player could still shoot would be that whichever direction they where headed could be the direction they could shoot? But anyway, I'll just wait until you release the next update.
 

FoxyOfJungle

Kazan Games
Also, just to ask (so I could do it myself), would it break the system again if I tried to enable skills while climbing on grids? Because I was thinking of a cool boss fight that could be fought while on a grid?
The way I did it now is possible to do this (use any skill while in the grid or ladder, just remove the IF condition in the appropriate place), as you have already modified the project, you just have to compare the two and imitate the way I did when I launch the update. But I did not change the code much regarding what is available for download, I just added the "ladder" state and removed some state checks and things like that, I also added the codes to modify the sprites in the End Step event. I also made a copy of the "climb" collision code and modified it a bit to work on the "ladder" state.


The way I figured the player could still shoot would be that whichever direction they where headed could be the direction they could shoot? But anyway, I'll just wait until you release the next update.
When he's on the ladder, it's like in quotes, "he's still on the floor with the gun", but he's on the ladder (but using other sprites), so he's going to use that input_dir180 variable that you modified earlier.
The animation of the character is independent of how the character shoots, this seems a little strange but it is simple, the sprites are modified in End Step, and the code for shooting is done in Step, so the direction of the shot will occur in Step, the only thing that happens in End Step is that I can reposition where the player is "looking". You will see when I launch.
Also, like my posts so I know you saw them, if you can.

Thanks!



---------------------------------------------------------------------
⚠ Edit: The next update will be quite big, I'm working on it.

Edit: RELEASED!
 
Last edited:

D.Markoni

Member
Just bought this yesterday, enjoying exploring it so far.
One possible suggestion I might add - Bombs influencing the player/enemry by pushing them away (shockwave basically).
 

FoxyOfJungle

Kazan Games
Just bought this yesterday, enjoying exploring it so far.
One possible suggestion I might add - Bombs influencing the player/enemry by pushing them away (shockwave basically).
Hello!
Thanks for the suggestion, do you have any reference to this movement caused by the bomb?


I am currently making a new Menu that will use keyboard and gamepad



Regards!
 

FoxyOfJungle

Kazan Games
Please add friction.
It's a must have on platform games.
To make Ice Worlds aso
Thanks in advance.
Done:


Acceleration + Friction.
Both snow and default variables and can be adjusted.
You may not notice it in the GIF, but I made the acceleration and friction faster in fact, but it can be adjusted now.
 
Is there a chance for dark worlds like a cave illuminated with light sources like torches?
A cool thing would if u add ropes with swing when I steer left or right.

Thanks in advance.

Thanks for your service
 
Last edited:
I think this one
looks more pretty in Pixel art style, the rope is not Physic based but also swings cool.
The grappling hook is nice to have, but the most important thing is the rope that works in the best case with sprites to.
For example (its not the final liana) like this.
spr_liane_0.png
But it's your choice what u will do.
 
Last edited:

FoxyOfJungle

Kazan Games
I think this one
looks more pretty in Pixel art style, the rope is not Physic based but also swings cool.
The grappling hook is nice to have, but the most important thing is the rope that works in the best case with sprites to.
For example (its not the final liana) like this.
View attachment 36901
But it's your choice what u will do.
I understand, I will try to do this, but I cannot promise because it will be my first time doing this.
And by the way, as the engine only uses the keyboard and gamepad, then it will not be possible to use the mouse to do something, so it is something to be taken into account. The video shows that the mouse is not necessary, so this is more suitable.
Thanks for the sugestion!

Cheers.
 

FoxyOfJungle

Kazan Games


VERSION 1.3 IS NOW AVAILABLE!
(Itch.io and YYG Marketplace)


It is with great pleasure that I come to announce the version 1.3 of Foxey Platform Engine! Check out the demo to get up close:

Compiled YYC .EXE and .APK Demo available on Itch.io.

This is a huge update! Many things added, fixed and changed!


>> Release Notes:
- [ADDED] 2.5D Camera (experimental) **
- [ADDED] Player friction and acceleration
- [ADDED] Player now can run faster
- [ADDED] Fall-through platforms, can be deactivated in any instance
- [ADDED] Conveyor Belts
- [ADDED] Path-based platforms
- [ADDED] Ladders
- [ADDED] Ice/Snow terrain
- [ADDED] New secure Save and Load system, using JSON and buffers (with unreadable format)
- [ADDED] New Menu that uses only keyboard and gamepad
- [ADDED] Now it is possible to use the skills while on the ladder or climb
- [ADDED] Shoot for directions while on the ladder or climb
- [ADDED] Now it is possible to use the shuriken inside the water
- [ADDED] New player sprites and actions
- [ADDED] Nine slice function
- [ADDED] The shuriken now directs the camera's focus to it
- [ADDED] Now you can whitelist objects to not wall slide
- [ADDED] Wall slide disabled for some objects, such as the direction platform and others
- [ADDED] Player and Camera now uses a parent object
- [ADDED] Error screen message
- [ADDED] Solid environment parent object
- [ADDED] A simple draw_text_shadow function
- [ADDED] New input buttons for dpad
- [ADDED] Platforms horizontal and vertical speed calculation
- [ADDED] New grid tile set

- [FIXED] Infinite jumps, the variable will now count progressively, not conversely
- [FIXED] The climb animation resets when you stop moving
- [FIXED] Camera focus was not working properly if I set the focus manually
- [FIXED] Pushable box collision with player, before, the player was pulled
- [FIXED] Pushable box collision with vertical platform
- [FIXED] Vertical platform collision with solids, now collides with the proper bounding box
- [FIXED] Horizontal platform better collision with solids
- [FIXED] Scripts and functions arguments
- [FIXED] All scripts have been improved in something, review them
- [FIXED] Optimized obj_game_input
- [FIXED] Some memory leaks
- [FIXED] Small bug fixes
- [FIXED] General game performance improved
- [FIXED] Much of the collision code has been optimized
- [FIXED] Added some extra comments in some codes
- [FIXED] Layers now is better organized
- [FIXED] Some player state machine codes
- [FIXED] Gamepad UI connection indicator
- [FIXED] Gamepad sprite improved
- [FIXED] Thorn object collision with player
- [FIXED] Splash screen was using old company logo

- [CHANGED] Dialog Box system now uses arrays, not ds_list anymore
- [CHANGED] It is now possible to shoot inside the water if you wish
- [CHANGED] To leave the ladder or climb, now, hold UP and press the Jump key

- [REMOVED] Legacy save and load system
- [REMOVED] Old Menu
** The 2.5D camera is still in testing and is not guaranteed to work yet. It is an object separate from the normal 2D camera and does not influence the operation of the current one.




So, when is this all being released??? With all these new features it's making me want to get started again lol.
Now :)


The price of the engine is now $29.99 (For those who haven't bought yet) as it has more features and it took time to do by just one person.
⚠ There are still many things to add, like a 3-slot loading system, dash and many others, but I decided to anticipate the update as my classes are back and I won't have enough time again, but I'll try at my pace, thanks!
 
Last edited:

edusword

Member
I purchased this engine some time ago, and I think it is amazing. The 1.3 update is great, thank you!! :)
I would like to write here some suggestions:
- Make a To Do list in the first post.
- Use of ropes / lianas (as suggested by Vectorhead): static and in movement.
- Use of horizontal/diagonal ladders / rails, hung from them (horizontal/diagonal climbing). See video below:

- The last suggestion (horizontal climbing) could also be performed in dynamic objects (see video below):

- Wall Climbing (see video below):

Thanks a lot! Regards!
 

Julitro82

Member
Hiya! I just bought this awesome asset and have been a couple days trying to get used to it. I'm not a programmer and my coding skills are near to 0. That was the main reason to acquire a built-in engine.

The thing is I'm planning to make a run'n gun game, and this engine could really fit to it. But I'm not really interested in the skills feature, and I can't find the way to just disable them. I'd like to have a character which will be only in the "shooter" state, like in Contra or Metal Slug, but every time I touch something to try to disable the other skills I break something and receive error messages everywhere. Is there an easy way to do it?

Another thing I don't like is that is only needed to push "down" to descend a platform, when it could be more natural and accurate (IMHO) to do it by pressing down+jump. However, once again I've been struggling with the code with no results.

I'm sorry, I know it could be a lot of work as I'm an absolute noob in this. Also, english is not my mother language, so I also apologize in case I made any mistake.

Thanks for the good work!
 
Is the Ground Slide coming in the next update? I thought it would be in the 1.3 update. That's the one I was waiting for lol.
Also, to better explain the Ground Slide, in the video reference, when Mega Man is in the "Ground Slide state", and goes under a narrow passage, he stays in the Ground Slide state until he passes through (because the Ground Slide sprite is shorter than the normal sprite). In the video is a small narrow passage, but if the narrow passage was longer, Mega Man would stay in the Ground Slide state and just keep sliding in the direction he is pointing until he reaches the end of the narrow passage. Also, while he is sliding in the narrow passage, he is able to turn the opposite direction to keep sliding either forward or backward.

I know you'll reply when you get time, I just wanted to explain it more.

 

FoxyOfJungle

Kazan Games
Make a To Do list in the first post.
Done. :)


Use of ropes / lianas (as suggested by Vectorhead): static and in movement.
I added this to the list, I'll see how I do it. Thanks!


Use of horizontal/diagonal ladders / rails, hung from them (horizontal/diagonal climbing).
I can only do the horizontal, sorry. The diagonal, currently seems to be a little impractical or a little complicated to do, in the sense that it can visibly alter some of the player's main codes.


The last suggestion (horizontal climbing) could also be performed in dynamic objects (see video below):
Well, I have no idea how I could do this (maybe it involves lenghtdir..), but maybe I think about it in the future, for now I can't do this.


Wall Climbing (see video below):
I can do that. Added to my to-do list.
Thanks for the suggestions!


----------------------

Is the Ground Slide coming in the next update? I thought it would be in the 1.3 update. That's the one I was waiting for lol.
Okay, sorry for not including it in v1.3. What happens is that in order for me to add some extra movement to the player, it takes a long time, it takes time, and I have to study the best way to do that. I'm currently out of time for this, so I'm adding things that are considered easier for me particularly.


Also, to better explain the Ground Slide, in the video reference, when Mega Man is in the "Ground Slide state", and goes under a narrow passage, he stays in the Ground Slide state until he passes through (because the Ground Slide sprite is shorter than the normal sprite). In the video is a small narrow passage, but if the narrow passage was longer, Mega Man would stay in the Ground Slide state and just keep sliding in the direction he is pointing until he reaches the end of the narrow passage. Also, while he is sliding in the narrow passage, he is able to turn the opposite direction to keep sliding either forward or backward.

I know you'll reply when you get time, I just wanted to explain it more.
Alright, got it, thanks for the suggestion!


----------------------


The thing is I'm planning to make a run'n gun game, and this engine could really fit to it. But I'm not really interested in the skills feature, and I can't find the way to just disable them. I'd like to have a character which will be only in the "shooter" state, like in Contra or Metal Slug, but every time I touch something to try to disable the other skills I break something and receive error messages everywhere. Is there an easy way to do it?
Got it. It is quite simple to do this:

1 - Although the engine uses skills, you don't need to delete the system, just delete the other skills.

2 - Go to obj_player, Create Event, find the enum player_skill, just leave the shooter and delete the rest:
GML:
enum player_skill
{
    shooter,
}
3 - Delete these variables:
skill_bomber_bomb_hsp
skill_bomber_bomb_vsp


4 - Change skill_count to 1:
GML:
skill_count = 1;

5 - After DEFAULT [NOT IMPORTANT], change p_skill = player_skill.normal; to:
GML:
p_skill = player_skill.shooter;

6 - Go to the player's End Step event

7 - Delete the other skills and leave only shooter:



8 - Go to the player's Step Event

9 - Find the // SKILL SYSTEM section

10 - Delete all other skills and leave only the shooter:


Also delete the part that changes the skill: p_skill += ...

11 - Find the // PLAYER OTHER OBJECT COLLISIONS region

12 - Delete all the // COLLISION WITH obj_item_bomb



13 - Delete all the // COLLISION WITH obj_item_shuriken

14 - Go to the Destroy Event

15 - Delete all other skills:



16 - Go to: System/obj_game_controller, go to the DRAW GUI event.

17 - Find // SKILL TYPE AND AMOUNT and delete the other skills



18 - I did all the above procedure now and it worked perfectly:



If you find other variables related to other skills, just delete.



Another thing I don't like is that is only needed to push "down" to descend a platform, when it could be more natural and accurate (IMHO) to do it by pressing down+jump. However, once again I've been struggling with the code with no results.
This is very easy to solve:

1 - Go to the obj_player, go to the Step Event.
2 - In the region PLAYER LOGIC, find // SOLID VERTICAL COLLISION
3 - Find // activate fall-through platforms
4 - Change if (global.input_key_fall_pressed) to if (global.input_key_down && global.input_key_x_pressed)
5 - Find the // JUMP, WALL JUMP AND SWIM
6 - Move the entire jump code section to AFTER // SOLID VERTICAL COLLISION



7 - By holding down and jumping, you will fall now:




Thank you all.
 

FoxyOfJungle

Kazan Games


VERSION 1.3.1 IS NOW AVAILABLE!
(Itch.io and YYG Marketplace)


It is with great pleasure that I come to announce the version 1.3.1 of Foxey Platform Engine! Check out the demo to get up close:

Compiled YYC .EXE and .APK Demo available on Itch.io.

Small update with minor bug fixes that interfere with gameplay. Some cool things have also been added.


>> Release Notes:
- [ADDED] Pushable box can now fall into the water slowly
- [ADDED] While on grid, the player now can stop to fire, hold A key (Triangle or Y)
- [ADDED] Pushable box ground collision sound effect
- [ADDED] camera_center_target() function
- [ADDED] Now the camera starts centered on the player

- [FIXED] Wall jump, now the player will only shoot if he is not jumping from the wall
- [FIXED] Path-based platform at a certain point it deviates from the path position
- [FIXED] Some fixes in the menu
- [FIXED] Pushable box collision infinite loop
- [FIXED] Pushable box horizontal speed calculation
- [FIXED] Pushable box collision with path-based platform
- [FIXED] Swim move speed inside water was faster
- [FIXED] When running fast and jumping on the grid, the speed continues
- [FIXED] Player collision with items
- [FIXED] Level 1 ice block in the middle
- [FIXED] Conveyor Belts collision, now the player can jump from the bottom up
- [FIXED] Powerup box collision with the player
- [FIXED] Small fixes

- [CHANGED] Better water color
 

xNYARLx

Member
Good Work.
And suggestions. :)

First sugestion... Boat on water. When we enter it, you cannot see a piece of us (i.e. legs). It moves on its own but reaching its end you can change its direction. The second one does not move by itself until we reach either end, and stops in the middle. Third change to player animation for rowing for example. We jump to it and only after pressing, for example, the key that we read the signs, the player sits down and begins to row when we move sideways in the boat.
Bez tytułu.jpg

:p I make this first work wery nice :)

Second sugestion... Transparent waterfall ;)
Bez tytułu.jpg
Third Sugestion... Randomly and not randomly (easy to change) weather conditions like RAIN, SNOW, FALLING LEAVES. Random everywhere when we want, selectable and easy to set up with configurable amount of precipitation, amount of guantities, rate of precipitation (rain, snow and leaves).

END OF SUGGESTIONS :) FOR TODAY :p
 
Last edited:

FoxyOfJungle

Kazan Games
Good Work.
And suggestions. :)

First sugestion... Boat on water. When we enter it, you cannot see a piece of us (i.e. legs). It moves on its own but reaching its end you can change its direction. The second one does not move by itself until we reach either end, and stops in the middle. Third change to player animation for rowing for example. We jump to it and only after pressing, for example, the key that we read the signs, the player sits down and begins to row when we move sideways in the boat.
View attachment 37573

:p I make this first work wery nice :)

Second sugestion... Transparent waterfall ;)
View attachment 37572
Third Sugestion... Randomly and not randomly (easy to change) weather conditions like RAIN, SNOW, FALLING LEAVES. Random everywhere when we want, selectable and easy to set up with configurable amount of precipitation, amount of guantities, rate of precipitation (rain, snow and leaves).

END OF SUGGESTIONS :) FOR TODAY :p
Wow! Thanks for the suggestions, I will put this on my Roadmap :)
Your game is very beautiful, even 🙂
 
Top