Frame rate independent game loop
Re: Frame rate independent game loop
where i'd like to go next is cloud data. it will ease my transition to solid-looking objects. talking to myself but it should give you ideas as well
Re: Frame rate independent game loop
What is the meaning of 'solid' in this context? Are you referring to the S.O.L.I.D. acronym, or the 'solid' adjective? =Ddafhi wrote:where i'd like to go next is cloud data. it will ease my transition to solid-looking objects. talking to myself but it should give you ideas as well
And which type of clouding are you looking for? Do you mean networking code? Lots of questions XD
Re: Frame rate independent game loop
point cloud as a starting point
in the past:
1. transform -> projection array
2. zsort
currently thinking about more than 1 object which will mean zsorting a more-or-less global array
in the past:
1. transform -> projection array
2. zsort
currently thinking about more than 1 object which will mean zsorting a more-or-less global array
Re: Frame rate independent game loop
OOOOOh that! I thought you were referring to OOP =Ddafhi wrote:point cloud as a starting point
in the past:
1. transform -> projection array
2. zsort
currently thinking about more than 1 object which will mean zsorting a more-or-less global array
If you want to do z-sorting, z-buffer or c-buffer all the way. If you z-sort the objects (whether by using the centroid or whatever), you end up with z-fighting all over the place. Unless you'll do lots of transparency, there's no point in sorting the objects. A good idea that I implemented (has to be there somewhere...) is using a binary heap (instead of a simple array list) when you compute the potential visibility set. You may want to try it ;)
I'll see if I can refactor the paperplane demo to use a z-buffer. Then you can use that as a base for point clouding all the way (I have something on that also, but where... XD)
Re: Frame rate independent game loop
yes the global array will be point cloud data.
[edit:]
it's been an interesting week - transitioning to a vegan lifestyle in a rather short time
[edit:]
it's been an interesting week - transitioning to a vegan lifestyle in a rather short time
Last edited by dafhi on Oct 31, 2017 17:37, edited 1 time in total.
-
- Posts: 3906
- Joined: Jan 01, 2009 7:03
- Location: Australia
Re: Frame rate independent game loop
My attempt at angry bird "physics" :)paul doe wrote: I was thinking in more 'mundane' 2D physics, like Angry Birds or LBP.
viewtopic.php?f=15&t=21667&hilit=angry+birds
You code example looks great. Couldn't figure out how it worked of course or even imagine how to duplicate it. So many files to download!!
.
Re: Frame rate independent game loop
You have too much coupling in your life. Inherit from interfaces, instead of extending the implementation =Ddafhi wrote:yes the global array will be point cloud data. just talking to myself :-)
there are several factors for my slowness:
1. my mental horsepower isn't large
2. i have PTSD which greatly affects #1
3. spiritual issues on top of #2 (far and away the most confounding aspect of my life)
4. big life changes - transitioning to a vegan lifestyle in a rather short time
5. potentially found 'that special someone'
several points tie with each other. needless to say i've been hugely distracted. maybe not the right word considering the implications of point #5
Well, if you need me, I'll be right here. I will just leave you with you deranged ramblings for now XD
Re: Frame rate independent game loop
Haha pretty hilarious. I totally missed that one, will take a good look at it later =DBasicCoder2 wrote:My attempt at angry bird "physics" :)paul doe wrote: I was thinking in more 'mundane' 2D physics, like Angry Birds or LBP.
viewtopic.php?f=15&t=21667&hilit=angry+birds
The comments in the code didn't help you? I carefully commented every piece worthy of some consideration, even described the algorithm in detail. Do you think there are many files? You haven't seen anything yet =DBasicCoder2 wrote:You code example looks great. Couldn't figure out how it worked of course or even imagine how to duplicate it. So many files to download!!.
-
- Posts: 3906
- Joined: Jan 01, 2009 7:03
- Location: Australia
Re: Frame rate independent game loop
Looking at it again I see the collision routine was more complicated than it needed to be for that usage.paul doe wrote:Haha pretty hilarious. I totally missed that one, will take a good look at it later =D
Code: Select all
function imagesCollide2(s1 as SPRITE,s2 as SPRITE) as boolean
return (s1.y+s1.h) > (s2.y) and (s1.y) < (s2.y+s2.h) and (s1.x) < (s2.x+s2.w) and (s1.x + s1.w) > (s2.x)
end function
Well I am a retro programmer from another time and if it doesn't fit in one file ...Do you think there are many files? You haven't seen anything yet =D
.
-
- Posts: 3906
- Joined: Jan 01, 2009 7:03
- Location: Australia
Re: Frame rate independent game loop
I see OOP as a high level abstract language far removed from the simple languages of old although I know oop has been around for a long time even given some support in the old TASM Assembler but it just doesn't appeal to me.paul doe wrote:The comments in the code didn't help you? I carefully commented every piece worthy of some consideration, even described the algorithm in detail.
As I wrote in the thread about making FreeBasic appealing,
My gut feeling is in the future FreeBasic will only be used by advanced users who like the BASIC syntax and old qbasic programmers. That is the make up I see on the forum.
There are two groups, the advanced programmer such as yourself and a few remaining retro programmers like myself and I think the future is for the advanced programmer.
I decided to look at your code and the first thing I saw was property. No idea what that meant and checked the help and did a google. Now I am sure you could explain it all but honestly I tried a long time ago to get into OOP without success. I found OOP long winded and I was unable to visualize what was going on. I can still remember the example given in a teach yourself C++ book called budget.c and budget.cpp where I fully understood the first version but saw no point in the complicated second version which did exactly the same thing.
Now I have used Java at a beginners level and I have used objects in C++ but I don't really write them. I know how to instantiate an object with the new statement and call its methods with the dot operator but that is about it. I liked that strings and arrays were objects with lots of methods so I do appreciate the value in oop as objects are easy to use.
I haven't really been doing much programming recently as I can't find a project to get excited about. I just dabble now and then with simple programs but don't have the time or motivation I had in my twenties to learn new things which require hours of practice. Maybe I should change my forum name to Dinosaur2 :) With all the advanced oop code now on the forum I see myself as redundant as a contributor.
.
Re: Frame rate independent game loop
Sadly, most simple OOP examples are pretty useless and overly complicated. This is because OOP's complexity savings only come on larger objects. With small objects, all you get it the convenience that you spoke of with java's objects.BasicCoder2 wrote:...I can still remember the example given in a teach yourself C++ book called budget.c and budget.cpp where I fully understood the first version but saw no point in the complicated second version which did exactly the same thing.
For instance, Property are a great way of handling access control. You make the actual member of the object private (only accessible from the object itself) or protected (only accessible from the object itself or from derived objects). Then you can make the property to give other classes access to the member. This allows you to monitor and control what changes are made to the member.
For small things, what is the point? That makes it really complicated for no good reason.
Where OOP really shines though, is when making code to be used by others. You can make an object, that has all the things it needs contained in itself. Then you can pass the object to someone else, and give them the interface to that object (properties, subs, functions, constructors, etc). They don't need to know HOW it works, just how to interact with it. Then if you find a bug in your object, you can change the interior code with out having to change any of the interface bits. Their code should not need to be changed, unless you add new features. Old features continue to "just work".
Many times, OOP is seen as this savior for programmers. It is like any other tool in the tool box. It is good for certain things and not so much for others. I have not looked over the code that was being talked about here, so I will make no judgement on whether it is a good use of OOP or not.
If you are up for it, I would love to take a crack at making some OOP tutorials for you. If you have no interest, no hard feelings. I just hate to see someone with talent feel like they are being left behind.
Re: Frame rate independent game loop
Hi, Imortis.Imortis wrote:Many times, OOP is seen as this savior for programmers. It is like any other tool in the tool box. It is good for certain things and not so much for others. I have not looked over the code that was being talked about here, so I will make no judgement on whether it is a good use of OOP or not.
Why don't you look, then? =D I just finished refactoring it a little, to be able to implement something that I promised to show to h4tt3n more comfortably. Your comments would be greatly appreciated.
That's OK. As Imortis says, they're just different paradigms, tailored to suit different needs.BasicCoder2 wrote:I see OOP as a high level abstract language far removed from the simple languages of old although I know oop has been around for a long time even given some support in the old TASM Assembler but it just doesn't appeal to me.paul doe wrote:The comments in the code didn't help you? I carefully commented every piece worthy of some consideration, even described the algorithm in detail.
I beg to differ. See http://www.yegor256.com/2016/08/15/what ... mming.html to see some authoritative opinions on the matter. However, I can see the appeal of OOP for the human behind the programmer. If you look at my code, you'll see that it is written to be easy to read and understand what I'm doing. Of course, if you're not familiar or know little about OOP it will tell you nothing, but for another person who does, it's really easy to read and figure out what is happening.BasicCoder2 wrote:My gut feeling is in the future FreeBasic will only be used by advanced users who like the BASIC syntax and old qbasic programmers. That is the make up I see on the forum.
There are two groups, the advanced programmer such as yourself and a few remaining retro programmers like myself and I think the future is for the advanced programmer.
Knowing OOP does not make you an 'advanced programmer'. Your ability to solve problems does. I think you know what I'm talking about XD. It just so happens that I used OOP to solve a problem (the implementation of a game loop), but you can pretty much do the same thing with procedural programming.
I know what it is to not having time or motivation to spare, indeed. But this isn't necessarily so, you know. Some people would be able to use my code, some not. Such is life. It does not make it useless, as writing (solid)procedural code doesn't make you redundant. OOP isn't particularly hard to learn. The interactions between the different components, and understanding what to use, when and how is the difficult part. That's why I pointed to you the article describing some commonly used patterns, what is coloquially known as the 'GoF Design Patterns' ('GoF' meaning 'Gang Of Four', see what Google has to say about this =D ) and that (among other things) is why I think that a centralized Tutorial/Demo section would be useful.BasicCoder2 wrote:Now I have used Java at a beginners level and I have used objects in C++ but I don't really write them. I know how to instantiate an object with the new statement and call its methods with the dot operator but that is about it. I liked that strings and arrays were objects with lots of methods so I do appreciate the value in oop as objects are easy to use.
I haven't really been doing much programming recently as I can't find a project to get excited about. I just dabble now and then with simple programs but don't have the time or motivation I had in my twenties to learn new things which require hours of practice. Maybe I should change my forum name to Dinosaur2 :) With all the advanced oop code now on the forum I see myself as redundant as a contributor.
Nonetheless, don't take me too seriously, please. I'm just a paul doe, you know. Sorry if I sounded a little harsh yesterday =D
Re: Frame rate independent game loop
This looks well done. The complexity of the code is nicely hidden in the objects without becoming cumbersome in it's own way. 5/5 stars!paul doe wrote:Hi, Imortis.
Why don't you look, then? =D ...
On a note purely of personal preference: I don't care for using defines to replace one keyword for another (type/class/interface, extends/inherits), especially when I am trying to write code for general use. It can get confusing for people trying to understand the code. But that is just a preference. For someone who understands OOP concepts, your defines make perfect sense.
Re: Frame rate independent game loop
That reminds me of an old discussion:Imortis wrote:On a note purely of personal preference: I don't care for using defines to replace one keyword for another (type/class/interface, extends/inherits), especially when I am trying to write code for general use. It can get confusing for people trying to understand the code. But that is just a preference. For someone who understands OOP concepts, your defines make perfect sense.
See viewtopic.php?p=154836#p154836 and the posts before and after!
Re: Frame rate independent game loop
Thanks. Very kind of you to actually take the trouble to read the code =DImortis wrote:This looks well done. The complexity of the code is nicely hidden in the objects without becoming cumbersome in it's own way. 5/5 stars!
Of course, there are some classes that are very crappy (the metaball class being the worst offender), but for this simple demo it suffices XD
Yeah, I've seen that discussion. In my code, I use 'class' to denote an object, and 'type' to denote data. Also, I use 'inherits' to distinguish between interface inheritance and implementation inheritance, for which I use 'extends'. For me it's vitally important that this is understood by the reader of the code (this is also stated in the code comments). Well pointed out, thanks!fxm wrote:That reminds me of an old discussion:Imortis wrote:On a note purely of personal preference: I don't care for using defines to replace one keyword for another (type/class/interface, extends/inherits), especially when I am trying to write code for general use. It can get confusing for people trying to understand the code. But that is just a preference. For someone who understands OOP concepts, your defines make perfect sense.
See viewtopic.php?p=154836#p154836 and the posts before and after!