Main Menu

New efforts!

Started by Ironwolf, March 06, 2014, 03:01:32 PM

Burnt Toast


It's called an NDA :)
There has been plenty of news... and confirmation that the deal is still in the works. Since you are unaware of the intricate dealings of the team... maybe just accept that those involved have stated... that it is ongoing.



Quote from: DWRoelands2 on May 28, 2015, 03:16:17 PM
I think this is wishful thinking, at best.  It's been 8 months since the original "mask comes off" reveal and there's been no substantive news since.

I loved COH, but it's gone and it's not coming back.

Angel Phoenix77

Quote from: Burnt Toast on May 29, 2015, 04:35:56 AM
It's called an NDA :)
There has been plenty of news... and confirmation that the deal is still in the works. Since you are unaware of the intricate dealings of the team... maybe just accept that those involved have stated... that it is ongoing.
Since I have been following this since last year, I am glad the team is still trying to get our game back. :)
One day the Phoenix will rise again.

Abraxus

My only hope when all of this is over, and the game is back (hopefully sooner, than later), is to have just a small understanding of why NCSoft treated this game the way they did.  Obviously, we KNOW nothing for sure about why they would shutter a game that by all accounts was profitable, and holding its own.  The way it went down almost felt like someone in a position of power had a burr in his ass for this property, and made sure it closed down despite all of the reasons not to.  As I said, that is how it felt...but I would like to understand the thinking.  Might never happen.  Just a fantasy, like getting the game back, but if one can happen - why not the other?  ;D
What was no more, is now reborn!

LaughingAlex

Can't stand being on CO right now and can't get into VO right now, so now i'm writing.
Currently; Not doing any streaming, found myself with less time available recently.  Still playing starbound periodically, though I am thinking of trying other games.  Don't tell me to play mmohtg's though please :).  Getting back into participating in VO and the successors again to.

FloatingFatMan

Quote from: Burnt Toast on May 29, 2015, 04:35:56 AM
It's called an NDA :)
There has been plenty of news... and confirmation that the deal is still in the works. Since you are unaware of the intricate dealings of the team... maybe just accept that those involved have stated... that it is ongoing.

Actually, since the news about meeting NCSofts "qualifying" request, there has been zero news at all.  "Things are ongoing" is not news, it's merely a status. 

FloatingFatMan

Quote from: anderu on May 29, 2015, 04:56:12 AM
My only hope when all of this is over, and the game is back (hopefully sooner, than later), is to have just a small understanding of why NCSoft treated this game the way they did.  Obviously, we KNOW nothing for sure about why they would shutter a game that by all accounts was profitable, and holding its own.  The way it went down almost felt like someone in a position of power had a burr in his ass for this property, and made sure it closed down despite all of the reasons not to.  As I said, that is how it felt...but I would like to understand the thinking.  Might never happen.  Just a fantasy, like getting the game back, but if one can happen - why not the other?  ;D

Well, it's fairly well known that there were some "personal issues" between certain people at Paragon Studios and certain people at NCsoft. I wouldn't be surprised if that was a factor.

Azrael

Quote from: FloatingFatMan on May 29, 2015, 03:17:11 PM
Well, it's fairly well known that there were some "personal issues" between certain people at Paragon Studios and certain people at NCsoft. I wouldn't be surprised if that was a factor.

I can't prove it.  But the shutdown smacked of something very personal as a gut feeling.  Like someone got to big for their boots or something.

Add in the 'personal issues' muted between 'certain' people at Paragon Studios and NC Soft which came to a head in the talks...

Now NC Soft are fighting off a take-over from Nexon?  Karma.

'It's just business.  Nothing personal.'  Oh-so? :P

Azrael.

PS.  Interesting from the links I provided that Nexon may want NC Soft to divest itself of non-core assets.  Could that include the sale of CoH IP/disk image?  Though if they want to break back into the American market I'd find such a sale and it's original closure ironic.  It looks like they've re-structured to have another crack at it...and the mobile market.  Be great to have an 'app for that' e.g. for the City of Heroes costume creator on an iPad.  But considering the complete lack of 'cultural' understanding surrounding the closure of CoH I'm not holding my breath.

I find myself wearing a distant wry gaze at the trouble Wildstar is in going to a free to play so soon.

NC Soft have got Lineage and Guild Wars.  Anything else?  I find myself unimpressed with either of them.

Azrael

