I would like to record the number of frames from the start of an event to the end, possibilities?

I know what you mean, unfortunately it’s not always going to be at the end of the event. Sometimes before and after delay nodes.

Much easier, that’s very debatable, given the fact that things change during software development. In terms of another event having better performance, while that is a easy statement to make, it’s difficult to prove. For if one is concerned about performance, than any call outside of the blueporint VM to the UE4 engine should be avoided. Those calls going to and returning from the UE4 engine, are one of the highest costs of using blueprints. If ya don’t believe me, look at the size of the call stack, when calling from the blueprint, to the engine. It’s enormous. There use to be a video around here, about blueprints, by one of the developers, and he stated as well, the Call and Return from the VM to the Engine, was expensive, and it is. In terms of being framerate independent, you only need to know the number of frames that have transpired, and the amount of time that has elapsed, and you are immediately framerate independent.

Finally, you have been learning quite a bit, as you have went along, and that has tremendous value.

Each response you give sounds more and more like you developed Unreal yourself lol. I never thought to get the denominator that way but on the other hand I’m still a newb.
I only hardcoded it to 60 because in the general settings I fixed the frame rate to 60 but from what @Tuerer said on the second answer, the frame rate will depend on the users PC and what they are doing so getting the average from delta will help.
Thank you again!

lol, no I have only rooted around inside the code of unreal a bit. the thing is that any system that is sufficiently complex starts looking like any other system. I.E. I have worked on OSes, written database engines, device drivers, etc. UE4 reminds me of a OS the most. Although it’s dependency on one main thread to run the majority of the engine, lacks a lot to be desired. Especially in today’s multi-core cpus. Because this causes an inherent bottle neck.

Focusing on the framerate, is something that I think too many people do. I am not stating that the framerate is not important, but it’s like the “tail wagging the dog”. The framerate is the culmination of 100’s of actions within the engine. To substantially alter the framerate, one has to use the “STAT” command while running the game itself, and then see where the majority of the time is being spent. Then focus on that, to get the biggest bang for the time spent. Getting a baseline framerate is desirable, so that as the code is changing, you can do a quick check, with just one number (framerate) to see if new code has altered what is occurring substantially.

Stay focused on what your trying to accomplish, to deliver a game that people enjoy playing, and that gives 90 to 95% of those people a lot of fun. Most of those people are going to have 60Hz monitors, which can display a framerate of 60fps, and no more. So trying to drive the frame rate up to 240 FPS for example, is not of great value to the vast majority of your customers.

Hope this helps.

I’m convinced you and Bill Gates go out for tea on Tuesdays. You’ve made so many great points, I am soaking it all in. I think Node.JS is a little complex but not to an OS level, I find a database engine fascinating. I heard SQLite is the way to go for folks that want to have a deeper understanding of how it works back there. Would you suggest having a deeper understanding of something complex like that or OS sufficient enough to understand what’s possible in Unreal?

Yes I agree, I’m only focusing on the tip of the iceberg but I have to start somewhere right? I mean it isn’t something like a fighting game where precision makes or breaks it but it just one of those things players won’t need to complain about constantly.
You’ve helped me so much, very glad Unreal has people like you in it.
I’m going to put what I learned to work.

I refused to meet bill gates, besides I always felt that Steve Ballmar was the " real man behind the curtain" lol. Personally I would suggest, reading the 3 tomes by Donald Knuth (The Art of Computer Programming, Volume 2 can generally be skipped, but Volumes 1 and 3, cannot, and there are more volumes now). These will give one of the finest groundings in computer programming, independent of a programming language (Knuth uses a hypothetical assembly language to illustrate everything). Being independent of a programming language, is a great objective as well.

Consider that as soon as one, understands the concept of a fork, and how to use it to eat. That one is enabled to use any fork, to eat with. So why do people become so enamored with a language I do not understand. The only languages I became enamored with were, IBM System 370/390 Assembly, and Intel 80xx Assembly language. I’ve forgotten more languages than most others will ever learn, because they come and go like the seasons of the year, but Assembly, for the major processors of our lives, do not change.

So get at least two of the books (Ebook it is much cheaper), and just dive right into UE4 itself. The source code is there, made available by Epic (And huge kudos to Epic for this), so I would suggest starting where you wish to be anyway! Remember, because you have the source code for the engine, you can change it to do anything you wish…

I have no degree, I just started with Knuth, and IBM System 370 Principles of Operation (yes it’s still available as well, and the FINEST description of a computer architecture you will ever read). Just like with any sport, become well grounded in the fundamentals, and everything else will fall in place. Then one day, you may look at the latest and greatest whizbang language to hit the market, and think to yourself, “This is an abomination!!!” (Just like I did with C++, and others)

Hope this helps



lol Steve Ballmar, we are talking about the man that owns the Clippers? Hmm haven’t read to much about him but from what I have read, he definitely seemed to be pulling strings.
The wisdom you carry is great, I will most likely start reading volume 1 next week when I have time off.
I whole hardheartedly agree which the multiple programming languages, which is best? I guess that depends on how flexible it is.
I didn’t bother editing the engine at all because I lack the knowledge but hopefully by the 3rd or 4th quarter next year, I’ll be armed with enough background to create something wonderful.
I can’t stress this enough, thank you!

Remember, Ballmar was the gentleman that dropped his pants and stood on stage, only wearing his underwear, to get people’s attention!!!

Yeppers, read volume one, and don’t skip volume 3, it’s amazing how many problems can be solved with a sort,and of course Searching is very important (Especially in working with compilers, during the lexical analysis, and you would be surprised at how many times, I have created tiny lexical analyzers in order to extend features of products).

Of the programming languages that are available there is a General Best, which I would tend to say is C, if one wants cross platform comparability. After that, the languages boil down to what are they each designed for? String handling? Numerical computation? (Probably nothing beats Fortran for this), still most of this will resolve to how the libraries are set up. Not so much the language itself.

I still think, that anyone wishing to be a programmer, should still understand the machine, hence don’t overlook Assembler. It will teach you more about programming than any other language. Because you have to do everything yourself, instead of relying on libraries, etc.

Assembler will also allow you to find ways, to make things more efficient. Take the lowly “Branch”, without a doubt, the most executed flow control there is. Why can I say this? because there is in truth no other flow control instruction for general purpose processors.

Cmp ValA, ValB
Jmp/Br OnEqual

So looking at those two little instructions. Do you code it, so that the Jmp/Br will fail the majority of the time? So that the code will just “fall through” on the failed Jmp/Br? What is the fastest way to execute this? For the majority of times, that this compare is executed? When you start thinking like this, naturally, you code is automatically being optimized, without any extra effort.

Anyway, just some thoughts, hope you have a great day, and all the best to you!