Skip to main content

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

RahiTuber

A lightweight yet highly customisable pngtuber app ยท By rahisaurus

Bug Reports Sticky

A topic by rahisaurus created Jul 31, 2024 Views: 997 Replies: 99
Viewing posts 1 to 25
Developer

Please post bug reports in here - you can also report them as issues on the GitHub repository (linked in the project info)

Developer (6 edits)

Known bugs & issues: 

  • All layer textures are kept in memory, which can be bad for performance when many layers of large textures (> 4K) are used
  • Special characters in RahiTuber's path (or texture paths) cause issues  - Hopefully fixed in version 11.43
  • Joystick trigger buttons are read as an axis by SFML (the framework I'm using) which means when both are pressed, they cancel out

we are noticing that when a controller hotkey is bound, or when no hotkey is bound due to unplugging the controller, our keyboard media keys activate whichever enabled state is at the top of the list, when an arbitrary standard keyboard key hotkey is set the media keys do not activate the state like normal (we use a wireless logitech media keyboard from like 2004)

Developer

Thanks for reporting this, I'll look into that. I don't have a keyboard with media keys so I'm not sure if I'll be able to find it, but I'll try!

in any case, if anyone else has this problem we just put a blank state at the top of the list so nothing will happen at least when we use our volume controls

Developer

I forgot i do actually have volume control buttons and they show the same issue, so I'll try to fix that! Handling controller inputs is so weird.

Developer

Hi, in version 11.2 I've added a checkbox to the States menu that will ignore axis inputs, and fixed the bug with media keys. Let me know if this works!

hmmmm we are noticing that if we flip ignore axis on it prevents the axis from being bound to the hotkey but we still can't bind a button on that controller until we center the axis.  Also, we're noticing some frame rate issues with the new version that idk is related.  We have a 165hz monitor but when we open the program it seems to shunt our entire display down to 120 which it runs without v sync and 60 with the vsync enabled.  the media keys thing is working good though!!!

Developer

Hi, thanks, others have also reported a slowdown. That's possibly to do with the new mouse hook i had to add to support mouse buttons, I'll see if i can speed that up asap.

Developer (2 edits)

Hi, please check version 11.3, this should fix the slowdown issue. For the "ignore axis" issue - it depends if you're trying to use the DPad. These register as an axis, not buttons (for some reason), so they'll get ignored.

check out this video we made (which youtube has decided is a short)

our issue is the checkbox prevents an axis from being bound when its on, but if we want to bind a button we still have to go through the process to center out a bunch of axis even with the box ticked, essentially with the box ticked and an axis is being detected it will block all binding completely (we checked and this behavior works the same when you hold an axis maxed while trying to bind a button on a standard controller)  also we really really appreciate you going through the effort to set this up since we know its a pretty edgy edge case just in case we come off as entitled!!!!
Developer

oh, you're right, I can see it happening now. I'll see if I can fix that!

Developer

Try version 11.31, I think I fixed it (it works with a gamepad anyway, that's all I have)!

(+1)

yes!!! it works!!!! thank you so much!!!!!! best day ever this will speed up our setup times so much!!!

I am having an issue with resizing the window, I don't know if its just me but it is really difficult to resize and once it is made smaller I cannot size it larger

Developer

Sorry to hear that. When the menu is showing you should see some squares in the corners which can be used to resize it, and while making it larger this won't visually be updated until you let go. 

In the future I can add some options to choose the type of window into a more standard resizable Windows-style one.

In the mean time, you can also set the window size by editing the config.xml file. 

Very sorry I can't help more right now, but I'll test and make sure everything's working as it should, and add the extra window options soon!

I did see that and it works great for re-sizing, but for some reason once I make it smaller it does not go bigger. 

I'll check out the xml :) 

Developer

I'll see if i can find the resizing bug, i don't currently see it on my end but I'll keep an eye out!

Developer(+1)

Hi, I've found the bug and fixed it in version 11.2, thanks for your patience!

Thanks! I am keeping with the version I have right now but I will download and start learning the new one 

When using controller, it won't let me hold both triggers and use both functions they have connected to them at the same time. The bumpers also seem to toggle things on and can't be toggled off.

I wanted to just use keyboard and mouse for these functions but I can't keybind anything to the mouse buttons so aaa.

Developer

Hi, 

Sorry yeah I'm aware controller support is awkward at best. I'm going to do a bunch of fixes to that as soon as I get the time.

Thanks for your patience and support!

Tis how it is. I hope fixing it goes smoothly. Btw, is there any way to make mouse clicks work as a trigger?

Developer

Not so far, but I'll try and add something in. The difficulty will be making sure the triggers don't mess things up while the mouse is being used in the menu.

Developer

Hi, in version 11.2 the bumpers should be fixed, and I've added mouse button support!

The triggers are an axis input (L is positive Z, R is negative Z) so when both are pressed they cancel out to 0. I can fix this at some point by adding XInput support but I haven't got there yet.

Oh my gosh <3 Thank you!

(2 edits)

Trying out the update and there does seem to be a bit of mouse lag when I have RahiTuber running and have Vsync. Not a pressing matter but just thought I'd let you know. 

Developer

Hi, thanks for letting me know, this is fixed in version 11.3!

I can't get RahiTuber to show up as a game capture. It lists it as an option, but nothing shows up.

Developer (1 edit)

This is more of an OBS bug than RahiTuber (assuming you use OBS).  For me, using a Window Capture instead of Game Capture, with the "windows 10 and up" method, works.

The newest version I downloaded today won't load anything, it seems stuck forever showing "Loading..." and not any of the usual UI for "Layer Set", Overwrite, Load, and the layers . Am I missing a step in running the program maybe? Both the 64 version and the regular version are doing this, and it behaves the same whether running as administrator or not
I'm using an older version that works just fine.

Developer

Thank you for bringing this to my attention, it should now be fixed in version 11.32!

I don't know if this is a bug or a feature request: While trying the latest mouse track, I found out that you can have a child layer (child as in "inherits movement") inherit a parent's mouse track, but mouse track won't work for any layer that inherits movement from another.
I think they should be stackable; so for example you can have separate mouse tracking for the head, face and pupils. Pupils inherit from face, which inherits from head and they all move with synched bounce, breathing, etc and individual limits.

Developer (2 edits)

Ooh, agreed. That's an oversight, i think i put the mouse movement too early in my code so the motion inheritance overwrites it. 

I can probably fix that tonight!

-Edit - done! (ver 11.41)

(+1)

Thanks! That was fast! :D

I can't seem to record directional pad button press on my controller for states, all the other buttons seem to work fine. Looking my controller settings, it seems that the dpad is read as the Point of View Hat (I'm pressing up on the dpad here) and not as a numbered button, which might be the reason why.

I'm using a PS4 controller if it matters, I also tried with a 360 controller and that also reads the dpad as point of view hat

Developer

This is true, as a strange quirk of SFML, the dpad is recorded as an axis.

This means that if you disable axis inputs, you won't be able to record it as a hotkey.

If you haven't disabled axis inputs, they should all be working?

Ah ok, That probably would work, my controller seems to have a tiny amount of joystick drift, so when I try to record without disabled axis input, it immediately records the joystick. I may just need to look into a different controller or do some maintenance. Thank you for the help, I appreciate it!

Actually I was able to record dpad, I just had to have directional button pressed before I hit record. Thanks again for the advice!

Heya, I just updated from a version I downloaded 28/02/2024 (couldn't find a version number sorry) and I'm experiencing some weirdness when switching between two layers (in this case between a closed and open set of eyes for manual blinking). Switching from one layer to the other is instantenous, but then there's a delay when switching back again. 

It used to be instantaneous so I could blink rapidly, but now there seems to be some kind of articial delay that doesn't seem perfomance related, because other layers work fine.

Bit of a weird one happy to hop on discord or something to demonstrate. I'd really like to use the new features but might have to stay downgraded for a bit longer. 

Developer

Hi, sorry to hear that.

It may be a bug introduced by the changes to the states menu since you last updated. Deleting and re-creating the state might help, if you want to try that.

If that doesn't work, please can you post a screenshot of the state you have set up to do the switching, and a screenshot of the state's entry (written as a "hotkey") from your layer set xml file?

Cheers!

I am unable to go into my documents tab to begin upload of my files. I only have two pictures but somehow I am unable to navigate any of the program without it shutting down.

Developer (1 edit)

Hi, do you have any non-english letters in your installation path? There's a known bug with that which can cause unexpected issues like this.

If you put RahiTuber in the location C:/RahiTuber and place your image sprite files in the same folder, that particular problem should be avoided. 

If the issue still happens let me know!

So far so good. I also can't make a desktop path. It's there any recommendation for that? 

Developer

It's likely a permissions thing. Running RahiTuber as administrator might help? I'll try to reproduce these permissions errors on my end and reduce crashes.

(1 edit)

There seems to be a bit of an issue with how Rahituber recognizes mouse movements. Particularly, changing programs that have different FPS (in the example in the video, going between the Fortnite lobby and in-game resulted in some weird jittery motions, especially in layers that have inherited motion. I don't know if the FPS different is actually the cause or not, but that situation where there is a program i have focused is changing between two states of a limited FPS and a free FPS seem to cause it. You can find an example in the video below! The clip about it starts about 1:35


Developer

I think the mouse movement being jumpy is a result of the game grabbing your mouse and forcing it to move to the center of the screen (or some other similar thing, games all do different stuff with the mouse and it's hard to account for).

RahiTuber directly translates your mouse's position on the screen into a position co-ordinate for the layer, so if the layer jitters, that means the mouse jitters. I'll try to add something to smooth any sudden jumps.

I had this bug where the last layer I was tinkering with would go to the bottom after clicking in an empty part of the layer manager, and I've managed to find what causes it.

It seems like the last layer stays somehow selected after clicking it and holding the mouse button for slightly too long made it as if I moved it to the bottom:

Developer(+1)

Hi, thanks for pointing this out, I'll look into it!

Developer(+1)

https://rahisaurus.itch.io/rahituber/devlog/839896/update-2024-11-25-v1152

Fixed!

Hi there! A friend of mine canโ€™t output his vtuber to Spout2, but other applications that output to Spout2 work just fine.

(For context: my own vtuber model done with the same method works like a charm)

If thereโ€™s any way you can help or contact me about the issue, that would be greatly appreciated!

Developer

Hi, sorry to hear that. You can contact me via discord @rahisaurus or at rahisaurus@gmail.com to share more details. 

If your friend is using the Linux version, spout2 support isn't there yet (and won't be until spout2 offer it themselves) - but on windows, see if the different architecture builds (RahiTuber.exe and RahiTuber_64.exe) have different results? Maybe it has to match whatever architecture OBS is using.

Hi Rahi!

My friend is using the windows version, both architectures return the exact same lack of an output in Spout2.

I have friended you on discord, if itโ€™s possible for you to contact me there, this problem can be resolved in a quicker amount of time than if it were done through Itch or emails.

Much appreciated for the timely response.

Its crashing upon Running in the latest and Ive tried all your fixes

Developer

Hi, I'm very sorry to hear that. Did you get a log file from the crash, and hopefully a .dmp file appeared too? 

Had you been using an older version that worked?

Are you using windows 11?

You can send those to my discord @rahisaurus or to rahisaurus@gmail.com. 

(1 edit)

When using my headset microphone as the audio input the app forces the headset to play back the mic input, muting everything else. This happens both on a build I got back in August and on the latest build.

Developer

This is a weird one, especially since there's no code in RahiTuber that connects to any audio output device. It's possible there's some confusion behind the scenes where something considers the headphones and the microphone to be the same device, but that really shouldn't be the case... I'll see if I can find anything, but I'm not sure I will because I don't have a headset that produces this problem.

Thanks for letting me know, I'll keep you posted.

I've come to believe this is more a problem with my laptop than with RahiTube itself. The same glitch happened with Vegas Pro 14 after rendering a video. No clue why still, but I doubt there's anything wrong with your code ยฏ\_(ใƒ„)_/ยฏ

Developer(+1)

Thanks for the update, good luck finding the solution!

Heya! I've been trying to diagnose why this isn't working but I've mapped some states to my controller and it works plenty fine when the program (rahituber) is in focus but the moment I tab back the game, the controller mapping stops working. I'm not sure if this is intended behavior or not with some restrictions the software might have but I feel like it'd be a bug since some games require window focus for controller inputs to work.

Developer (2 edits)

Sorry to hear that. I'm currently just using SFML's controller detection functionality but I may have to write my own using xinput if it gets too annoying.

Have you tried running RahiTuber as administrator? That sometimes helps. (the answer is yes for anyone reading, I caught her on stream).

This may or may not have already been reported but the program doesn't seem to play all that nice with mixed monitor scaling or just monitor scaling in general. I have a main 4K monitor at 200% scaling and a secondary 1080p monitor at 100% scaling and on the 4K monitor everything is WAY too tiny to use while on the 1080p monitor I can use the application but the output over spout2 looks really muddy in OBS. Is this a limitation of the UI toolkit being used here?

Developer

Ah monitor scaling... Yeah i need to check but i don't think imgui has any functionality for that. I might have to put something in manually.

As for spout2, what do you mean by muddy? Is it blurry?

Sorry for the late reply! Yeah it looks... blurry and odd. Probably caused by imgui not scaling correctly so the output is having that weird softness applied to the scaling in post

ive been having startup crashes when i moved the window into my second and 3rd monitor. If ive moved the window and exit while on a monitor that wasn't the 1st it would show a black screen with "program not responding" on task manager. Im unable to move the window as the "program unresponsive" pop up appears and there is no boarders to move the window.

 Seems so far that as long as i keep the window on the first monitor it starts up and works fine.

Turning the monitors off and attempting to start while previously on 2nd/3rd monitor does not fix it and i have to unzip a new version of the program.

Version 12 / running windows 10

Developer

Hi, as a faster workaround you can just delete config.xml and it will be recreated with default settings. Alternatively you can edit config.xml to set the window positions to 0 and keep your settings. 

I'm sorry you're experiencing this issue, I've tested on multiple monitors myself and had no problems yet so this one might be hard to catch. I'll try to add more logs and safeguarding around the window creation code.

(2 edits)

Hello! I'm not 100% sure if this counts as a bug, if I'm missing something, or I'm just trying to use states for something more intensive than they were meant for but any help would be much appreciated!
I'm trying to use states to make an reactive arcade stick for my avatar to use, but I'm having some trouble with some states sticking when things overlap, for example with diagonal inputs on the joystick or simultaneous button presses.

(of course it took longer to happen when i decided to record it lol) 

I have each joystick state set to just show the active directional layer and hide the neutral layer, and each button state to show the active button layer, and also hide other button layers along with the neutral layer. As you can see about halfway through the video, they both end up having a state stick. Is there anything i can do to fix this?

Okay so I tried one last thing that actually fixed this by setting 2 states per directional/button and State Passthrough, so right on the joystick activates 1 state that turns on the Right layer and a 2nd that turns off the Neutral layer, so now I'm doubly unsure if this is a bug report or now a feature request: Is it possible to make the original way i was doing it work, in order to have fewer total states?

Developer(+1)

Hi there, it should definitely be possible to both hide and show layers using the same state, and what we're seeing in your video definitely looks like a bug to me. I'll see what I can find!

Developer(+1)

Hi, please check update 13.2, it should be fixed!

(+1)

Works like a dream, you're amazing. Thank you for all your hard work!!

In previous versions transform rotation was inherited by child parts, but in the latest version (13.1) it doesn't work anymore. I don't know if it was intended, but it made adjusting rotation motions better (I used it to make an appendage rotate 6 degrees and offset it's rotation to -3 to make it centered).

While in the same topic, would it be possible to have an option to stop mouse tracking when the part is hidden? (I'd love to use empty layers to turn on-off mouse tracking of certain parts using states hehe).

Thanks โค

Developer

Thanks for letting me know, I'm not aware i changed anything to do with rotation inheritance in the latest update... I'm pretty sure I've tested multiple setups with inherited rotation too. Sorry to hear it's not working for your setup! Which was the previous version you used? 

Thanks for the idea about mouse tracking as well. 

I'll try to get a fix out asap!

(2 edits)

It worked in 12.0, but while making sure of it I've realized it only did if the rotated part was a non-inheriting parent (any child part would rotate independent of their own child parts)

Rotating a non-inheriting parent part in v12.0


Rotating a inheriting parent part in v12.0
Developer(+1)

Hi, please check update 13.2, it should be doing what you want now!

As far as I can tell both the rotation and the mouse tracking thing are working perfectly, you're the best ^^

Hello! Been playing with this and it's been a fantastic transition from learning/using a previous application, and the features on this one has been awesome.

So about the "Control States via HTTP", I noticed that when two windows are open, the web requests only apply on the first window that was opened.

Currently the method I trigger this is by Stream Deck via the "Web Requests" plugin, and this the configuration to make it work.

So it works, just when I open a second window, it continues to only work for the first window. I run two windows of two characters, so that's why I noticed this, haha. Couldn't find a way to DM to share directly.

Thank you again!

Developer (1 edit)

Hi, thanks for pointing this out. That is currently a limitation, but I'm not exactly sure _why_ ... I'm rather new to this kind of low-level network programming. Both instances of RahiTuber should have a listener open on the same port, so the problem is either: 

  • I'm unknowingly doing something illegal and the second listener never gets opened, or 
  • The first listener somehow consumes the request and the second listener never sees it

Will get back to you when i find out more!

(1 edit)

Sounds good, thank you! I don't know much about it, but what if each window could have it's own assignable port? If I set the first window to 8000 and the second window to 8001, would both listeners work?

I don't know if streaming applications can send two web requests with one action, but with Stream Deck, a button can be a multiaction and I could have two web requests tied to a button.

EDIT: So Streamer.bot works with the "Fetch URL" sub action, in case anybody is wondering about that.  And multiple sub-actions can be added, so if my above idea is a possibility, it could work.

Developer (1 edit)

Hi, thanks, I came to the same conclusion. For what it's worth, MixItUp can also do multiple requests in the same command.

I've added the capability to change the port, just checking if there's anything else I can quickly do to make this update more worth it before I upload ^^

Awesome, looking forward to it when it drops. I've been having fun setting it up. Twitch commands seem like a fun thing to let viewers change the outfit haha. I gotta actually stream more first tho. :P

Developer

Awesome setup idea!

Here's the update! https://rahisaurus.itch.io/rahituber/devlog/888986/update-2025-02-16-v133

Thank you! It's working and I have commands set up through Streamerbot and it's awesome.

https://i.imgur.com/8jC6vPJ.mp4

The only quirk is I think it's part of the global settings, so it doesn't save to the layer set. Not sure if I'm doing that wrong. But it's such a minor thing to adjust on my end when booting up the second window. 

Thank you again. :D

Developer (2 edits)

Yeah, I thought it made the most sense to be a global setting. 

If you want to keep your config and the most recently loaded layer set for both windows, you can copy the RahiTuber directory (so, running your second setup on a copied RahiTuber.exe in a new location) and then it'll have it's own config file .

(3 edits)

Yesterday I managed to do my initial idea of toggling between two mouse tracking states, but I've found some caveats in the way:

  1. My layers with mouse tracking inherit motion mostly in this way (-> = inherits from): Part -> Subtle Motion (no sprite) -> Exaggerated Motion (no sprite). Most of the exaggerated motions inherit from other parts in a branched way, it's a bit complicated :P. Alternating between the two motions work as expected, but today I tried hiding both layer groups to make a new "no tracking" state and it freezes the position of some parts, instead of returning them to the original position (some do return, but only if i go from subtle to no motion, and I don't know why only some of them do).
  2. While testing the states I noticed my HTTP requests were being irresponsive some times and I managed to fix it by using 127.0.0.1 instead of localhost. It may be a good idea to change the URL the program suggests (in the hint popup and the copy state option) or to include this info somewhere.
  3. If a state is deactivated from the state list (by unchecking it) and it's called using a HTTP request, it will halt all HTTP requests until that state is activated again.

I think that's all I've noticed, I'll let you know if I find any other weird things.

EDIT: Regarding #1, if I discard the "exaggerated motion" layers, then all positions reset properly, I think it may have something to do with stacking empty layers with mouse tracking. I'll try to use a 1x1 transparent image to see how that works later.

Developer(+1)

Ah, thanks for letting me know!

(1 edit)

Sadly the transparent sprite didn't work so I guess it must be a stacked mouse tracking issue, and I found a huge bug in the new Contrast theme: it's missing the "load"/"save" buttons in the dialogue boxes! ๐Ÿ˜…

UPDATE: I came up with a workaround for the mouse tracking: I made an intermediary, always on simple layer that sits between the two motions (Subtle -> Intermediary -> Exaggerated) and now things work as expected. So it's definitely a problem with consecutive mouse tracking inheriting.

I hope this helps.

Developer (2 edits)

Hi, I've already found and fixed the contrast theme issue ๐Ÿ˜‚ That's what I get for having windows with absolute pixel sizes instead of being based on the font size...

I also fixed the HTTP state blocking issue.

I've just tried replicating your setup with two empty layers that both have mouse tracking enabled, the inheritance goes like this:

someMoreMotion > someMotion > heart

https://imgur.com/dvpg4AM

I couldn't find any issues with this setup. Did I miss something?

Do all your layers have "hide with parent" turned off?

I did just notice that they don't stop tracking if they are visible themselves, but in a folder that gets hidden. Fixed that.

(3 edits)

I'm going to try to recreate the broken state and send the model to you. I did notice something weird with the folders, so I hide the contents too to be sure. (Sorry for a deleted reply earlier, I thought it fixed by itself while recreating it and it turned out I just deleted a folder and not it's contents ๐Ÿ˜“)

I've just tried replicating your setup with two empty layers that both have mouse tracking enabled, the inheritance goes like this:
someMoreMotion > someMotion > heart 
I couldn't find any issues with this setup.
Did I miss something?
Do all your layers have "hide with parent" turned off?

Yes, "hide with parent" is turned off and I believe that order is correct, but in my case someMoreMotion would probably inherit from another sprite that inherits from aDifferentMotion, etc... So maybe I'm stressing the software too much ๐Ÿ˜…

Developer(+1)

well, I like to be sure that people can create what they want, whether it's stressful or not ๐Ÿ˜

Developer

Hi, by the way - I think I found the reason for this, and hopefully fixed it in the v13.4 update. Let me know if it worked!

Thanks! I'll try the new version during the weekend and I'll let you know how it goes! ^^

It works!! Also, the Inheritance Graph is great! Thank you!
I've fixed my rotations too, I didn't know they were broken. I did set them up negative by feeling ๐Ÿ˜…

I've started checking the new changes and I think I've found a bug or two, I'll make a new post to keep this organized ๐Ÿ˜›

Good evening, I'm currently drawing a character to use in this program. I have all the parts of the character separated into layers to have better control and be able to customize it better. But now I'm noticing in these latest versions that if the character breathes (increases and reduces the scale) to create the "breathing" effect. But having the character separated by layers, there comes a point where the "breathing" frequency starts to vary slightly until it reaches the maximum point where all the parts of the character start to move individually until the frequencies synchronize and then the problem happens again. Could you put the breathing effect in the folders as well? This way I can remove the breathing effect from all the layers and only activate that effect in the folder that contains all my layers and in this way all the layers placed inside a group of folders would have the same breathing frequency. Apart from those details, excellent work with this software, I love it. Congratulations.

Developer

hi there, 

This is what Motion Inherit does. The idea is that you can set up your main layer (usually the body or torso or something) with the breathing effect, and then tell every other layer to inherit that motion.

Hope that helps!

(3 edits)

13.4 Bug Report incoming!

  1. Motion Inherit Stretch:
    1. I'm not sure this one is a bug. For clarity I'm going to call a horizontal stretch Squish and a vertical one Stretch.
      I've noticed it works like this: Left to Right and Down to Up cause a Stretch and the oposite movements cause a Squish effect (and the other way around when setting negative strength values).
      In a way, I find that effect weird for horizontal movements. I kind of expected it to do the same deformation when moving either left or right. But I also like the effect it has when moving vertically, I guess it resembles gravity in some way.
      Whether it's a bug or intentional, I'd like to be able to make one axis "symmetrical" (as in doing the same effect when moving left or right/up or down) if possible.
    2. When using this feature, child layers get slightly misaligned temporarily when the deformation is being applied. I've got the feeling it has something to do with how the Stretch effect stores the coordinates, like it needs more resolution, maybe (I exaggerated the settings and applied inherited rotation to be able to take this screenshot showing the misalignment. It's way more subtle/barely noticeable with normal settings).

      This doesn't happen with Stretch off.
  2. VSync/FPS Limit:
    When trying the new FPS limit I've found some performance issues with Vertical Sync.
    I use two screens, a main 120hz monitor and a second 60hz one (I run RahiTuber on this one). If I turn on VSync, the FPS get limited to 60 as expected and the GPU goes down, but the CPU usage stays the same. It only goes down to normal levels if I turn it off and manually limit the frames per second to 60.


    I did an experiment with no layers (to be sure of the bare performance) and VSync turned on in both 13.32 and 13.4 and... Yeah, something about it is eating the CPU now:

I'll update you if I notice anything else, for now I'll be squishing parts, I'm loving this feature hehe

Developer (2 edits)

Thanks for this info and the detailed reports! 

Hopefully these won't be causing people too many issues until i fix them. The vsync one is strange because i literally didn't change the vsync code ๐Ÿค”

The horizontal squishing is intentional, and it's based on where the pivot is in relation to the sprite center. If there's more "weight" on one side, thats the side that will lag behind.

However, currently with a centered pivot point, it does just pick the left side. I could definitely add something that when the X pivot is at 50%, horizontal stretch is symmetrical.

To be honest the misalignment isn't noticeable in a normal use case, but while playing with more exaggerated values I started seeing it and I cranked it all up to see what it was ๐Ÿ˜‚

The one that was annoying was the VSync because it worked perfectly before and at first I didn't understand why the CPU usage was so high all of the sudden. Oh also, in 13.32 and before, VSync On used to limit the frames to 60 in both my monitors and now it goes to 120 in my main, but I don't know if that's related and helps tracking the issue.

Oh that makes sense, I felt it was intentional. It would be great!

Developer

Vsync has no guarantee of frame rate, only that it aligns with your monitors refresh rate - so if it can fit two frames in before your monitor refreshes, I think it does that. 

The difference between this and the previous version is that previously, when vsync was enabled, I was also limiting the FPS to 60. I removed that in case people have high-refresh-rate monitors and want to see it at 120fps.

I'm using SFML for the rendering side of things, so i might need to take a deep dive into their implementation to find out why this has suddenly gone wrong...

Oh, so that's why it didn't go up to 120 before!

I've been investigating and it seems like it's a driver problem (NVIDIA in my case) and not a SFML one. Turning off "Threaded Optimization" in NVIDIA Control Panel solved it. I guess that's a partial win ๐Ÿ˜…

Going off on a slight tangent, I've noticed the FPS determine the physics movements and I came across this article that might be helpful to make them consistent 

I hope all of this helps!

Developer

thanks very much!