Aditya_Himarwan

Villager
Member
Joined
Sep 19, 2019
Messages
16
Reaction score
3
First Language
Indonesia
Primarily Uses
RMMV
Hi guys! So, in this game I'm making, I try to reduce variable energy if the player walk or dash. I use this command in my common event while walking.png
However, when I test the game, each step decreases CurrentEnergy variable by 30. Can someone help me out? Maybe it is related with my scriptcall? Thanks in advance!
 

slimmmeiske2

Little Red Riding Hood
Global Mod
Joined
Sep 6, 2012
Messages
9,000
Reaction score
5,888
First Language
Dutch
Primarily Uses
RMXP

I've moved this thread to MV Support. Thank you.

 

ShadowDragon

Realist
Veteran
Joined
Oct 8, 2018
Messages
4,495
Reaction score
1,723
First Language
Dutch
Primarily Uses
RMMV
as it states atm, it should work, however, it keeps going, event if
the variable = 0 to -1, -2 etc and you can keep running.

there is no failsave for it like:
fi: var 2 <= 0
var 2 = 0
end

but still, you need to stop this or set movement also to something else
or no movement untill player can move.

another option is aslo, that something else is using variable 2?
or it should work normally.
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
33,879
Reaction score
8,587
First Language
German
Primarily Uses
RMMV
your problem is that the parallel is executed once per frame, that is sixty times per second.
"is moving" only checks if the actor is moving, not how many steps were taken.
since it needs about half a second to complete the step, that costs you many points.

you basically need to check the position and remember the last position - if the coordinates have changed, then count for full step and update old position to not count again until next step.
 

caethyril

^_^
Global Mod
Joined
Feb 21, 2018
Messages
2,828
Reaction score
2,164
First Language
EN
Primarily Uses
RMMZ
Like Andar says, your Parallel event will process once per frame while switch 1 is turned on. Times taken for various move speeds are noted in this thread: link. The default player move speed is 4 (16 frames per step); if moving at speed 3, 1 tile of movement will take 32 frames and make $gamePlayer.isMoving() be true for 31 frames (final frame is at destination).

If you'd like to run something once per step instead, you can do a step count check each frame, e.g.
Code:
◆Comment:Get difference between stored step count and current step count
◆Control Variables:#0015 Step Count -= Steps
◆Comment:Has it changed since last check?
◆If:Step Count ≠ 0
  ◆Comment:It has changed!
  ◆Comment:Do things here that happen once per step
  ◆Show Balloon Icon:Player, Light Bulb
  ◆
:End
◆Comment:Store current step count in variable for next check~
◆Control Variables:#0015 Step Count = Steps
◆Comment:Check again in 6 frames
◆Wait:6 frames
[Edit: Steps can be found under Game Data > Other > Steps.]

...or you could use a plugin like this to toggle a parallel event's switch on step:
In case it helps, I made a concept demo for a no-plugin stamina system a while ago, here's a link:
 
Last edited:

Aditya_Himarwan

Villager
Member
Joined
Sep 19, 2019
Messages
16
Reaction score
3
First Language
Indonesia
Primarily Uses
RMMV
as it states atm, it should work, however, it keeps going, event if
the variable = 0 to -1, -2 etc and you can keep running.

there is no failsave for it like:
fi: var 2 <= 0
var 2 = 0
end

but still, you need to stop this or set movement also to something else
or no movement untill player can move.

another option is aslo, that something else is using variable 2?
or it should work normally.
I'm sorry for not understanding this. If you could explain it to me again, that would be very much appreciated.
your problem is that the parallel is executed once per frame, that is sixty times per second.
"is moving" only checks if the actor is moving, not how many steps were taken.
since it needs about half a second to complete the step, that costs you many points.

you basically need to check the position and remember the last position - if the coordinates have changed, then count for full step and update old position to not count again until next step.
Oh i see, the problem is on the framerate. It would be very great if you can explain how to check and remember the last position. Thank you Andar!
Like Andar says, your Parallel event will process once per frame while switch 1 is turned on. Times taken for various move speeds are noted in this thread: link. The default player move speed is 4 (16 frames per step); if moving at speed 3, 1 tile of movement will take 32 frames and make $gamePlayer.isMoving() be true for 31 frames (final frame is at destination).

