SST1337

Member
Jan 29, 2019
141
420
Teravisor
My thoughts exactly. I had the same suspicion that it was applied in unnecessary instances over from Khas, but just as you said my RPGM experience is limited as well(I got it literally a week ago for the purposes of editing, and while I'm getting around to operation, despite my familiarity with the code it uses I'm still stumped on how it handles separate data and my attempts to translate rvdata2 to native text have failed too)

Edit: I forgot to mention that it's not just the visuals. As you have seen, dependencies are all over the place running at the same time which causes a strain on the engine itself. But such optimization is unlikely during the dev phase, let alone to consolidate them.
 
Last edited:

Teravisor

Member
Jan 23, 2020
178
304
I'm still stumped on how it handles separate data and my attempts to translate rvdata2 to native text have failed too
Either use rvpacker
or in case you cannot install it because its dependency 'psyche' is.. uh.. not windows friendly you can use little gem that's half hidden

instructions on where to get dependency 'RPG' were somehow deleted so you can see them in revisions on top.

But in most cases you don't need it:
MonsterLib.rvdata2 is literally built using scripts within Scripts.rvdata2 from json files
Scripts.rvdata2 and all MapXXX.rvdata2 you can see in rpgmaker if you open lonaRPG using it
 
Last edited:
  • Like
Reactions: SST1337

ace10102

New Member
Nov 14, 2018
3
14
Teravisor
417 has noticed your interest and has expressed that he is genuinely impressed with your ability.
He wishes to facilitate your efforts towards making the game the best version of itself.
I may be playing proxy for 417 for a bit, me and whoever else he can convince to relay information when he feels he needs to, at least until some of the undesirables move on and he feels comfortable rejoining the f95 community to willingly pirate out his own game for the enjoyment of us degenerates.
 

SST1337

Member
Jan 29, 2019
141
420
Either use rvpacker
or in case you cannot install it because its dependency 'psyche' is.. uh.. not windows friendly you can use little gem that's half hidden

instructions on where to get dependency 'RPG' were somehow deleted so you can see them in revisions on top.

But in most cases you don't need it:
MonsterLib.rvdata2 is literally built using scripts within Scripts.rvdata2 from json files
Scripts.rvdata2 and all MapXXX.rvdata2 you can see in rpgmaker if you open lonaRPG using it
Hey, thanks a lot! I can see what you mean by being not windows friendly lol but shouldn't be a problem to set up. Parser is actually easier to use. Yeah, some of them are plain to see but I wanted to check everything out, couldn't shake the feeling I'm missing something.
 

Setcheck64

Member
Jun 1, 2019
135
210
Other rpgmaker games with below 100 events on map don't slow down that much (tavern shows 89 events in my test). There's got to be something going on, but I can't simply set_trace_func like I did and see what's wrong. My experience with rpgmaker is limited to literally last week and there are no manuals on how graphic pipeline in rpgmaker works so no idea how to approach that. Only suspicion I have is that lonaRPG uses Khas light which adds light code to every Game_CharacterBase (so all 89 of events because Game_Event<Game_CharacterBase) so it might be doing extra work which isn't shown in trace log I'm checking because that script is packed in rvdata2.
OR I'm missing something. Which is probably the case.
Usually the latter end of my job is figuring out where the biggest losses of performance are in the software after we've done most of the bug fixing. I can tell immediately without even looking in the code though that this game is basically running commands on the main loop pretty much without a single pause, which can be great to make things more fast paced and challenging, but it also strains the engine quite a bit(for any engine). For example when NPCs aren't in combat do they really need to be random walking constantly or can we have them chill for a second? Some of these NPCs random walk so often and so fast it's actually difficult for me as a human to land a shot with a ranged weapon, because they keep switching places before the fight even began.(Random walking is also one of the worst ambient actions for NPCs to do too, because you can end up with 2-3 pathfind checks depending on where they managed to find themselves) Then we have the wolves which might as well be premonition ninja's with their ability to instantly overtake you and be exactly where you were going to be every single time.

