Ok... NOW I'm sad.


Amanita

 

Posted

Quote:
Originally Posted by Starsman View Post
Arcanaville, I do have to ask... 3k hours for a MyBrute-like rendition?

Is this creating a full 3D client and 3D models from scratch?
I wasn't really thinking about animations. I was thinking about the code to properly translate the raw powers database into powers, attribmods, and the relevant elements of the VFX tables (particularly the sequence and animation data that can be converted into root times) into a time-accurate engine that accounts for all attribmod effects, power enhancement, and combat mechanics. Also a rudimentary AI.

In other words, the entire combat engine minus most of the graphical hooks, three-dimensional real time positioning, and large-scale entity tracking. A 2D side scroller version of the entire combat engine.

If you want to know where the 3000 hours went, consider this: how many of your 800 hour estimate was allocated to handle projectile velocity. How many to implement the asynchronous entity database used by GrantPower. How many to handle rooting. How many to handle all the different kinds of stacking (stack, replace, ignore, extend, overlap, limited). The postfix expression system. Diminishing returns.

There's a lot of stuff in there when you stop to itemize it all. I would guestimate there's about 200 different distinct effects or systems in the combat engine you'd have to account for to properly emulate all of the player and critter powers. Pseudo pets. Requires clauses. CancelOnMiss. Magnitude and Duration based Resistance equations. The complete tohit algorithm. Interruptibility. IgnoreStrength lists. Power redirection. Rage bars. The recharge system. The combat clock. Endurance and recovery. Perception. Intangibility. Mez. Range. I'm not even going anywhere near the physics engine.

Just think about how much code it would take just to understand how to correctly calculate Cur, Abs, Strength, Res, and MaxMax effects on the approximately fifty different attributes each entity has. There's probably a good twenty hours of coding just for that.

Edit: and I'm not as fast a coder as I used to be. A really really fast coder might be able to do all that in 1000 hours. Maybe.


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

Pssht, Canny. We all know entropy's a lie. You only improve as you age!

Starsman : Yeah, but by first question (encoding AVs) was dumb (I borrowed it wholesale from an earlier post by Arcana on the subject without thinking). I changed the post to "hold on" as soon as I actually read what I'd written.


 

Posted

Quote:
If you want to know where the 3000 hours went, consider this: how many of your 800 hour estimate was allocated to handle projectile velocity. How many to implement the asynchronous entity database used by GrantPower. How many to handle rooting. How many to handle all the different kinds of stacking (stack, replace, ignore, extend, overlap, limited). The postfix expression system. Diminishing returns.
OK I see better what you mean you want to do. When you invoked MyBrute like I figured you meant something VERY MyBrute like (turn based and as far as I understand random skill selection.)

Many of the things you mention I have already dived into, it is indeed intimidating. Dont think 3k hours still. What may eat me is the time require to extract in a usuable format all animation and VFX and power data. With community help I may at least get some of that from the start, since it's already being extracted by the team maintaining City of Data.

Quote:
Edit: and I'm not as fast a coder as I used to be. A really really fast coder might be able to do all that in 1000 hours. Maybe.
I need to retract my 800 number btw, I did the math wrong. I meant to translate 40 weeks months into hours and for some stupid reason multiplied by 20 instead of 40 hour weeks. So I actually should have said 1600 hours.


 

Posted

To the OP - I understand exactly how you feel. For more years than I can count I've been praying to someday be able to remove the glow from hasten and superspeed, and those little circles from superjump. I've also been praying for a dual pistols/martial arts combination. You can imagine my surprise and joy that all of that was finally being done in the very same issue! And no one here has to imagine my disappoint - it's what we're all feeling right now


 

Posted

Quote:
Originally Posted by Starsman View Post
Many of the things you mention I have already dived into, it is indeed intimidating. Dont think 3k hours still.
My estimate includes the fact I would be working on it on nights and weekends, and not all of those as well. Which means my speed would be much slower than if I was spending actual eight hour days coding continuously.