If you'd like to run something once per step instead, you can do a step count check each frame, e.g.
Code:
◆Comment:Get difference between stored step count and current step count[/INDENT][/INDENT]
[INDENT][INDENT]◆Control Variables:#0015 Step Count -= Steps[/INDENT][/INDENT]
[INDENT][INDENT]◆Comment:Has it changed since last check?[/INDENT][/INDENT]
[INDENT][INDENT]◆If:Step Count ≠ 0[/INDENT][/INDENT]
[INDENT][INDENT]  ◆Comment:It has changed![/INDENT][/INDENT]
[INDENT][INDENT]  ◆Comment:Do things here that happen once per step[/INDENT][/INDENT]
[INDENT][INDENT]  ◆Show Balloon Icon:Player, Light Bulb[/INDENT][/INDENT]
[INDENT][INDENT]  ◆[/INDENT][/INDENT]
[INDENT][INDENT]:End[/INDENT][/INDENT]
[INDENT][INDENT]◆Comment:Store current step count in variable for next check~[/INDENT][/INDENT]
[INDENT][INDENT]◆Control Variables:#0015 Step Count = Steps[/INDENT][/INDENT]
[INDENT][INDENT]◆Comment:Check again in 6 frames[/INDENT][/INDENT]
[INDENT][INDENT]◆Wait:6 frames
...or you could use a plugin like this to toggle a parallel event's switch on step:
In case it helps, I made a concept demo for a no-plugin stamina system a while ago, here's a link:
Thanks for your detailed response! Sadly, somehow the plugin freeze my game immediately. I tried to copy and paste your stamina common event system, and adjust the variables and switches accordingly, but it also freeze my game. For your posted parallel common event, I don't understand how these lines of algorithm can check my step count. And as I would expect, the value of variable 'CurrentEnergy' did not decrease at all. Would you be so kind to explain it to me in detail?

Edit : Just found out the 'steps' in control variables -> game data. I thought it was another variable altogether. Sorry for being dumb
 

caethyril

^_^
Global Mod
Joined
Feb 21, 2018
Messages
2,828
Reaction score
2,164
First Language
EN
Primarily Uses
RMMZ
Oh yes, sorry, I should have mentioned it's in Game Data > Other > Steps. I'll edit that in for future readers, good to hear you found it~ :kaothx:

When you say "freeze", do you mean:
  1. The game stopped visually updating or responding to any input (0 framerate)?
    • This sounds like a Loop without a Wait or Break Loop command, i.e. the game is trying to complete infinite commands in one frame. Check your project's events: you might have a problematic event that you forgot about that is linked to the switch you're using.

  2. The game stopped responding to user input (movement, menu, etc) but otherwise seemed OK?
    • This sounds like an Autorun event: again, check the events on that map and/or all your common events. Autorun will suspend player input and trigger repeatedly while active; use Parallel for background tasks.
Also, did it freeze as soon as the map loaded, or only when you moved to another tile? You can show a framerate widget by pressing F2 during play, in case that helps.

The freezing is probably worth investigating even if your original problem is solved. :kaoswt:
 

Aditya_Himarwan

Villager
Member
Joined
Sep 19, 2019
Messages
16
Reaction score
3
First Language
Indonesia
Primarily Uses
RMMV
Oh yes, sorry, I should have mentioned it's in Game Data > Other > Steps. I'll edit that in for future readers, good to hear you found it~ :kaothx:

When you say "freeze", do you mean:
  1. The game stopped visually updating or responding to any input (0 framerate)?
    • This sounds like a Loop without a Wait or Break Loop command, i.e. the game is trying to complete infinite commands in one frame. Check your project's events: you might have a problematic event that you forgot about that is linked to the switch you're using.

  2. The game stopped responding to user input (movement, menu, etc) but otherwise seemed OK?
    • This sounds like an Autorun event: again, check the events on that map and/or all your common events. Autorun will suspend player input and trigger repeatedly while active; use Parallel for background tasks.
Also, did it freeze as soon as the map loaded, or only when you moved to another tile? You can show a framerate widget by pressing F2 during play, in case that helps.

The freezing is probably worth investigating even if your original problem is solved. :kaoswt:
Hello, caethyril, sorry for the very late response, (and mods, please notice me if this considered necroposting), and the kind of 'freeze' I was getting was number 1 (0 framerate).