Just adding a pause between each ambient CPU cycle would probably go a very long way to improving performance.
 

SST1337

Member
Jan 29, 2019
141
420
But it is a problem. At least I couldn't do it within 3 hours.
Christ, you weren't joking...But I did it. I did get the same problem with 'psych' and bundler is a pain honestly, I rechecked my
databases which are latest thinking it might be on my end. Btw msys2 was a bust, I tried it despite them using the older devkit. Before deciding to bundle, i wanted to try a separate build using the old devkit, so I sandboxed it using (at the time up-to-date bases) and it worked.
You don't have permission to view the spoiler content. Log in or register now.
 

Teravisor

Member
Jan 23, 2020
178
304
Usually the latter end of my job is figuring out where the biggest losses of performance are in the software after we've done most of the bug fixing.
Optimizing primary systems that won't change much can be done earlier if done in parallel by another person. Besides, optimization will bring more bugs that you will have to fix later anyway. Also if optimization requires adding some data to objects, it's better to add it before you have 100500 objects to retroactively add it later on, right?
I can tell immediately without even looking in the code though that this game is basically running commands on the main loop pretty much without a single pause, which can be great to make things more fast paced and challenging, but it also strains the engine quite a bit(for any engine).
You won't believe me, but ANY game is basically main loop that only pauses when it has free time after doing everything in loop (and, I assure you, RPGMaker does same pause to not do more FPS than it's told to). You cannot make any smooth movement in any other way. And as soon as you remove "turn-based" tag A.I. decisions need to be made in any random point in time and often need to do it every other frame to check if there's new hostile in sight.
For example when NPCs aren't in combat do they really need to be random walking constantly or can we have them chill for a second? Some of these NPCs random walk so often and so fast it's actually difficult for me as a human to land a shot with a ranged weapon, because they keep switching places before the fight even began.(Random walking is also one of the worst ambient actions for NPCs to do too, because you can end up with 2-3 pathfind checks depending on where they managed to find themselves)
Typical approach to NPC random walk that is used in like 70% cases (pseudo code):
val=rand(100)
if(0<val<50)stay_in_place()
if(50<val<100)move_to_random_tile()
in 25% more cases you don't move to random tile, but instead pathfind to random tile within range or objects npc wants to interact with.

2-3 pathfind checks are nothing for pc. 20 A.I. doing 2-3 pathfind checks are nothing for pc. Average modern pc can handle 500 units all pathfinding, being rendered and finding target to shoot at at same time. Even provided it's Ruby and not C++, that it's RPGMaker and half of rendering is software it still should pull 30 A.I. doing half of that at 60 FPS.
And in fact, when you see that in battle map with 5 A.I.s moving and searching/attacking you you get 50+ FPS easily. But in tavern where 2 A.I.s are moving and like 10 standing around and some events lying around you get 20-25 FPS - you know something is wrong not about A.I., am I wrong?
Just adding a pause between each ambient CPU cycle would probably go a very long way to improving performance.
And, in fact, my profiling shown me... This is not the case. A.I. uses very small amount of CPU time except for few problems, two of which I've highlighted before. Things that eat performance are mostly sprites and graphics updating (you cannot do it every other frame because that update is literally "frame").

As for exact numbers, approximate relation between Graphics.update : $game_player.update : @spriteset.update time consumed is approximately 5 : 2.5 : 5 out of which check_stat was around 1-1.5 inside $game_player.update; removing it gained few fps at 20 FPS (from 14-20 it went to 18-25), you can do maths and see that whole loop of just updating graphics is at least 30-40ms which already brings us to 60 FPS or below.