I also can't work on something for thousands of hours with nothing to show for it for years, so I would have been implementing it in a manner consistent with getting an initial core running and then adding mechanics over time. That's also not the most efficient way to do it, but its the only way to do it while still remaining sane and not getting paid.


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

Quote:
Originally Posted by Arcanaville View Post
My estimate includes the fact I would be working on it on nights and weekends, and not all of those as well. Which means my speed would be much slower than if I was spending actual eight hour days coding continuously.

I also can't work on something for thousands of hours with nothing to show for it for years, so I would have been implementing it in a manner consistent with getting an initial core running and then adding mechanics over time. That's also not the most efficient way to do it, but its the only way to do it while still remaining sane and not getting paid.
Ah that makes sense. I was also thinking a hypothetical case where I (or some one) would be working on it full time with some one providing compensation.

I wish I was able to go back to college with the stuff I know today... why on earth did I waste those years studding visual arts?! *sigh*


 

Posted

OMG!
I havent seen those powers till now.
I knew Psionic melee, Radiation armor/melee was coming and the origins pools also but, those are tons of new powers and powersets.
Kay, now Im officially depressed AGAIN.


 

Posted

I was sad that I'll never get to make a Rad/Energy Tanker.

Now I'm even sadder that I'll never get to make a Rad/Rad Tanker who can choose from about 4 new power pools that all look smexy as hell.


 

Posted

Quote:
Originally Posted by Arcanaville View Post
I wasn't really thinking about animations. I was thinking about the code to properly translate the raw powers database into powers, attribmods, and the relevant elements of the VFX tables (particularly the sequence and animation data that can be converted into root times) into a time-accurate engine that accounts for all attribmod effects, power enhancement, and combat mechanics. Also a rudimentary AI.

In other words, the entire combat engine minus most of the graphical hooks, three-dimensional real time positioning, and large-scale entity tracking. A 2D side scroller version of the entire combat engine.

If you want to know where the 3000 hours went, consider this: how many of your 800 hour estimate was allocated to handle projectile velocity. How many to implement the asynchronous entity database used by GrantPower. How many to handle rooting. How many to handle all the different kinds of stacking (stack, replace, ignore, extend, overlap, limited). The postfix expression system. Diminishing returns.

There's a lot of stuff in there when you stop to itemize it all. I would guestimate there's about 200 different distinct effects or systems in the combat engine you'd have to account for to properly emulate all of the player and critter powers. Pseudo pets. Requires clauses. CancelOnMiss. Magnitude and Duration based Resistance equations. The complete tohit algorithm. Interruptibility. IgnoreStrength lists. Power redirection. Rage bars. The recharge system. The combat clock. Endurance and recovery. Perception. Intangibility. Mez. Range. I'm not even going anywhere near the physics engine.

Just think about how much code it would take just to understand how to correctly calculate Cur, Abs, Strength, Res, and MaxMax effects on the approximately fifty different attributes each entity has. There's probably a good twenty hours of coding just for that.

Edit: and I'm not as fast a coder as I used to be. A really really fast coder might be able to do all that in 1000 hours. Maybe.
I knew you were too exhaustive. The combat engine I was thinking about only encompassed the vitals, not the positionning. Making an engine where you can run/jump/fly is basics in any game and engine, and *it* should handle the line of sight, just pass the command to launch the power through it and *it* will queue the power until it can get launched, where it will notify the combat engine that will continue to queue it for (eventual) animation reasons, and pass it back to the positioning engine when ok etc... as long as they don't agree back-to-back (in the same frame), in which case the power is launched. So I'm only talking about the power/animation/vitals engine.

The key here is not to think of arcanaTime as a thing to implement, put it in the engine, like fighting game do. Time (as in wall time) doesn't really exist, only frames do. And every player has seen evidence of this in CoH, because when it lagged in Cimerora, the time was lengthened because the game needed more time to compute every event that happened at the same time in a "frame". It doesn't need to be "time-accurate", because it gives the "tic" and everything waits on it.