And, sooo, after not touching my game for a long time, I decided to use YEP Dash Plugin. But a problem occurs again : I can't dash after stamina reach zero (which is what I hope), but then when stamina regenerate and reach certain point, I still can't dash. Would anyone be so kind to comment on my algorithms. Thanks!

◆Control Variables:#0022 Step Count -= Steps
◆If:Step Count ≠ 0
◆If:Script:$gamePlayer.isDashing()
◆If:Stamina > 0
◆Control Variables:#0008 Stamina -= 1.33
◆Control Variables:#0002 Current Energy -= 1
◆Control Variables:#0028 Time to Exhaustion += 0.5

:Else
◆Control Variables:#0008 Stamina = 0
◆If:Stamina ≥ 30
◆Plugin Command:EnableDashing

:Else
◆Plugin Command:DisableDashing

:End

:End

:Else
◆If:Script:$gamePlayer.isMoving()
◆If:Stamina > 0
◆Control Variables:#0008 Stamina -= 0.5
◆Control Variables:#0002 Current Energy -= 0.5

:Else
◆Control Variables:#0008 Stamina = 0
◆If:Stamina ≥ 30
◆Plugin Command:EnableDashing

:Else
◆Plugin Command:DisableDashing

:End

:End

:End

:End

:Else
◆If:Stamina < 100
◆Control Variables:#0008 Stamina += 0.75

:Else
◆Control Variables:#0008 Stamina = 100

:End

:End
 

caethyril

^_^
Global Mod
Joined
Feb 21, 2018
Messages
2,828
Reaction score
2,164
First Language
EN
Primarily Uses
RMMZ
I think necroposting is OK if it's your own thread, no worries! :kaohi:

I see a few problems here:
  1. Use integers! Maximum stamina doesn't have to be 100.

    You're using Control Variables -> Script to add/subtract non-integer values. But the game variables round number results down to an integer, e.g. +0.5 is the same as +0. Integers also avoid binary <-> decimal rounding errors, e.g.
    • 0.1 + 0.2 = 0.30000000000000004 :kaoback:

  2. You have two places where you enable/disable dashing, both of them look like this:

    ◆Control Variables:#0008 Stamina = 0
    ◆If:Stamina ≥ 30
    ◆Plugin Command:EnableDashing
    :Else
    ◆Plugin Command:DisableDashing
    :End

    Stamina gets set to 0, so that Stamina ≥ 30 condition immediately afterwards will never be true. :kaoswt: Also, you probably want to do the check each frame (or at least each step) even when the player is not moving or dashing.

  3. You check $gamePlayer.isMoving(), which will return false whenever the player sprite coordinates are an integer, i.e. once per tile of movement. This can be noticeable if dashing multiple tiles: you'll get a free frame of "standing" recovery every tile.

    This is the movement check used in the demo:

    var p = $gamePlayer, d = p.getInputDirection(); p.isMoving() || (d > 0 && p.canPass(p.x, p.y, d)) || $gameTemp.isDestinationValid()

    I.e. check if the player is moving or has received move input this frame. It's complicated because the player updates after events, i.e. an event only ever sees where the player was the previous frame. :kaoslp:

Here's the Stamina System common event from my demo (probably easier to read in the demo):
Code:
◆Comment:Stamina system, modifies speed directly rather than toggling dash mode.
:       :Compatible with forced move routes.
:       :Does not require a plugin.
:       :Toggled by shift key (see Conditional Branch).
◆Comment:----------------------------------------------------------------------
◆Comment:Default speed 4.
:       :Set using script call so it doesn't interfere with player movement.
◆Script:$gamePlayer.setMoveSpeed(4);
◆Comment:Check if player is currently moving.
◆If:Script:var p = $gamePlayer, d = p.getInputDirection(); p.isMoving() || (d > 0 && p.canPass(p.x, p.y, d)) || $gameTemp.isDestinationValid()
  ◆Control Switches:#0003 Moving = ON
  ◆
:Else
  ◆Control Switches:#0003 Moving = OFF
  ◆
:End
◆Comment:Check if breathlessness has worn off.
◆If:Breathless is ON
  ◆Comment:Re-enable dashing after regaining some stamina
  ◆If:Stamina ≥ 150
    ◆Control Switches:#0002 Breathless = OFF
    ◆Plugin Command:EnableDashing
    ◆Comment:Undo opacity change (see below)
    ◆Move Picture:#6, Upper Left (598,22), (50%,100%), 255, Normal, 1 frame
    ◆
  :End
  ◆