Christ, you weren't joking...But I did it. I did get the same problem with 'psych' and bundler is a pain honestly, I rechecked my
databases which are latest thinking it might be on my end. Btw msys2 was a bust, I tried it despite them using the older devkit. Before deciding to bundle, i wanted to try a separate build using the old devkit, so I sandboxed it using (at the time up-to-date bases) and it worked.
In my case in the end I hit makefile's "multiple target patterns", that I would need to dig up rake tool to install psych with corrected makefile through rakefile (sounds great already, ye?) and at same time I realized I might need to compile that yaml lib 64 bit myself so I just threw it out of window. Ain't wasting time on something that can be done 100500 times easier with one small ruby script.
 
Last edited:

CaiNanE

Active Member
Nov 19, 2018
536
983
.
I can't express how glad I am for this.. I just love looking at the in game credits now.. And "game.ini" and the png file inside "Text". I can't even spell the name out since my posts just gets deleted. I seem to be on some mods watchlist or smthng.. :rolleyes: Which is funny since there are far worse posts that are not deleted.. Which is totally fine by me.. :D

I'll look over the ENG text files and try starting a cleanup project. Perhaps do all those misspellings: Ruddersin, Luddersin, Rudesin, and so on. And make the punctuation, exlaimations, and questionmarks mirror the CHN version. I'll see what tomorrow gives. I may actually have to be on my workplace tomorrow.. :whistle:
 
Last edited:

ace10102

New Member
Nov 14, 2018
3
14
looks like someone's pulled a sneaky and usurped OP...
417's gonna be adding more names to the in-game undesirables list "credits" xD
 
  • Haha
Reactions: jaruh

Setcheck64

Member
Jun 1, 2019
135
210
Optimizing primary systems that won't change much can be done earlier if done in parallel by another person. Besides, optimization will bring more bugs that you will have to fix later anyway. Also if optimization requires adding some data to objects, it's better to add it before you have 100500 objects to retroactively add it later on, right?
Optimization done after the fact is done to clean up sloppy original coding(though you are right we are working on pre-release content so in effect we are correcting bugs and optimizing while the product is not yet fully released, so it is in parellel). However in the 6 years I've been doing this I've never had new bugs arise from optimization and the second half of each piece I work on is profiling and testing it for dramatic improvements(largely because we need to report how much cpu/gpu time was corrected and give detailed explanations for how it was corrected in much the same way we hand in bug reports with resulting corrections) so I would of ran headfirst into any bugs that resulted from it.

I brought up these points, because I have had multiple RPGmaker games where the problem was -definitely- too many events and more specifically, events which were left open that were executing for no reason.

You won't believe me, but ANY game is basically main loop that only pauses when it has free time after doing everything in loop (and, I assure you, RPGMaker does same pause to not do more FPS than it's told to). You cannot make any smooth movement in any other way. And as soon as you remove "turn-based" tag A.I. decisions need to be made in any random point in time and often need to do it every other frame to check if there's new hostile in sight.
What was the point of this statement? ALL software is a main loop, because the objective for everything in a computer is taking an input and giving an output. My statement wasn't to pause the main loop, my statement is NPCs do not need to be commanded to random walk for every second. It doesn't contribute to the challenge or immersion and I've played more games than this to know movement is perfectly fine when the NPCs aren't spamming right angle turns every other second. MOST professional games draw a point 2-3 tiles away and have them go to it precisely because it's immersion breaking to see enemies jumping left and right for no reason. Additionally the NPC sight checks are performed regardless if the AI is actively moving on the screen(I know you know this, but I guess we're at the level where we have to make obvious statements).

In particular when I opened all of the mobile AI this command is right at the top "return [:move_random] if tgt.nil?" and this is defined even for followers.

Typical approach to NPC random walk that is used in like 70% cases (pseudo code):
val=rand(100)
if(0<val<50)stay_in_place()
if(50<val<100)move_to_random_tile()
in 25% more cases you don't move to random tile, but instead pathfind to random tile within range or objects npc wants to interact with.