Graphics and game engine were tightly intertwined back in the old days, basically because you had no need of processing events inbetween longer-to-render frames, or at least so the game devs thought. Basically, the whole server (I think that's how you discovered ArcanaTime) is frame-based, it's just a receiver that gets notified of entities (including user) input (including placements) and executes scripts - the powers. Given a programmer that had the full specifics to leverage the Mids database (which I suppose he could ask the Titan to give), he already has the power data, he just needs to translate it in frames and effects and so it's just a request-based server that takes requests from the entities and produces everything you talked about: the recharge, the effects, etc... It's just translating each and every power effects into a modification, formulas to apply to values and delays in frames (these delay are calculated in frames at launch, either because the distance between the to entities and the velocity of the projectile is know, or the effect just states "after Xseconds"), and recharge is translated into "points" that, if full, the power is recharged and at each frame, the recharge rate is calculated to produce the number of points given to each power on cooldown.

In the case of CancelOnMiss of DoTs/HoTs, for instance, these are just chained scripts/effect, where the first application (what's actually listed in the power effects) is queue script2), where scriptN contains (OnHitapply damage and queue scriptN+1)). and ends at scriptM for a DoT with M ticks. In the case of pseudopets, spawn the correct entity.

I may have jacked up the calculus because I supposed the power effect lists are a given, but if you consider power effect as data, and not the engine, it is *not* upward of 1000 hours to make. Maybe not 3 week-ends as I said, but still, 1000 hours ? That's taking far too many feature into account, not just the *power/vitals* engine. Plus, I didn't include the AI, just the thing that would make everything "live" and tick based on AI and player input.

And also, I want to say that it's how *I* would implement it, and it should be compliant to how the game plays, if it's not *the* way it's implemented. If I'm wrong about this idea, I'd like to be challenged with cases where it doesn't work.



WE ARE HEROES. THIS IS WHAT WE DO.
City et moi, �a colle !

 

Posted

Some things, like CancelOnMiss, Arcanatime, and effect conditions are probably actually easier to implement than to simulate. They seem complex on the surface, but that complex behavior is actually the result of two much simpler systems interacting with each other.

Take 'Arcanatime' for instance. There's no 132ms timer, and if you were to use one, you wouldn't accurately reproduce the timing. There's a frame timer (30hz) and a combat clock (125ms), and it's the sync between the two that results in an average cycle time of 132ms, but it will alternate between being a little higher and a little lower as the two timers drift in and out of phase.

Effect conditions are literally miniature programs in their own right, and RPN interpreters are dead simple to write -- it's implementing all the variables that they reference that would be the hard part. But to evaluate them the easiest way is for the world to actually be in the state you want it to represent, and just execute them.

CancelOnMiss requires complex math to calculate in a single bound, but if you're implementing it then you just evaluate the chance on each tick and you're done.

Pseudopets are similar. If your engine actually supports distinct entities, then they're no problem at all, they're just like an AI controlled ally, except not targetable. Programs like Mids have to bend over backwards and use all sort of ugly tricks only because they weren't designed with the idea of separate entities in mind.

Also, don't forget that Arcanaville has already spent a significant amount of time thinking about and figuring out how the combat engine works. I'm not sure if that was factored in as part of the 3,000 hour estimate or not.


 

Posted

Quote:
Originally Posted by Codewalker View Post
Also, don't forget that Arcanaville has already spent a significant amount of time thinking about and figuring out how the combat engine works. I'm not sure if that was factored in as part of the 3,000 hour estimate or not.
Nope. Just coding time.


 

Posted

Quote:
Originally Posted by Mister_Bison View Post
In the case of CancelOnMiss of DoTs/HoTs, for instance, these are just chained scripts/effect, where the first application (what's actually listed in the power effects) is queue script2), where scriptN contains (OnHitapply damage and queue scriptN+1)). and ends at scriptM for a DoT with M ticks. In the case of pseudopets, spawn the correct entity.bout this idea, I'd like to be challenged with cases where it doesn't work.
That would be highly inefficient. I would make power and attribmod activation period explicitly supported in the primary event loop.


Quote:
And also, I want to say that it's how *I* would implement it, and it should be compliant to how the game plays, if it's not *the* way it's implemented. If I'm wrong about this idea, I'd like to be challenged with cases where it doesn't work.
Where is your data going to come from, if your engine doesn't have a one-to-one mapping of mechanics to the data we have?

For each effect that a power performs, here an incomplete list of what a game engine would have to understand, not counting superficial things (like floating text and combat spam):

Attribute affected (i.e. Smashing, Melee_Attack, Regeneration)
Aspect affected (i.e. Cur, Abs, Str, Res, MaxMax)
Scale value
Table (i.e. Ranged_Damage, Melee_Buff_Tohit, Melee_Ones)
Attribmod target (i.e. self, target)
Period (i.e. how often the effect occurs)
Duration (i.e. how long the effect lasts)
Chance (i.e. chance the effect will take effect)
Delay (i.e. how long to delay effect after hit before taking effect)
NearGround, AllowStrength, AllowResistance, AllowCombatMods (flags)
Requires (postfix expression which must evaluate true for effect to occur)
AttribmodType (i.e. Magnitude, Duration, Expression)
StackingType (i.e. stack, ignore, replace, extend)
StackLimit (maximum number of times this specific effect can stack)
Duration (used for Magnitude type)
Magnitude (used for Duration type)
MagnitudeExpression (postfix expression used for Expression type attribmods to calculate magnitude scale value)
InnerRadius, OuterRadius (min and max radius allowed for effect used when power is spherical AoE)
SuppressionCodes (codes representing conditions under which effect is temporarily suppressed)
Reward (used to define powers granted with GrantPower effects)
EntityDef (used to define special entities for EntityCreate effects)

Alternatively, if you want to make up your own engine in a couple weeks that doesn't have this complexity, you'll then have to convert all the powers data to that new engine somehow.

How long would it take just to write the expression engine that figures out what to do with:

kMeter,source>,.9,<,kHeld,target>,0,>,kSleep,targe t>,0,>,||,&&,enttype,target>,player,eq,&& (stalker crit)

And how would you make Dual Pistols work: would you properly implement GlobalChanceMod or would you just recreate the powerset by hand? http://tomax.cohtitan.com/data/power...d.Dual_Pistols

Would you write a completely new combo system and redo all the Dual Blades powers by hand, or implement mode setting and use the original data: http://tomax.cohtitan.com/data/power...ee.Dual_Blades

Do you write your own Fury system and redo all Brute attacks, or implement the Rage bar and Brute fury damage buffs within the data?


I think its easy to say "just convert the data to formulas" without actually seeing the data or knowing the mechanics. I would challenge anyone to just *list* the mechanics that would have to be implemented in four weekends much less actually implement them in code.


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

Quote:
Originally Posted by Arcanaville View Post
I think its easy to say "just convert the data to formulas" without actually seeing the data or knowing the mechanics. I would challenge anyone to just *list* the mechanics that would have to be implemented in four weekends much less actually implement them in code.
http://www.youtube.com/watch?v=4bBD5yyT-s0


Quote:
Originally Posted by Arcanaville View Post
Softcapping an Invuln is fantastic. Softcapping a Willpower is amazing. Softcapping SR is kissing your sister.

 

Posted

Quote:
Originally Posted by Codewalker View Post
Take 'Arcanatime' for instance. There's no 132ms timer, and if you were to use one, you wouldn't accurately reproduce the timing. There's a frame timer (30hz) and a combat clock (125ms), and it's the sync between the two that results in an average cycle time of 132ms, but it will alternate between being a little higher and a little lower as the two timers drift in and out of phase.
Basically, although there's some extra complexity in there that causes some effects players might not care about. My guess is that there's at least three main timing "loops": a 30/sec animation synchronization event loop that synchronizes server events with client activity, an 8/sec impulse action loop that the game engine uses to initiate events and actions, and I have some evidence for a 2/sec decision loop that determines when critters decide to take a course of action.

I've actually put more thought than is really useful into how to account for time in CoH. How to deal with things like recharge and regeneration (tick decrementers seems the best approach), event overflow (i.e. Hami lag: global clock tick-based correction seems the best there) stuff like that.


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

I should also mention that how we conceptualize what powers do as players and what they actually do mechanically are often very different. So if you decide to make a game based on the conceptual nature of the powers you may find yourself recreating the powers from scratch, because the data we have doesn't do what you think it does.

For example, CoH has no "chaining" mechanic. None. Chaining powers grant powers to targets which create an aura around the target which forces the target to grant additional powers to a limited number of the targets around them which themselves damage the target and grant the same aura to those targets and set a flag which prevents the same target from being hit again by the target it hit with its own aura.

All the data says is "give that guy a new power." It takes human comprehension to look at the sum total of what's going on and say "that's a chaining attack." But if you make a game engine with a chaining mechanic, what's going to use it? None of the powers in City of Heroes, until you make them do so by hand. Unless you're smart enough to create an expert system that can deduce developer intent from the data.

A lot of powers work like this. Tanker single target attacks aren't: they are AoEs, all of them. That's so that taunt can hit multiple targets. But the damage in them is restricted to only the targets exactly zero feet from the center of the AoE. Which, in the modern game, is at most one thing. Do you implement that behavior directly, or do you again, by hand, change the definition of all those tanker attacks to be single target and implement a new mechanic for AoE taunt effects as a special case?

Do you directly implement exactly how our game engine deals with buffs that buff themselves? Or do you fudge, again by hand, Combat Training: Offense?

There's actually a set of flags that tell the game engine to treat things like enhancements differently than powers - enhancements actually *are* powers, just powers that work differently. Do you hard code implement that distinction directly, and then have to deal with things like Luck of the Gambler: Def/+GlobalRech as yet another hand-edited special case? This is another case where we think of something as one thing, but the game thinks of it as something completely different, and there are cases where the difference is important. In the above enhancement, the +Def Strength should only affect the power its slotted into. The +Rech Strength should affect the entire player.

There's no "rule of five" except in the devs' head. That's not something the game engine is directly aware of. Its actually just another Requires clause on the passive powers that are granted by the inventions as the set bonuses. Do you implement that in a hard coded fashion or do you implement that specific field in a general purpose manner? Because if you don't, you'll then have to make a special case rule for the "rule of one" used by Bruising, and the "rule of three" for the Might of the Tanker proc.

If you don't implement all of the complexity of the game engine, you'll be left with the actual data being a cloud of special cases, which would probably take more time to implement in the long run. What we see and what the game engine does are often radically different in the details, and the game obscures a lot of funky activity the data contains to make interesting things happen. Skip that complexity in the engine, eat it in the data. There's no way around that.

What's a single target attack, what's a pet, what's a buff, what's an enhancement - these all sound like easy questions to answer. But they aren't, at least not by just looking at the data.


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

Quote:
Originally Posted by Arcanaville View Post
For example, CoH has no "chaining" mechanic. None. Chaining powers grant powers to targets which create an aura around the target which forces the target to grant additional powers to a limited number of the targets around them which themselves damage the target and grant the same aura to those targets and set a flag which prevents the same target from being hit again by the target it hit with its own aura.
And all the newer chaining powers -- from reworked Chain Induction to Electric Control and forward -- use pseudopets that have a single power with a spherical AoE and 1 or 2 target max -- a power that in most cases does damage and summons another psuedopet for the next hop.

There's often more than one way to skin a cat with the engine. Dual Pistols probably could have been reworked with the newish "OwnPower?" RPN conditions and work exactly the same, while being completely different behind the scenes.

There's some attribs in there that never got used at all. PowerChanceMod finally made an appearance when Overwhelming Force was 'nerfed', it apparently works like GlobalChanceMod but is limited to a single power like the name would imply. Normally pretty useless since it doesn't extend outside the current power, but when used on an enhancement it makes it only apply to the power that the boost is slotted into. That also partially confirms one of my theories about how enhancements work internally, but there's still a bit of mystery to it.

Not to mention all the possibilities that hooking Lua up to the powers system could have offered...

(I've brainstormed this quite a bit myself, as for the eventual Mids successor I wanted to push for doing a more accurate simulation of the combat system rather than a ton of special cases that are a PITA to maintain)


 

Posted

Quote:
Originally Posted by Arcanaville View Post
For example, CoH has no "chaining" mechanic. None. Chaining powers grant powers to targets which create an aura around the target which forces the target to grant additional powers to a limited number of the targets around them which themselves damage the target and grant the same aura to those targets and set a flag which prevents the same target from being hit again by the target it hit with its own aura.
Minor nitpick: that is how the original Chain Induction worked and it was a bit buggy, plus was not able to transfer enhancement strength.

I think all chains now are close to that, but they don't grant a power, instead they summon an incorporeal pet at the location of the target that in turn has a damage aura with a max target of 1, that aura in turn does the same, summons another similar pet at it's target, etc etc.

This was one of the first things that changed when Arbiter Hawk (or maybe Synapse but I think hawk is the one with the chain obsession) fixed by re-working the original approach for implementing chains.


 

Posted

Quote:
Originally Posted by Codewalker View Post
(I've brainstormed this quite a bit myself, as for the eventual Mids successor I wanted to push for doing a more accurate simulation of the combat system rather than a ton of special cases that are a PITA to maintain)
Wait... you where on charge of that code? I attempted various time to get a hold of some one, every time contacted the wrong person. I never pursued it extensively since I ended up jumping to other things, but my attack simulations attempts always got abandoned because the gargantuan amount of work I would had have to go through to acquire all the data that is in Mids or CoD.

A few times i thought it would had simply been best if I just somehow got it into Mids itself, but again, always ended up getting derailed to other stuff.


 

Posted

Quote:
Originally Posted by Codewalker View Post
And all the newer chaining powers -- from reworked Chain Induction to Electric Control and forward -- use pseudopets that have a single power with a spherical AoE and 1 or 2 target max -- a power that in most cases does damage and summons another psuedopet for the next hop.
Quote:
Originally Posted by Starsman View Post
Minor nitpick: that is how the original Chain Induction worked and it was a bit buggy, plus was not able to transfer enhancement strength.

I think all chains now are close to that, but they don't grant a power, instead they summon an incorporeal pet at the location of the target that in turn has a damage aura with a max target of 1, that aura in turn does the same, summons another similar pet at it's target, etc etc.

This was one of the first things that changed when Arbiter Hawk (or maybe Synapse but I think hawk is the one with the chain obsession) fixed by re-working the original approach for implementing chains.
Yeah that was recent and slipped my mind, and I believe its possible that became practical when Television made some changes to the entity spawn and clean up code that might have otherwise made that a bit fugly.

I hadn't really looked closely at the "deep data" since I21, honestly, except in certain limited situations.


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

Quote:
Originally Posted by Arcanaville View Post
Yeah that was recent and slipped my mind, and I believe its possible that became practical when Television made some changes to the entity spawn and clean up code that might have otherwise made that a bit fugly.

I hadn't really looked closely at the "deep data" since I21, honestly, except in certain limited situations.
I am certain it was in before GR, though, at least for Chain Induction, since Castle talked about it and... well I quit the game until I23 once GR launched (felt that strongly about blue-side Brutes making tankers irrelevant.)

So I never got to see any announcement or changes in between I18 and I23, plus Castle (and BaBs) were laid off around I19, no?


 

Posted

Quote:
Originally Posted by Starsman View Post
Wait... you where on charge of that code? I attempted various time to get a hold of some one, every time contacted the wrong person. I never pursued it extensively since I ended up jumping to other things, but my attack simulations attempts always got abandoned because the gargantuan amount of work I would had have to go through to acquire all the data that is in Mids or CoD.

A few times i thought it would had simply been best if I just somehow got it into Mids itself, but again, always ended up getting derailed to other stuff.
No, I wasn't. Diellan is in charge of the Mids code. I helped out a tiny bit here and there, mostly with suggestions. I was involved in planning the project to eventually write an HTML-based replacement for smartphones, tablets, and desktop, but it never got especially far.

The Mids database is somewhat far removed from the actual source data, just because a lot of the special case stuff was written before some of the mechanics were fully understood. For a long time it was populated by TopDoc's csvs, which I assume are dumped from the bin files.

The source code was originally written by Mids -- who the name comes from. He allowed a few people to maintain it after he stopped playing, on the condition that it remain closed.

I did take over maintaining City of Data a about a year and a half ago; and started producing our own bin dumps internally. Mids was switched over to use those about 8 months ago IIRC. I have a pair of programs that dump the powers data (the full attribmod/effects data was not included in the client until Real Numbers was added in around I12.5). One into a database format compatible with City of Data, and the other into TopDoc-compatible CSVs for Mids, with some cleanup of the misnamed fields and attribs, and a few extensions added later like PPM.

Neither form completely represents the true state of the data, which was compiled by the devs from simple text files. From what I've gathered those text files were generated out of Excel by some custom tools.

PS: I apologize if yours was one of the PMs that came in requesting powers data that I ignored. Due to the nature of obtaining it, which technically went against the ToS, it wasn't something that we really talked about outside of a small group. Unfortunately that made some people seem a bit cliquish, but it was a necessary evil given the sensitive nature of the work.


 

Posted

Quote:
Originally Posted by Codewalker View Post
(the full attribmod/effects data was not included in the client until Real Numbers was added in around I12.5)
Actually, I'm pretty sure it was in there by I10, and positive it was in there by I11, because that's when I took over the Iakona mantle.

It was actually being able to see the powers data in I11 that allowed me to give intelligent feedback to pohsyb on how Real Numbers was shaping up without actually being able to see it. By then I knew what the raw data he was confronted with would look like, and could ask informed questions like "how are you going to deal with that?"


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

You're probably right. That was before I started archiving every incremental build, and my memory is a little fuzzy from that time.


 

Posted

Quote:
Originally Posted by Codewalker View Post
PS: I apologize if yours was one of the PMs that came in requesting powers data that I ignored. Due to the nature of obtaining it, which technically went against the ToS, it wasn't something that we really talked about outside of a small group. Unfortunately that made some people seem a bit cliquish, but it was a necessary evil given the sensitive nature of the work.
Nop, other than Arcanaville herself (she was always good at telling me she didnt have the data, though) I never asked anyone for data because I was aware how sensitive it was and no one that didn't know me would ever entrust me with anything (same way I never entrusted anyone but Arcanaville with the tidbits of things I learned about.) Also... a few years back I coded an SSIS job that leached every single data field from City of Data, even "hidden" pages

In fact I think after that was that Arcanaville started trusting me with small tidbits of data here and there. That job of broke as CoD got redesigned. I was working on a new one recently, though but since I started doing some coding for profit on my free time, I kept finding it harder and harder to justify to myself spending TOO much coding time into the game.

My dream, for years, was to make a program that would allow the devs to easily benchmark things like survivability and offense, and also yield warnings when an enemy group was insanely and unfairly overpowered against specific builds. Lack of sufficient data (CoD was always behind for what I wanted) made this too hard to ever accomplish.