:End
◆Comment:Update stamina based on current motion.
◆If:Moving is ON
  ◆If:Breathless is OFF
    ◆If:Button [Shift] is pressed down
      ◆Comment:Dashing!
      ◆Script:$gamePlayer.setMoveSpeed(5);
      ◆Control Variables:#0001 Stamina -= 8
      ◆
    :Else
      ◆Comment:Walking!
      ◆Control Variables:#0001 Stamina += 2
      ◆
    :End
    ◆
  :Else
    ◆Comment:Walking! (Out of breath.)
    ◆Control Variables:#0001 Stamina += 2
    ◆
  :End
  ◆
:Else
  ◆Comment:Standing!
  ◆Control Variables:#0001 Stamina += 5
  ◆
:End
◆Comment:Apply min/max stamina
◆If:Stamina ≤ 0
  ◆Control Variables:#0001 Stamina = 0
  ◆Comment:Also become out of breath at zero stamina, which disables dashing
  ◆Control Switches:#0002 Breathless = ON
  ◆Comment:Let's make the gauge 50% transparent while recovering!
  ◆Move Picture:#6, Upper Left (598,22), (0%,100%), 128, Normal, 1 frame
  ◆Comment:And make the player character show some emotion~
  ◆Show Balloon Icon:Player, Sweat
  ◆
:Else
  ◆If:Stamina > 300
    ◆Control Variables:#0001 Stamina = 300
    ◆
  :End
  ◆
:End
◆Comment:Rescale the stamina gauge to reflect current stamina value!
:       :Via script call to avoid a tedious number of branches. >_>
◆Comment:Script vars:
:       : - picId        is the ID of the picture you're using
:       : - duration     is how many frames the picture takes to rescale
:       : - fullScale    is the width scale of the gauge picture when full (100 = "100%")
:       : - staminaVarId is the ID of the game variable used for stamina
:       : - staminaMax   is the maximum value of the stamina variable
◆Script:var picId = 6, duration = 6, fullScale = 100;
:      :var staminaVarId = 1, staminaMax = 300;
:      :// Change the above values as needed //
:      :var scale = $gameVariables.value(staminaVarId) / staminaMax;
:      :var pic = $gameScreen.picture(picId);
:      :pic._duration = duration;
:      :pic._targetScaleX = fullScale * scale;
◆Comment:Repeat again in 1/10 second = 6 frames.
◆Wait:6 frames
The event splits neatly into several stages:
  • Comment:Check if player is currently moving.
    • I use the script check once here and turn a switch on/off. Makes things look a bit neater~
  • Comment:Check if breathlessness has worn off.
    • This is the "Enable Dashing" part!
  • Comment:Update stamina based on current motion.
    • This is where the stamina variable gets adjusted.
  • Comment:Apply min/max stamina
    • This is also the "Disable Dashing" part! (If at or below 0 stamina.)
  • Comment:Rescale the stamina gauge to reflect current stamina value!
    • This part is for the stamina gauge (picture).
Hope that helps! :kaojoy:
 
Last edited:

Aditya_Himarwan

Villager
Member
Joined
Sep 19, 2019
Messages
16
Reaction score
3
First Language
Indonesia
Primarily Uses
RMMV
I think necroposting is OK if it's your own thread, no worries! :kaohi:

I see a few problems here:
  1. Use integers! Maximum stamina doesn't have to be 100.

    You're using Control Variables -> Script to add/subtract non-integer values. But the game variables round number results down to an integer, e.g. +0.5 is the same as +0. Integers also avoid binary <-> decimal rounding errors, e.g.
    • 0.1 + 0.2 = 0.30000000000000004 :kaoback:

  2. You have two places where you enable/disable dashing, both of them look like this:

    ◆Control Variables:#0008 Stamina = 0
    ◆If:Stamina ≥ 30
    ◆Plugin Command:EnableDashing
    :Else
    ◆Plugin Command:DisableDashing
    :End

    Stamina gets set to 0, so that Stamina ≥ 30 condition immediately afterwards will never be true. :kaoswt: Also, you probably want to do the check each frame (or at least each step) even when the player is not moving or dashing.

  3. You check $gamePlayer.isMoving(), which will return false whenever the player sprite coordinates are an integer, i.e. once per tile of movement. This can be noticeable if dashing multiple tiles: you'll get a free frame of "standing" recovery every tile.

    This is the movement check used in the demo:

    var p = $gamePlayer, d = p.getInputDirection(); p.isMoving() || (d > 0 && p.canPass(p.x, p.y, d)) || $gameTemp.isDestinationValid()

    I.e. check if the player is moving or has received move input this frame. It's complicated because the player updates after events, i.e. an event only ever sees where the player was the previous frame. :kaoslp:

