Reputation
979
Top tag
Next privilege 1,000 Rep.
See votes, expandable usercard
Badges
6 6
Impact
~23k people reached

  • 0 posts edited
  • 0 helpful flags
  • 1 vote cast
Apr
24
awarded  Autobiographer
Mar
12
comment When should I extrapolate and when should I interpolate?
@Jleong in cases where the network lags for too long, corrections may be necessary; this typically leads to "rubber-banding". The alternative, though, is consistently jerky movement, where you send a position, wait for the server to receive the information, parse it, calculate and verify it, and send back your new position, before you draw it, and send another update. At this point, your perceived performance and accuracy is tied to how good your server connection is. Games are frequently about "good enough" calculations, to hold things together and still feel "real-time".
Mar
12
comment When should I extrapolate and when should I interpolate?
@Jleong Without thinking about the difference between client and server, I can use interpolation to derive a position somewhere between two known points (for things like checking a collision that may have happened between frames), or further, take that dataset and derive things like velocity/trajectory and acceleration, given a set of points, and given the last known velocity/acceleration/trajectory, I can extrapolate where those objects may be, in the future, assuming a consistent timeframe. For server-client communication, the "optimistic" extrapolated position is used.
Dec
13
awarded  Yearling
Dec
7
awarded  Good Answer
Dec
13
awarded  Yearling
Dec
13
awarded  Yearling
Mar
20
comment What effect does the amount of 0 in a stat have.
Actually, I'd make the argument that most early design considerations regarding RPG numbers were ported straight from D&D, Rifts, GURPS, et cetera. Early jRPGs and early cRPGs would cling very tightly to the stat-levels and the engine concepts from the pen and paper equivalents, and instead diverge in the aspect of gameplay, rather than the underlying engines. That doesn't make his question any more easy to answer, but I think the initial problem was dealing with numbers which could be interpreted by a human, on the fly, rather than a 16-bit register.
Feb
20
comment How does QCSAA actually work in nVidia GPUs?
Depressingly, these implementations have changed multiple times, through the years (even multiple times a year, at some points). There has never been a guarantee that the algorithms for any AA style (much like non-standard texture compression, etc) would remain static, and these algorithms were very, very frequently changed in the early days, in order to improve performance, while fudging image-quality/precision, in competition with ATi. These days, that's mattered much less. That said, the current state of the algorithm is wholly unknown to me.
Feb
18
comment EXTREMELY Confused Over “Constant Game Speed Maximum FPS” Game Loop
@tsujp for a game to run at 60fps, its update + draw cycles MUST run at a combined total of ~16ms. So if your update cycle is taking ~6ms and each iteration through the while loop is adding 40ms to the next_tick... The max_skip is there in the case where something HAS farted and the timing is way behind. See my response for more.
Feb
18
answered EXTREMELY Confused Over “Constant Game Speed Maximum FPS” Game Loop
Feb
12
comment Sound activated particlesystem
BPM of a song is entirely different than generating particles based on velocity/amplitude of any one sample. You've got two options: the first is to just generate a particle any time there is a significant sound (whatever that means to your art-direction/song), or pre-read the track and generate a beat-matching algorithm (how long is the song, how many "significant" beats are there, how easy is it to quantize into groups 3/4/6/8/12/16 evenly-spaced beats, filling in gaps where needed ie: beats-per-measure), then find your BPM. Now you have a rate to fire particles, to modify based on samples.
Feb
5
answered How can I make sprites like diablo's for my soon-to-be isometric rpg? Like in all directions
Feb
1
revised Why should I use separate initialization and clean up methods instead of putting logic in the constructor and destructor for engine components?
added 254 characters in body
Feb
1
comment Why should I use separate initialization and clean up methods instead of putting logic in the constructor and destructor for engine components?
@Kylotan I extended my answer to more-aptly cover the content of the edited OP, rather than just the content of the original original, including comparison to the concept of the Game class (with a .load and .init or whatever they may be called). Hope that makes things a little more practical in terms of where this technique might see high-level use.
Feb
1
revised Why should I use separate initialization and clean up methods instead of putting logic in the constructor and destructor for engine components?
added 3531 characters in body
Jan
31
comment Why should I use separate initialization and clean up methods instead of putting logic in the constructor and destructor for engine components?
So is this a "every component/entity/class/etc in every system in every engine you ever build must have an explicit .init()"? Not remotely. It's: "Here's a situation where you might consider using one". Quickest example of when that might be: you've created Soldier soldier = new Soldier(); because you know you need him, but you need the server's permission to add him -- the server is expected to respond with coordinates for the new enemy, because you're doing networking using the right paradigms. When the future coordinates are given, the soldier has them added, is initialized and added.
Jan
31
comment Why should I use separate initialization and clean up methods instead of putting logic in the constructor and destructor for engine components?
...or management of construction of these objects might not always be in your control, or might otherwise go against the intent/design of the system.
Jan
31
comment Why should I use separate initialization and clean up methods instead of putting logic in the constructor and destructor for engine components?
@Kylotan, in these situations, having a monolithic .init method might be plausible, if your object MUST already be instantiated for some predetermined reason, but at least part of its setup (which would have been covered in the monolithic constructor in a 100% procedural environment), needs to be deferred until the loading of a resource, or until an instruction from a socket, or data is retrieved from somewhere remote, has to happen. The alternative would be to break the object into two pieces, do the sync stuff in one, and the async in the other, but private state...
Jan
31
comment Why should I use separate initialization and clean up methods instead of putting logic in the constructor and destructor for engine components?
@Kylotan, I agree. The reason the answer is worded in such a way is simply because it's based on the assumption you're already doing it that way, but have no idea why... Such was sort of the nature of the OP ("I read these articles that said I should, but didn't tell me anything else"). So these are potential blanks filled in, from that standpoint. Other real-world cases? As a JavaScript dev in my other life, async is certainly a time where if you're waiting on promises/futures, you want to hold off on running your large .init. In the game world, this might be async I/O or loading.