#17387
Quote from: LaughingAlex on May 29, 2015, 07:03:09 AM
Can't stand being on CO right now and can't get into VO right now, so now i'm writing.

Dreadful design from a 'still born' not-out-of-beta-ever game.

Everything CoH got right Champions got so very wrong.  Combat.  Animation.  Interface design.  Power sets.  A.I.  Maps.  Zone design.  Seminal 'feel.'  Teaming.  Chat window.  Chat window 'beep.'  (That's backspace to you guys and gals...)  Community.

...and the 'frog stoop' run of the male player character.  The jittery 'cat on hot bricks' animation.  The cheesy tone of it all.  The mod system and crafting.  The lock boxes.  The community.  *coughs.

I'm an arcade game.  (No, I'm not.)  I'm going to work on an X-Box and a PC.  (No.  I'm not.)  But I am a kludge that is neither.  Bingo.  Complete with nerf bat?  Try nerf sledgehammer on launch day.

Coh was a balladic masterpiece.  CO has a wasp in its knickers.

Life subber.  Who just got his 2nd L40 in 'x' years as said life subber.  It's simply dreadful.

Soul-less as it was ill-judged.  Dead on its feet.

Bring back CoH (TM.)

Azrael.

PPS.  I watched with intrigue and interest as Titan Forum's 'big guns' came out in robust defence of 'S.C.O.R.E'S' reverse engineering efforts.  All but 'confirming' what we wish for.  Well, it might not be what we 'wish' for but the next best thing (as far as I could ascertain...from the runes of Codewalker himself...)  Even casual observers can read between the lines in a 'watch my lips' kind of way.  It's personal.  They're determined.  (*nudge, nudge, wink, wink*)  It's enlightening to know that ICON was 'mere' by product of said 'efforts'  and that augurs very well for a future solution to our CoH fix (whether these talks conclude to our community's advantage...or not.)

As an example.  From ICON.  'I' can see the spawn points.  (Using the 'Dev' copy...)  I can use the costume creator.  I can 'summon' a spawn or single mob at a time with a simple command (see Wiki for details.)  I can fly and run around in ICON.  I can see the 'powers' animate in the costume creator...  I can go to every map and zone in CoH.

Now.  I'm not even a programmer.  (I don't 'know' how CoH combat works but, apparently, people in the community were well versed with its technicalities.)  But if I was a very good one...it would surely be a matter of time before I reverse engineered 'a' mob to spawn (as proof of concept.)  To animate.  For an exchange of combat between single Mob and Player Character as 'proof' of concept.  Surely a matter of time before one chased down the 'guessing game' of the exchange between 'server' and client.  If Star Wars galaxies can do it...if Infinite Tabula can do it...

So, I guess it's a matter of code.  A matter of time (matter of time...) and 'man-power.'  (Though, if Arcana can knock out simple servers in 'her' Video Conferences ((guess she's easily bored... :P)) then...but seriously.  'It's only code.'  So those who walk in the binary world would tell us...) 

I'd be very happy to play on said 'CoH' project with a local LAN or limited player network with AE to make the missions with.  We could always recreate the original missions from the Wiki..?

Micro-server?  Yes please. ;)

PPPS.  I was watching 'Hero Con' the other day.  ...and even more it comes home to me just how 'personal' this game was to its core player base.  I look at the other legion of bland trinity MMO fests out there and I'm still incredulous that NC Soft closed CoH after pumping so much money into it rather than cutting back the studio's budget and let the game run in 'legacy' mode and recoup their investment in 'skeleton' server crew mode.  They'd paid for all the latter day R&D anyhow...

LaughingAlex

Quote from: Azrael on May 29, 2015, 03:50:51 PM
Dreadful design from a 'still born' not-out-of-beta-ever game.

Everything CoH got right Champions got so very wrong.  Combat.  Animation.  Interface design.  Power sets.  A.I.  Maps.  Zone design.  Seminal 'feel.'  Teaming.  Chat window.  Chat window 'beep.'  (That's backspace to you guys and gals...)  Community.

...and the 'frog stoop' run of the male player character.  The jittery 'cat on hot bricks' animation.  The cheesy tone of it all.  The mod system and crafting.  The lock boxes.  The community.  *coughs.

I'm an arcade game.  (No, I'm not.)  I'm going to work on an X-Box and a PC.  (No.  I'm not.)  But I am a kludge that is neither.  Bingo.  Complete with nerf bat?  Try nerf sledgehammer on launch day.