Here's the Stamina System common event from my demo (probably easier to read in the demo):
Code:
◆Comment:Stamina system, modifies speed directly rather than toggling dash mode.[/INDENT]
[INDENT]:       :Compatible with forced move routes.[/INDENT]
[INDENT]:       :Does not require a plugin.[/INDENT]
[INDENT]:       :Toggled by shift key (see Conditional Branch).[/INDENT]
[INDENT]◆Comment:----------------------------------------------------------------------[/INDENT]
[INDENT]◆Comment:Default speed 4.[/INDENT]
[INDENT]:       :Set using script call so it doesn't interfere with player movement.[/INDENT]
[INDENT]◆Script:$gamePlayer.setMoveSpeed(4);[/INDENT]
[INDENT]◆Comment:Check if player is currently moving.[/INDENT]
[INDENT]◆If:Script:var p = $gamePlayer, d = p.getInputDirection(); p.isMoving() || (d > 0 && p.canPass(p.x, p.y, d)) || $gameTemp.isDestinationValid()[/INDENT]
[INDENT]  ◆Control Switches:#0003 Moving = ON[/INDENT]
[INDENT]  ◆[/INDENT]
[INDENT]:Else[/INDENT]
[INDENT]  ◆Control Switches:#0003 Moving = OFF[/INDENT]
[INDENT]  ◆[/INDENT]
[INDENT]:End[/INDENT]
[INDENT]◆Comment:Check if breathlessness has worn off.[/INDENT]
[INDENT]◆If:Breathless is ON[/INDENT]
[INDENT]  ◆Comment:Re-enable dashing after regaining some stamina[/INDENT]
[INDENT]  ◆If:Stamina ≥ 150[/INDENT]
[INDENT]    ◆Control Switches:#0002 Breathless = OFF[/INDENT]
[INDENT]    ◆Plugin Command:EnableDashing[/INDENT]
[INDENT]    ◆Comment:Undo opacity change (see below)[/INDENT]
[INDENT]    ◆Move Picture:#6, Upper Left (598,22), (50%,100%), 255, Normal, 1 frame[/INDENT]
[INDENT]    ◆[/INDENT]
[INDENT]  :End[/INDENT]
[INDENT]  ◆[/INDENT]
[INDENT]:End[/INDENT]
[INDENT]◆Comment:Update stamina based on current motion.[/INDENT]
[INDENT]◆If:Moving is ON[/INDENT]
[INDENT]  ◆If:Breathless is OFF[/INDENT]
[INDENT]    ◆If:Button [Shift] is pressed down[/INDENT]
[INDENT]      ◆Comment:Dashing![/INDENT]
[INDENT]      ◆Script:$gamePlayer.setMoveSpeed(5);[/INDENT]
[INDENT]      ◆Control Variables:#0001 Stamina -= 8[/INDENT]
[INDENT]      ◆[/INDENT]
[INDENT]    :Else[/INDENT]
[INDENT]      ◆Comment:Walking![/INDENT]
[INDENT]      ◆Control Variables:#0001 Stamina += 2[/INDENT]
[INDENT]      ◆[/INDENT]
[INDENT]    :End[/INDENT]
[INDENT]    ◆[/INDENT]
[INDENT]  :Else[/INDENT]
[INDENT]    ◆Comment:Walking! (Out of breath.)[/INDENT]
[INDENT]    ◆Control Variables:#0001 Stamina += 2[/INDENT]
[INDENT]    ◆[/INDENT]
[INDENT]  :End[/INDENT]
[INDENT]  ◆[/INDENT]
[INDENT]:Else[/INDENT]
[INDENT]  ◆Comment:Standing![/INDENT]
[INDENT]  ◆Control Variables:#0001 Stamina += 5[/INDENT]
[INDENT]  ◆[/INDENT]
[INDENT]:End[/INDENT]
[INDENT]◆Comment:Apply min/max stamina[/INDENT]
[INDENT]◆If:Stamina ≤ 0[/INDENT]
[INDENT]  ◆Control Variables:#0001 Stamina = 0[/INDENT]
[INDENT]  ◆Comment:Also become out of breath at zero stamina, which disables dashing[/INDENT]
[INDENT]  ◆Control Switches:#0002 Breathless = ON[/INDENT]
[INDENT]  ◆Comment:Let's make the gauge 50% transparent while recovering![/INDENT]
[INDENT]  ◆Move Picture:#6, Upper Left (598,22), (0%,100%), 128, Normal, 1 frame[/INDENT]
[INDENT]  ◆Comment:And make the player character show some emotion~[/INDENT]
[INDENT]  ◆Show Balloon Icon:Player, Sweat[/INDENT]
[INDENT]  ◆[/INDENT]
[INDENT]:Else[/INDENT]
[INDENT]  ◆If:Stamina > 300[/INDENT]
[INDENT]    ◆Control Variables:#0001 Stamina = 300[/INDENT]
[INDENT]    ◆[/INDENT]
[INDENT]  :End[/INDENT]
[INDENT]  ◆[/INDENT]
[INDENT]:End[/INDENT]
[INDENT]◆Comment:Rescale the stamina gauge to reflect current stamina value![/INDENT]
[INDENT]:       :Via script call to avoid a tedious number of branches. >_>[/INDENT]
[INDENT]◆Comment:Script vars:[/INDENT]
[INDENT]:       : - picId        is the ID of the picture you're using[/INDENT]
[INDENT]:       : - duration     is how many frames the picture takes to rescale[/INDENT]
[INDENT]:       : - fullScale    is the width scale of the gauge picture when full (100 = "100%")[/INDENT]
[INDENT]:       : - staminaVarId is the ID of the game variable used for stamina[/INDENT]
[INDENT]:       : - staminaMax   is the maximum value of the stamina variable[/INDENT]
[INDENT]◆Script:var picId = 6, duration = 6, fullScale = 100;[/INDENT]
[INDENT]:      :var staminaVarId = 1, staminaMax = 300;[/INDENT]
[INDENT]:      :// Change the above values as needed //[/INDENT]
[INDENT]:      :var scale = $gameVariables.value(staminaVarId) / staminaMax;[/INDENT]
[INDENT]:      :var pic = $gameScreen.picture(picId);[/INDENT]
[INDENT]:      :pic._duration = duration;[/INDENT]
[INDENT]:      :pic._targetScaleX = fullScale * scale;[/INDENT]
[INDENT]◆Comment:Repeat again in 1/10 second = 6 frames.[/INDENT]
[INDENT]◆Wait:6 frames
The event splits neatly into several stages:
  • Comment:Check if player is currently moving.
    • I use the script check once here and turn a switch on/off. Makes things look a bit neater~
  • Comment:Check if breathlessness has worn off.
    • This is the "Enable Dashing" part!
  • Comment:Update stamina based on current motion.
    • This is where the stamina variable gets adjusted.
  • Comment:Apply min/max stamina
    • This is also the "Disable Dashing" part! (If at or below 0 stamina.)
  • Comment:Rescale the stamina gauge to reflect current stamina value!
    • This part is for the stamina gauge (picture).
Hope that helps! :kaojoy:
Hey! Thank you caethyril for all of that. I'm gonna try that and let you know if that works for me!
 

Latest Threads

Latest Posts

Latest Profile Posts

I want to learn Javascript to create a custom menu, but I don't really know where to start.
One uncomfortable truth that has withstood the test of time, is how most people will stand by while they see a crime happening, unless it's illegal to stand by. We probably wouldn't have stories about "special heroes" or games about heroes if the "everyday common folk" were largely capable of being heroes. Heroes face dangers that most people are not willing to.
I'm having toooo much fun designing the new MP (Mental Psyche) system. I've only worked it out for enemies so far, but it's fun to stun them, then go after their MP and delete them instead to farm for better item drops.
anyone know of a place I can promote my game? sorta like game awards but for indie devs, like a place where I can drop a trailer and like stir up some hype
Doing RPG Maker News for 17th October 2021

Forum statistics

Threads
115,882
Messages
1,093,696
Members
151,126
Latest member
LAB00M
Top