2-3 pathfind checks are nothing for pc. 20 A.I. doing 2-3 pathfind checks are nothing for pc. Average modern pc can handle 500 units all pathfinding, being rendered and finding target to shoot at at same time. Even provided it's Ruby and not C++, that it's RPGMaker and half of rendering is software it still should pull 30 A.I. doing half of that at 60 FPS.
And in fact, when you see that in battle map with 5 A.I.s moving and searching/attacking you you get 50+ FPS easily. But in tavern where 2 A.I.s are moving and like 10 standing around and some events lying around you get 20-25 FPS - you know something is wrong not about A.I., am I wrong?
Typical approach? We KNOW how he programmed it, the function is inside of Game_Character.rb
"def move_random
move_straight(2 + rand(4) * 2, false)
end"

It is also never the typical approach to use a 50% chance the NPC stands still for a random walk, in fact it's not even common that random walk is "true random". Most developers will put a sanity check to make sure immersion doesn't break for the user, otherwise a computer can and will pull 1 through 49, 50 times(statistics), resulting in an AI that just stands there lifeless. Absolute random for AI is hilarious and those are my favorite days of fixing bugs when I watch an AI fighting me spam "HEAL HEAL HEAL HEAL" while at full HP.

I cracked it open and yep RPGmaker does not even utilize any kind of pathfinding system at all(well I guess you could say it processes where they are on the screen at least, but that would be processed under graphics). In actual 3D games pathfinding is one of the most intense drains of resources on the system, but no such thing exists for RPGmaker.

I still don't regret getting rid of that spam of random walk, because I quite enjoy playing a stealth archer and the feeling of these enemies doing the when I'm trying to line up a shot is quite surreal.

And, in fact, my profiling shown me... This is not the case. A.I. uses very small amount of CPU time except for few problems, two of which I've highlighted before. Things that eat performance are mostly sprites and graphics updating (you cannot do it every other frame because that update is literally "frame").

As for exact numbers, approximate relation between Graphics.update : $game_player.update : @spriteset.update time consumed is approximately 5 : 2.5 : 5 out of which check_stat was around 1-1.5 inside $game_player.update; removing it gained few fps at 20 FPS (from 14-20 it went to 18-25), you can do maths and see that whole loop of just updating graphics is at least 30-40ms which already brings us to 60 FPS or below.
I really should be less lazy and use profiler rather than assume it's the same as previous scenarios.

I disabled the option for enemies to have lights on them and you're right, my FPS was 60 only occasionally dropping to upper 50's while I was moving.
 
Jun 18, 2020
102
16
It SHOULD be safe to just copy and paste the saves to the game directory as there were no modifications to prior content except some tweaks that can be changed on the go...yet, would you please tell us from which exactly version are you updating?
Do note that on the loading screen it could give a OUTDATED message on saves, you can still load and play them normally.
EDIT: Forgot to mention that if that version outdated stuff really bothers you, you can edit it safely in the save file (2 places).
From 4.06 to 4.2
And how to edit the savefile exactly ?
 

Rafelps

Newbie
Jul 14, 2020
22
2
how can i remove the slave mark of noer... bubbas steel store doesnt remove it, he just says leave my store lol
 

ace10102

New Member
Nov 14, 2018
3
14
assuming youre talking about the brand and not the shackles, you can get the brand removed at Elise's shop under the treatments section.
 
  • Like
Reactions: Rafelps

Lady_Yvraine

Newbie
Jul 7, 2020
69
70
how can i get another id paper? :)
Just south of Noer's North gate, speak to the guy at the table on the left. It costs quite a bit of money however, just sneak/lie your way in or go through the orkind's cave connected to the sewers if you don't mind losing a day.
 
  • Like
Reactions: Rafelps

jaruh

Member
May 1, 2017
130
90
So, what do i need to do to trigger the bleeding injurie stat? is like some rare event? specific for certain enemies? had been looking for it for a while without luck.
You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
 
Last edited:
4.10 star(s) 194 Votes