Coh was a balladic masterpiece.  CO has a wasp in its knickers.

Life subber.  Who just got his 2nd L40 in 'x' years as said life subber.  It's simply dreadful.

Soul-less as it was ill-judged.  Dead on its feet.

Bring back CoH (TM.)

Azrael.

PPS.  I watched with intrigue and interest as Titan Forum's 'big guns' came out in robust defence of 'S.C.O.R.E'S' reverse engineering efforts.  All but 'confirming' what we wish for.  Well, it might not be what we 'wish' for but the next best thing (as far as I could ascertain...from the runes of Codewalker himself...)  Even casual observers can read between the lines in a 'watch my lips' kind of way.  It's personal.  They're determined.  (*nudge, nudge, wink, wink*)  It's enlightening to know that ICON was 'mere' by product of said 'efforts'  and that augurs very well for a future solution to our CoH fix (whether these talks conclude to our community's advantage...or not.)

As an example.  From ICON.  'I' can see the spawn points.  (Using the 'Dev' copy...)  I can use the costume creator.  I can 'summon' a spawn or single mob at a time with a simple command (see Wiki for details.)  I can fly and run around in ICON.  I can see the 'powers' animate in the costume creator...  I can go to every map and zone in CoH.

Now.  I'm not even a programmer.  (I don't 'know' how CoH combat works but, apparently, people in the community were well versed with its technicalities.)  But if I was a very good one...it would surely be a matter of time before I reverse engineered 'a' mob to spawn (as proof of concept.)  To animate.  For an exchange of combat between single Mob and Player Character as 'proof' of concept.  Surely a matter of time before one chased down the 'guessing game' of the exchange between 'server' and client.  If Star Wars galaxies can do it...if Infinite Tabula can do it...

So, I guess it's a matter of code.  A matter of time (matter of time...) and 'man-power.'  (Though, if Arcana can knock out simple servers in 'her' Video Conferences ((guess she's easily bored... :P)) then...but seriously.  'It's only code.'  So those who walk in the binary world would tell us...) 

I'd be very happy to play on said 'CoH' project with a local LAN or limited player network with AE to make the missions with.  We could always recreate the original missions from the Wiki..?

Micro-server?  Yes please. ;)

PPPS.  I was watching 'Hero Con' the other day.  ...and even more it comes home to me just how 'personal' this game was to its core player base.  I look at the other legion of bland trinity MMO fests out there and I'm still incredulous that NC Soft closed CoH after pumping so much money into it rather than cutting back the studio's budget and let the game run in 'legacy' mode and recoup their investment in 'skeleton' server crew mode.  They'd paid for all the latter day R&D anyhow...

CO had gone backwards in graphics and now all females look like anorexics.  Fitting I suppose since the games dying.
Currently; Not doing any streaming, found myself with less time available recently.  Still playing starbound periodically, though I am thinking of trying other games.  Don't tell me to play mmohtg's though please :).  Getting back into participating in VO and the successors again to.

LadyVamp

Quote from: Arcana on May 28, 2015, 03:20:05 AM
I have no idea about serverprotect, but Avamar is a decent, if ludicrously expensive product.  But if you are trying to replicate templates, backup and restore seems to me to be the worst way to do that.  You'll indirectly expand your thin provisioned disks.  I would export them to OVF, and then copy the OVF to the replica site and reimport.  You'll then be copying a compressed image of the vmdks.  You can even automate this with Powercli commands.

Avamar is good at backing up the vms as servers.  It's just getting to the point they can back up the vms as an image and they've been working on the thin provisioning parts too.  hp serverprotect is hp's backup solution.  The Avamar is quite expensive but good.  We talked about the Veeem but our sme isn't too keen on it.  The export to ovf and import works great on smaller vms but ours are typically 1TB per vm and larger.  The best thing we've come up with is to spin up the vm we want to transfer, spin up a matching os vm but nothing on it, and let rsync replicate the app and data.   It's works but it's not aware of the differences in the cpu and memory nor the disk paritioning so it does require manual steps.  To export/import or to use shared catalogs from vcloud director can take 40 hours to export a vm with 1 TB sized vmdk.  If this were a once in a while thing, we'd live with it but we have this every 2 weeks involving 20 vms.  Our cloud is a private, dev/test cloud.
No Surrender!

LadyVamp

