Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Lukan Peixe

26
Posts
1
Topics
6
Followers
3
Following
A member registered Aug 10, 2018 · View creator page →

Creator of

Recent community posts

I did see somewhere that the 60hz limitation was because of NTSC and powerline frequency (hence why I made that bad multimeter joke earlier). I personally like higher frequencies, but it's not my main concern.

I'll decide exactly what I'm going to do, but I'm going to avoid frame-based programming, to minimize these complications. However, I will continue with tests at 60fps to be closer to the experience most players have.

I'm going to have to come back to the topic of performance at some point, to avoid what happened in your experiment happening, the box method is something I'll be resorting to for sure.

Thanks again for this great conversation, it was a good learning experience! If I manage to finish this project as I want, your name will be in the thanks in the credits and I will give you a game key :)

If at some point you are launching a commercial game, talk to me too, depending on the situation, I can help a little with the promotion.

I knew superficially the concept of V-sync, but I didn't know that it only worked with fractions (/2). It makes sense when you think about the concept, which makes me understand the benefit and complexity of Free/G-Sync.

In the medium term, the way this game behaves on the Web won't matter so much, since the final version will have to compile an executable to be able to put it on Steam.

However, if I manage to get a publisher for the consoles, a port of the game would probably be done with a Unity browser running the HTML version of the game.

Anyway, maybe the V-sync is still in the executable. Would working with max frame 0 (unlimited) be a bad practice?

The monitor you used to test the game here at itch, is it 60hz?

(2 edits)

Yes, the game runs at the same resolution regardless of where I place the window or start running the application, however, I decided to go deeper with your new message, and I disabled all the videos and ran the game again. Result: both 60hz monitors ran the application at 60 frames, the 75hz monitor ran at 37.5 frames.

I forced monitor 75 to 60, and again, framerate was stable. In the same case, I let the game run at unlimited maximum frame rate, but again, stable at 60fps. In that case is it the counter that doesn't work or the game really doesn't pass 60fps?

EDIT: Additionally, with the 3 monitors active, game in 60fps max, I left monitor 1 at 50hz (1080p, not the main one, just port 1). I ran the game from monitor 2 (1440p, 60hz, main) and the game ran at 50fps. In this case another monitor influenced the total frame count.

This story becomes more intriguing though, at least my case of lag was "resolved". Perhaps a background update from Nvidia was what started the problem over here? (even at 75hz the game ran normally before)

This also doesn't solve your lag case and other people's, but I certainly already have a point to keep an eye on and question about.

I wasn't prepared to think so far out of the box, maybe the next step would be to use a multimeter to measure the alternating current of the residential electrical network? haha

I have 3 monitors, two are 1080p 60hz and the biggest one is 1440p 75hz.

Come had a report, this performance issue for me started suddenly in the same Windows session and never came back.

I've tried changing some properties like minimum FPS, rendering type/filter for the pixels and other minor things, and nothing delivers the expected FPS.

(1 edit)

Lots of light being brought to the conversation with these tests.

I understand that timer, DeltaTime() and frame count must have their moments to shine. Depends on the context.

Talking about the game with music sync, I'll still try, it won't be a very high rhythmic precision game. At the moment the thing is well connected to the timers (with BPM calculation and other details), so either with frame count or TimeDelta(), in order not to have to do a big rework, I'm going to use them as a second layer of confirmation of the events. It's something I'll think about later.

"Could you clarify what "deactivate the prices" refers to?"

Haha I'm sorry! Small mistake I missed after my review with the translation tool. The correct sentence will be

"My strategy for the spikes was to select the closest one (this one I had to deactivate in a hurry [near the end of the jam], because it was generating bugs) and turn them into tiles (they were animated sprites)."

And now, about: "I was very surprised that "Distance Below" is almost identical to not culling at all. I speculate that the collision algorithm already uses a similar distance calculation to "Distance Below""

I was as surprised as you are, and I believe in the same hypothesis you raised. Anyway, this test project was awesome, and now I'll be a follower of box method supremacy! haha

In the end, each strategy works well in specific cases.

Now, after doing some testing on the project...

First, I decided to do the jump smoothing using frame count instead of timers. The result started to look nice, but I still had problems with timing, when reviewing I remembered that the jump sustain time is measured in seconds (i.e., in fact, the platformer behavior has at least one timer running with it, solve turn it off and do a manual air control by frames).

However, I was a bit apprehensive, I started to print the frame count on the screen with the jump button pressed and to reach 60, it was taking more than a second.

I improved some events using the debugger tool (very nice tool!) but nothing particularly heavy, rendering and pre-events were still the biggest performance drains, but again, nothing serious.

  So I decided to print other information, including FPS (using the extension), FPS which is constantly at 37 frames, and that's when things start to get even weirder...

Not understanding what could be draining so much performance, I did something extreme, turned off all events and deleted almost all objects from the scene, leaving only the character and the ground, the result:


As if everything wasn't confusing enough, I changed the FPS cap from 60 to 0 (unlimited) and at that point, my game went to 69~76 FPS in a regular scene.



I went back to 60fps, went to a blank scene, just copied the value printing events, and the result?

* "Scene Real Time" is the scene time counter.

** "Scene Frame Time" is a count of every frame/60.

I'm going to take a break from testing now and I'll come back to it later, but I don't know if there's anything else to be done. As soon as I had the first case of slowness a few days ago, I cleaned all Windows background processes leaving only the OS excencials and it didn't solve it. Detail, other games run here normally, even some 3D ones that require more GPU.

The mystery continues...

Thanks for another great reply :)

Your answers are great, I'm grateful for them no matter how long they are.

Your test on the timers clarified the situation, I'm actually using them for things like jumping (doing interpolations between different gravities) and as an optimization feature (checking a condition every 0.2 seconds, for example).

This already alerts me to another project where musical synchronization is important, I need to create my own timers fed by the framerate to correct possible desynchronizations. I was entrusting this function to the standard timers.

About Debug mode, I still need to take a better look at it, for now, I use them only to read logs (to correct the flow of actions). It was a good reminder.

My strategy for the spikes was to select the closest one (this one I had to deactivate the prices, because it was generating bugs) and turn them into tiles (they were animated sprites).

Does the function of selecting objects by the condition "the distance between objects is less than" does it have a big impact on performance compared to your selection box? Anyway, your strategy looks good and I'll try to apply it. I'm wondering, better optimization than this, maybe just sectorize objects on the screen one step before checking the imaginary box. For example, creating 4 variations of the spike object, each being added to a specific corner of the screen. So once in a while check if "The X position of Spike >= Player.X() – 32" of all the spikes, check only those that are in a specific corner (quarter of screen), according to the position of the player. But maybe it's too much work for little performance gain.

We're having a great conversation here, but it's okay if you can't continue it :)

(I wish I could contribute some useful knowledge for you too, but I don't have the knowledge for that, sorry haha)

It really is surprising that he developed such a complex (in a good way) system during the limited time of this jam!

The union of 2D and 3D was done in a very clever way, perhaps the best application I've seen for this genre.

The only bug I noticed during my gameplay was the popin of certain 3D objects, but I think that could be a limitation of the engine.

The buttons chosen for action/options/etc didn't seem the best either, but it's an easy detail to resolve.

Thank you so much for taking the time to write this wonderful feedback!

Music is my specialty, so I'm glad that in this part I was able to surprise so positively. This is the first game I program, before that just a more complex prototype that still doesn't have stage 1 complete haha

Commenting on the project in a livestream, people in the chat who know a little more about programming than I do, commented about timeDelta. In this project, NOTHING is being checked by timeDelta (although I am using some timers), for me it was just another way to solve things, but after studying a little, I realized that implementing things by timeDelta is fundamental in many cases .

The collision is being checked every frame, but only with the closest enemy for contact with the player, and only the group of nearby enemies for contact with the blade (while it exists). My gut says skimping on collision per frame is wrong, but maybe my instinct is wrong.

Even with these points, this almost supernatural variation in performance is something very strange. One day, the game was normal at 10 am, already at 4 pm it started to slow down to the point where I couldn't even get past stage 1 (note: same hardware, same session), and after that, it never returned to performance from before. There's something very strange going on. I even created a topic here on JAM, and on the Gdevelop forums, about this subject.

As much as I correct everything with deltaTime, I still find this abrupt variation in performance on the same hardware very bizarre, and that, in a way, made me insecure eith Gdev.

I will continue to update the project, my intention is to make it a salable game! Thanks again.

Thanks a lot for aditional test, over here I was using the Logitech F310. I think a bug of this type goes beyond what we can do, it's an internal Gdevelop thing.

Thanks for the coyote timer tip, I wanted to skip the moves more but didn't know where to start.

Can you tell me what is your game-pad? Having the D-pad not working was something I thought I wouldn't have a problem with.

Thanks for the review :)