Quote from: Arcana on May 28, 2015, 08:48:07 PM
So, today's MMO topic is time.  Specifically, how do you make sure everything happens when you want it to happen.

Mine was command line star trek in disk extended color base on a TRS-80 CoCo2.  Since it was turned based, no need for loops to make the computer do nothing.  But talking about this reminded me of Privateer 2.  The dos version was made for the 486 running at 33 MHz.  In college, we had one guy with a Pentium 120.  He got into a fight, before he could even fire, his ship melted and blew up under an attack that lasted all of 1 second.

Those days bring back memories when computers weren't nearly as reliable as they are now nor as powerful.  I took classes in programming cobol, fortran, C, (turbo) pascal, and assembly.  AI programming with lisp, prolog, and c++.  Java has just been born and no one was sure if it would take off or be another DOA language.  Perl was in 5.004 and tcl/tk was in use.  No lua, python or ruby.  javascript was born then too and someone got the idea to call it javascript so it could ride java's coat tails.

This remenessing makes me want to break out the old CoCo2 and write something in basic.
No Surrender!

Ohioknight

Quote from: LaughingAlex on May 29, 2015, 03:55:47 AM
Had to add two trolls to the ignore on CO today.  Oh it'll be a sad day when that game shuts down cause of assholes who cannot accept that the games unpopularity exists for a reason.  Oh well, CoH has a chance of coming back.  I can't wait for that game to come back, just, to the people in negotiations and all that, I do hope your able to do so before CO finally collapses on itself.

Y'know Laughing Alex, I'm beginning to get the impression that there have been some users on CO who you disagree with.

Good thing there weren't a bunch of players convincing the devs to do nerfs or anything, cause that would have really been bad.
:)
"Wow, a fat, sarcastic, Star Trek fan, you must be a devil with the ladies"

Arcana

Quote from: LadyVamp on May 29, 2015, 04:54:49 PM
Avamar is good at backing up the vms as servers.  It's just getting to the point they can back up the vms as an image and they've been working on the thin provisioning parts too.  hp serverprotect is hp's backup solution.  The Avamar is quite expensive but good.  We talked about the Veeem but our sme isn't too keen on it.  The export to ovf and import works great on smaller vms but ours are typically 1TB per vm and larger.  The best thing we've come up with is to spin up the vm we want to transfer, spin up a matching os vm but nothing on it, and let rsync replicate the app and data.   It's works but it's not aware of the differences in the cpu and memory nor the disk paritioning so it does require manual steps.  To export/import or to use shared catalogs from vcloud director can take 40 hours to export a vm with 1 TB sized vmdk.  If this were a once in a while thing, we'd live with it but we have this every 2 weeks involving 20 vms.  Our cloud is a private, dev/test cloud.

I'm a little confused.  Normally, templates aren't that large in terms of actual data (as opposed to provisioned disk size) and templates cannot by definition change (because they cannot run as templates).  You would ordinarily only need to replicate a template once, and then again only if it was changed (by converting it back into a vm, running it, and then converting back into a template).  I'm not sure now if you are trying to replicate an actual template, or if you are trying to replicate a running VM.

If you are trying to replicate VMs or templates that you manually change periodically, and they are 1TB in size, you almost certainly want a cbt-aware (change block tracking) replication system or a volume snapshot aware one.  For Windows systems, we typically use ShadowProtect with continuous incremental backups.  SP performs incrementals at regular intervals and the incrementals are replicated to the replica site, we then perform a continuous "headstart" restore at the replica site where those incrementals are continously being restored to a restore image.  At any time we can "finalize" the restore and run the replicated VM pretty much immediately.  For non-Windows system and troublesome Windows ones (where VSS is unreliable), we use Veeam reverse incrementals: we make incrementals as SP does, replicate them to the replica site, then perform a reverse incremental combine on it and the current full to make a current full backup that can be restored or in an emergency instantly run from NFS without having to restore.

If you are trying to replicate huge VMs and aren't using a CBT-aware backup system and incremental replication, I would imagine this would take an enormous amount of time.

Arcana

Quote from: Azrael on May 29, 2015, 03:50:51 PMSo, I guess it's a matter of code.  A matter of time (matter of time...) and 'man-power.'  (Though, if Arcana can knock out simple servers in 'her' Video Conferences ((guess she's easily bored... :P)) then...but seriously.  'It's only code.'  So those who walk in the binary world would tell us...) 