I even made some decisions taking into account my friend's buggy version, however, the fact that his computer runs the normal game and mine, which is now having a problem, makes testing not enough.

Anyway, I'll get into the habit of submitting the game to itch.io more often, I also almost didn't manage to sign up for JAM because of problems I had in the last 10 minutes of the event, anyway, that's good advice, thanks .

(1 edit)

I see, it's a bizarre situation. My case is even more intriguing, because my computer ran the game normally at 10:00 am, and then at 4:00 pm (without restarting the computer or installing anything) the game stopped working correctly.

(here the menus of your game worked normally)

The stage with 4 chairs ended up going with an error, it wasn't supposed to have spikes in the part just below the platforms haha

Thanks for the feedback, this will be a project I'll take forward!

lol yes, but I noticed that the redhead was the player afterwards, anyway, it was just a joke :)

It's not necessary to pass the source code, it's not just the platform behavior that's causing problems here, other things are inexplicably unstable, but normally the problem is in a situation of constant addition per frame. I feel like this is going to give me a lot of headache. Good luck with the Jam results!

You just need to break bones (J or Y key) and jump across platforms. However, there is a bug happening that in some browsers or computers the jump is very short and it is not possible to pass...

Some stages have a level design that is fun to beat.

Pausing the music and starting it from the beginning every time is not the best behavior, I recommend turning the volume down or pausing it and then resume.

The idea is good, but it would be nicer if the dark world was more impactful and the transition was more dynamic/faster.

What I liked the most: The somewhat scary theme and the sound effects.

What I didn't like: the laser death has a delay that is confusing. Leveldesign a little frustrating in some parts.

The crouch/crawl behavior has some inconsistency to toggle on/off.

What I liked the most: Pixelart and the layout of the dungeon controls.

What I didn't like: Short music looping. I thought there would be a pretty redheaded girl to control in the game :P

I found two bugs. In the first fall of the phase with creatures that fly appear, in the fall, the player walked to the left, however, his sprite remained to the right. Pausing and starting his movement, he went to the right.

The second bug, I suspect is a problem I had with my game. On the springs, I couldn't get the character to reach height at all, I was stuck there. My game, for some strange reason, also got jump-heavy suddenly and only on my computer (even without any code changes). Did you use platform behavior?

What I liked the most: Pixelart of the scenery and the sound.

What I least liked: long time to reset after cheat detection and constant right hand switching between JK keys and mouse interaction.

I found a bug when taking a hit from the cannonball and triggering the glitch at the same time causing paralysis in an attack loop that led to the character's death.

What I liked the most: The general concept of constant switching and the grenade launcher mechanic.

What I least liked: red laser on red mats not bad to see and sound (or lack thereof)

It was difficult to understand at first how the game works and that it was possible to push frozen enemies.

Since the problem also happened in the offline build of the game, and I have noticed that it affects other mathematical calculations very significantly, I decided to take the topic to the Gdevelop forums. This is something that has me very concerned, not being able to trust the integrity of the implemented mechanics, being a subject that I will want to discuss for a long time beyond this Gamejam.


https://forum.gdevelop.io/t/strange-behavior-generated-by-hardware/49380

(1 edit)

During testing for my game, one of our devs on the team was experiencing a short character jump issue (which blocked stage 1 progress). Thing that only happened in Chrome, but not in Brave. Yesterday I played my game on the itch-oi page about 3 times, and this morning too, but now that I went to play to take some prints, the character just got the short jump too.

Is there anything related to the fact that the game is running in the browser that could be causing this problem?

Extra information:

  • This problem never happened in test builds of the engine itself. 
  • The jump mechanic is handled by the platform behavior and a few more tweens timer calculating the jump severity.

If you think this is a more appropriate conversation for the Gdevelop forum, please let me know.

Edit: The game is not running even the built version right now. On my wife's and other friends' PCs the jumping problem doesn't occur.

Thanks for the feedback, a full version with more levels and many more improvements are on the plan. Any other suggestions are very welcome.

About the music, are you referring to the question of "musical taste" or was the music really playing in superimposition? It's actually two  similar songs that change as you use Ethereal Vision, here it's no problem, but a bug in these elements would really make the song a mess.

The character's Hitbox is already separate, it's not the character's sprite that is taken into account for jumps.

Hi, I managed to get the game up at the last minute only, after doing almost 24 hours livestreams producing the game. I added information on the itch page, including the controls, but I still intend to improve the page. Sorry for the inconvenience.