There are servers, and then there are servers.  Mine are still matchstick bridges without many matchsticks.  I'm not specifically trying to denigrate any of the CoH rebuild teams or the reverse engineering team by suggesting that building an MMO from scratch is easy.  In fact, just the opposite: I'm doing the software equivalent of going walkabout, and trying to explore a space I know an awful lot about in principle, but never spent more than a few days visiting.  I'm like a car nut that one day decides its not enough to drive one, and tune one, and customize one, I'm going to build one from scratch.  Literally from scratch, and not from a kit.  Nuts, bolts, steel cable, metal tubing, arc welder, and maybe an engine block.  Each one hand-picked.  Why do that?  Because you'll end up with a better car than what you can get from a dealer?  Probably not.  Mostly, its because you just need to know if you could do it.  Or you're crazy.  Or both.

LaughingAlex

Quote from: Ohioknight on May 29, 2015, 05:30:21 PM
Y'know Laughing Alex, I'm beginning to get the impression that there have been some users on CO who you disagree with.

Good thing there weren't a bunch of players convincing the devs to do nerfs or anything, cause that would have really been bad.
:)

Nah, the users who were trolls this time were just rude people saying cruel things, not just things I disagree with, but very cruel things.  One of them was a total bigot who said nothing but intolerant things to me.

(note that I did ignore the second sentence and didn't reply to that right?  It's the internet, after all.)
Currently; Not doing any streaming, found myself with less time available recently.  Still playing starbound periodically, though I am thinking of trying other games.  Don't tell me to play mmohtg's though please :).  Getting back into participating in VO and the successors again to.

Waffles

Quote from: Burnt Toast on May 29, 2015, 04:35:56 AM
It's called an NDA :)
There has been plenty of news... and confirmation that the deal is still in the works. Since you are unaware of the intricate dealings of the team... maybe just accept that those involved have stated... that it is ongoing.

Yeah, yeah. We get that by now.

Surely you understand that a vague statement made a month ago isn't enough to quell our worries? "The deal is ongoing" leaves so much to the imagination.

I understand they can't talk about it, I'd rather hear nothing than break the NDA, but it could literally mean anything from "We're close to getting the game back" to "We're losing a ton of footing right now."


Twisted Toon

Quote from: Arcana on May 29, 2015, 06:34:13 PM
There are servers, and then there are servers.  Mine are still matchstick bridges without many matchsticks.  I'm not specifically trying to denigrate any of the CoH rebuild teams or the reverse engineering team by suggesting that building an MMO from scratch is easy.  In fact, just the opposite: I'm doing the software equivalent of going walkabout, and trying to explore a space I know an awful lot about in principle, but never spent more than a few days visiting.  I'm like a car nut that one day decides its not enough to drive one, and tune one, and customize one, I'm going to build one from scratch.  Literally from scratch, and not from a kit.  Nuts, bolts, steel cable, metal tubing, arc welder, and maybe an engine block.  Each one hand-picked.  Why do that?  Because you'll end up with a better car than what you can get from a dealer?  Probably not.  Mostly, its because you just need to know if you could do it.  Or you're crazy.  Or both.

I have faith in your crazy self skillz, Arcana.  :)
Hope never abandons you, you abandon it. - George Weinberg

Hope ... is not a feeling; it is something you do. - Katherine Paterson

Nobody really cares if you're miserable, so you might as well be happy. - Cynthia Nelms

Arcana

Today's ridiculous MMO experiment topic is time, timers, and the nature of accuracy.  But first, circles.

If you learned to program at a time before graphical libraries, at some point you tried your hand at drawing actual shapes on the screen yourself.  Everyone starts by drawing a dot.  Most of the time, there's a command for that.  drawpixel(x,y) or something.  I'm sure many of us (programmers) stared mesmerized at blinking dots for a lot longer, and with an increasingly unjustified smile, than we'd like to admit.  Usually, there was also a command to draw a line: drawline(x,y,a,b).  This drew a straight line from (x,y) to (a,b).  Well, kind of straight.  Its actually not easy to draw a straight line on a computer screen, because modern computer screens are made of pixels.  Like checkerboards, you can only turn individual squares off or on (with different colors of course).  You can't make a genuinely straight line, you can only make a jagged approximation (tune in sometime around October 2017 when I talk about antialiasing in graphics engines).

At some point, the subject of circles comes up.  For many programmers, life was good: they had an actual command in their graphics libraries that drew circles.  Drawcircle(x,y,r) would draw a circle centered on (x,y) with radius r.  Done.  But some of us had to figure out how to draw circles *without* that command.  So how do you do that?  Well, here's a way:

for loop from 0 to 359:
   drawpixel(x + cos(loop) * r, y + sin(loop) * r)

Basically, we run a loop for every angle from zero degrees to 359 degrees (360 would be back at zero), and for each angle we compute where that part of the circle is by using basic trigonometry.  As loop increases, cosine(loop) decreases and sine(loop) increases, causing an arc to be drawn from horizontal to the right at three o-clock, counterclockwise towards twelve o-clock, and all the way around the circle.  The only problem with this method is that its horribly broken.

Its horribly broken in a number of ways.  First of all, it always draws 360 dots.  Small circle, large circle, always 360 dots.  For small circles, you'll be drawing the same dots over and over again because most of those angles will land on the same dot as the previous one.  Conversely, for big circles you won't have a circle, you'll have a connect the dots game.  You could guestimate how many dots are necessary and increase or decrease the range of the loop based on the radius r, but that's an imperfect solution.

More seriously, if you're doing this, you're probably living in 1987.  Hello, past-person, I'm from the future.  You're doing this on a computer that isn't very fast, and more importantly a computer that really isn't fast when it comes to trigonometry.  To be fair, *no* computer is "fast" when it comes to trigonometry.  Computers are really good at adding and subtracting.  Most are pretty fast at multiplication, but multiplication is sometimes slightly slower (in the old days, significantly slower).  Most really start to slow down when it comes to division, although modern CPUs can generally do division almost as fast as multiplication.  IN 1987, not so much.  And trig?  Nothing does trig as fast as addition and subtraction.  Simply put, not only does the algorithm have flaws, its very expensive.

If you're just going to draw a single circle and giggle at it, speed is not an issue.  But if you're writing a game, say, you may need to be drawing dozens or hundreds of circles; speed becomes more important.  Fortunately, there's a faster way to draw circles.  I actually independently figured this out while trying to figure out the fastest way to draw a diagonal line without using libraries, only to discover my genius was preempted by about two decades.  Still, its one of the more beautiful algorithms an early programmer can run into.

Imagine a vast checkerboard representing a computer screen, and imagine you want to draw a circle on that checkerboard, with its center at (x,y) and with radius r.  To make the discussion simple, lets actually give these numbers.  Lets say (100,20) with radius 10.  Ok, so where do we start.  We start by recognizing that circles are symmetric.  There's four points we can draw immediately.  We can draw (90,20) and (110,20) - those are the points to the far right and far left of the center.  And we can draw (90,30) and (90,10).  Those are the points at the top and bottom of the circle.  Those are easy.  Now, where are the rest.  Well, imagine we want to draw the circle starting from 3 o-clock (i.e. 110,20) and going counterclocksize up and left, towards twelve o-clock.  We actually know something about every dot we draw.  Every dot we draw is either going to move upwards one square from where we are, and possibly left.  In other words, either up one, or up one and left one.  There are no other possibilities as we move from three o-clock up to about 1:30 (halfway between one and two o-clock).  And we know something else: we know the equation for a circle: x^2 + y^2 = r^2.  We can therefore do something like this: pick a pixel that is one higher than where you are now.  If x^2 + y^2 > r^2, we're now outside the circle.  In that case, move one to the left.  Draw that pixel.  Repeat.  Do that until you reach midway between one and two o-clock.

What about the rest of the circle?  Well, circles are symmetric.  Every time you draw a pixel one up, also draw its reflection down below the x-axis.  And also draw its reflection to the left across the y-axis.  And draw a reflection in the lower left hand quadrant.  *And* also as you draw from three o-clock up and to the left, draw the same pixels starting from 12 o-clock and heading downward and to the right from 12 to 1:30.  For every pixel you calculate, you'll draw eight: two each in each quadrant.

Not only do we have an algorithm that no longer uses trig, it explicitly only uses the stuff computers are fast at calculating: addition, subtraction, and multiplication.  And for every pixel we use multiplication to figure out, we draw seven more that require no decisions, just addition and subtraction.  This algorithm is *fast*.  Back when I was learning to code, Bresenham's Algorithm, as it is called, was thousands of times faster.

So what does any of this have to do with time, and timers.  Well, I was thinking about Bresenham when I was thinking about my clock code:

miltick = (time.clock() * 1000 % 1000)
nexttick = (int(miltick / 33.33) + 1.01) * 33.33 + 1
print "sleep:",miltick,nexttick,nexttick-miltick
time.sleep((nexttick - miltick)/1000)

There's multiplication, modulo division, actual division; there's a lot of math just to say "sleep for this much time".  There's also a fudge factor in there that highlights the other reason I'm not comfortable with this code.  Notice at one point I add "1.01".  Why not just 1?  Because I have to, because there's an inaccuracy in the code that's all but impossible to completely cure.  I'm trying to create a sequence of beats, each one thirtieth of a second long.  30 ticks per second.  I'm doing that with some roundabout code: I figure out what the current time is in milliseconds, and then I divide by 33.33.  Because each tick is 33.33 milliseconds long.  Except they aren't: they are actually 33.3333333333333333... seconds long.  That tiny inaccuracy means I have to be careful about my arithmetic.  If I made every single tick 33.33 milliseconds long, then after 30 ticks I would have clocked 999.9 milliseconds, not 1000.  That tenth of a millisecond can be problematic, particularly when I coincidentally need to sleep for a very short amount of time because coincidentally the current time is *very close* to when the next tick should occur.

Its a question of precision.  Being a little off is not a problem in general, but we need to make sure small errors in calculations don't ripple upward and throw off important calculations, or accumulate over time.  And really, the problem is division.  Its one thing to say you want something to happen thirty times per second.  The problem is there's no way to accurately represent how long each interval is in milliseconds.  You can fudge this, but a good solution would avoid that problem.  It would realize, as Bresenham does, that the world inside the computer is a discrete world, and your game is probably a discrete world, and the object is not to be perfect because that's impossible, but rather to guarantee that you're always as close as possible.  And for bonus points, its usually possible to do so with very simple math, math that's fast and efficient to run.

I don't need to know precisely how many milliseconds each frame takes.  I actually only need to know whether its time to act or not.  If I've processed frame 2048, I don't have to do anything until its time to process frame 2049.  When its time to process frame 2049, I act, then wait for 2050.  What I want is a way to keep track of what I've done, and a way to know if I'm falling behind and should do more.  Just like Bresenham says to always move up one, and decide whether to also move left one.

I do that by taking the current time, and multiplying by 30, and then rounding down to the nearest integer.  That's my frame count.  If I do something, I record that frame number.  I then sleep until the current frame number is different.  How long?  I make a reasonable guess, plus a fraction more.  That means I will always sleep a little longer than I need to, but I'm almost guaranteed to wake up on the next frame.  I can do all of this without modulo arithmetic, without division, without dealing with repeating decimals.  I don't *need* to know how long each frame lasts, or calculate and represent that number.  I only need to know if I'm doing thirty of them per second.  And I can do that by counting frames, and counting milliseconds, and sleeping for a reasonably correct amount of time.

Because I'm just counting now, and not trying to measure out precise quantities of time, I can also count other things besides 1/30th of a second frames.  I can count seconds.  I can count tenths of a second.  I can count anything.  So I can create a set of timers, each of which counts different intervals.  A timer "triggers" when its last updated value is lower than the current one "now."  I can then use that to trigger specific actions at specific times.  And its all self-correcting.  If I don't sleep long enough, the count will still be the same, and I will not act, I will sleep again.  If something goes wrong on your computer and somehow the client wakes up too late, the counts will be off by more than one.  I will know *exactly* how many intervals I've accidentally slept through or skipped because I was too slow.  I can then decide how best to catch up (probably I send a signal to the server to say "oops I'm out of sync, lets do a one-off resync process to make sure I'm caught up, then continue where we left off").

Now all I have to do is code that.

Abraxus

Quote from: Waffles on May 29, 2015, 10:00:46 PM
Yeah, yeah. We get that by now.

Surely you understand that a vague statement made a month ago isn't enough to quell our worries? "The deal is ongoing" leaves so much to the imagination.

I understand they can't talk about it, I'd rather hear nothing than break the NDA, but it could literally mean anything from "We're close to getting the game back" to "We're losing a ton of footing right now."

The most frustrating part of an NDA like this is, they are not even able to say if the momentum is still positive, or negative.  So, in the absence of information, we are left to entertain our worst fears, which we do on a frequent basis. 
What was no more, is now reborn!

Abraxus

What was no more, is now reborn!