Ok... NOW I'm sad.


Amanita

 

Posted

Quote:
Originally Posted by Codewalker View Post
And since I've seen it mentioned a couple more times, I'll repeat: The City of Data database is not where you'd want to start for something like that. It's a mess. I've been trying to clean it up here and there, but it's still missing a lot of fields, some are the wrong type or have the wrong precision (chance was rounding at hundredths, so things like 0.5% chance on Overwhelming Force showed as 0...), some make assumptions that they shouldn't, and many things are shoehorned into a relational structure that they were never designed to be in.

The AT modifiers table was one of the most mind-bogglingly strange SQL designs I've ever seen, which is why it non-obviously broke once the devs went past 50 player + NPC classes. I had to pull it out entirely and redesign it from scratch.

If you're seriously considering writing a combat engine just for the hell of it, you're much, much better off just figuring out how to parse powers.bin directly...
I'm sorry Codewalker, I should have answered specifically earlier. I have heard you so it changed my meaning of "take data is in City of Data" to "begin where City of Data left off, which is still a good start", and any programmer would be interested, if he has to, look at the work done to take apart what's still good in it and correct the wrongs that could still be sitting in the code as "//OMG this is ulgy fix it later". But I continued to use "take city of data" because it was more near than far of what is needed, I think. Of course that takes a computer engineer, not a programmer, to do that.

Did I mention I graduated as engineer, not from programmer background ?

So, off to implement the attribmod calculator !



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

 

Posted

Quote:
Originally Posted by UberGuy View Post
If it does come to that, while I don't think anyone would begrudge you (or anyone else) not soaking the time into a game that's not alive, I rather hope you maintain enough interest to linger on one of the community sites. Even if you didn't get seriously involved, I think your insights could do nothing but help the folks who, denied access to the full game, would inevitably seek to dig into the client and other info to build third party tools around keeping the memory and spirit of the game alive.

It's a selfish hope to be sure, but I'd do my part to try and keep the community interesting .

But yes, though I hope its implied above, explicit thanks is in order for your involvement in the game. If I have any intellectual claim to fame, it's that I manage to warehouse a lot of info I've learned elsewhere. A great deal of info I've learned about CoH can be tied directly to you, either through your own discovery, or through posts making succinct description or analysis using info others had gleaned.

Starsman, I didn't hang out in the same forums as you as much, I don't think, but I learned a lot from you as well.
I'm not spending very much time there while the official forums are still alive, but I do have accounts on unleashed and titan. I'll probably be around for at least a while there, beyond whatever happens here.


[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 Mister_Bison View Post
So, off to implement the attribmod calculator !
That's so cute.

*grabs popcorn*


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 Void_Huntress View Post
Quote:
Originally Posted by Mister_Bison
So, off to implement the attribmod calculator !
That's so cute.

*grabs popcorn*
Thanks for the cheering, because I'm not trying to accomplish something, I'm doing something. I'm assessing how much can be done in a week-end day by a moderately knowledgeable programmer/engineer.

Salt or sugar popcorn ?

EDIT: Okay, first throw is done, I think. Now I need data to test it. Approx 4 hours (had a social meal). Then again, I was just writing what I had already pictured in my head.
I think I'll need to add some things though, but now the time is on pause until I get some creating and coding done to feed data to the calculator. Then I'll need some more time to make a UI to test it. I just need bulk import from some City of Data tables.

EDIT2: heh, forgot to take level into account, brb.



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

 

Posted

Quote:
Originally Posted by Mister_Bison View Post
Ok I just remembered I have IRL things to do before tonight, I'll finish my day of work tomorrow or maybe after dinner.

What's a week-end worth of coding by the way ? 2*8 hours or 2*As many hours as you stay awake ?
16 hours.. going by the standard of a days work being 8 hours...


 

Posted

Quote:
Originally Posted by Mister_Bison View Post
I'm asking because coding the week-end is already off-work working so...
I was just going by what i was told at uni when it came to our coding projects. We were told that no matter when we started coding, a "full day coding" was 8 hours. That could be 2 lots of 4 hour stints, 4 lots of 2 hour stints, what ever. But it would be safe to assume that a "full days worth of *productive* coding" was 8 hours.

Of course, for me and my friend, our 8 hours also included playing pool, talking about the design and hashing it out on paper/in the air as we came to each problem. It helped a lot when we hit those brick walls of "what the hell do we do in *this* situation without making a mess of it".

Sure, you could probably slave away over night, using and abusing redbull, alcohol, and enough proplus to keep the titanic afloat, but you would find that *generally* speaking, your best work was inside those 1st 8 hours.


 

Posted

Quote:
Originally Posted by Mister_Bison View Post
I'm asking because coding the week-end is already off-work working so...
Nobody is paying you so there is no overtime to count for here.


 

Posted

Quote:
Originally Posted by Gangrel_EU View Post
But it would be safe to assume that a "full days worth of *productive* coding" was 8 hours.
Important to note: walking in circles, shaking head to think, going to the kitchen to get a drink while still thinking, thats all part of it. It counts towards the hours. If you only count the time you push keys into the keyboard, it's easy to say it took 2 hours to make a 16 hours worth of production.


 

Posted

Quote:
Originally Posted by Starsman View Post
Important to note: walking in circles, shaking head to think, going to the kitchen to get a drink while still thinking, thats all part of it. It counts towards the hours. If you only count the time you push keys into the keyboard, it's easy to say it took 2 hours to make a 16 hours worth of production.
oh 100% agreed. It takes more time to *work out* what to type, than to actually type it.

And even thinking about *how* to start the project before you even lay fingers to keyboard, planning out the various modules/structure all takes up a lot of time.

I guess in a way, with the discussion on the forums already, that counts to the hours spent doing it


 

Posted

Quote:
Originally Posted by Mister_Bison View Post
Ok I just remembered I have IRL things to do before tonight, I'll finish my day of work tomorrow or maybe after dinner.

What's a week-end worth of coding by the way ? 2*8 hours or 2*As many hours as you stay awake ?
Nobody said anything about a "weekend worth" of coding:

Quote:
Originally Posted by Mister_Bison View Post
To simulate the combat dynamics only, one wouldn't need more than 2 or 3 week-ends, double that to make it optimized.
As far as I'm concerned, you may spend your weekends in any way you choose. However, most people consider the weekend to be Saturday and Sunday (unless you live in Israel) and its entirely your choice how many of the hours on those two days you choose to spend on this particular endeavor as opposed to all other activities including eating, sleeping, and interacting with other human beings.


[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 Starsman View Post
Important to note: walking in circles, shaking head to think, going to the kitchen to get a drink while still thinking, thats all part of it. It counts towards the hours. If you only count the time you push keys into the keyboard, it's easy to say it took 2 hours to make a 16 hours worth of production.
If you count all the time thinking about it, I'm probably close to the 3000 hour mark already.


[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
If you count all the time thinking about it, I'm probably close to the 3000 hour mark already.
Start the clock at the first time you actually start doing something?


 

Posted

Quote:
Originally Posted by Starsman View Post
Start the clock at the first time you actually start doing something?
I code in my head, so when you'd start the clock is iffy on me. Keep in mind I've also written actual code for calculators that, while nowhere near the complexity or even direct intent of a game engine, gives me reference points I might not otherwise have.

I also have a nearly complete data dictionary which few people would be able to start with. I think the time spent figuring out what to do, separate from the mechanics of data dumping, really ought to count. Otherwise we'd be talking about a hypothetical person that knows exactly what to do and can just type out code like they are banging out the dictionary. I don't know about anyone else, but much of the time I spend "programming" is either time thinking about algorithms and implementation techniques while nowhere near a keyboard, and fast iteration of code that I write, and rewrite, and rewrite, and rewrite.

To be honest, though, counting hours is mostly quibbling. The question is whether the depth and complexity of the problem is such that it could be done in any small number of weekend efforts. The question is more about pace than anything else. Can what you do in any number of hours on a weekend even move the needle much at all.

And even an attribmod calculator, that only deals with what happens at a single moment in time for all possible sets of attribmods, requires a lot of complexity. Just getting resistance right is something I think most people are going to get wrong the first time, as trivial as that sounds on its face.

One other thing: my estimates were for C, where its harder to iterate code and you'd need to build up your own data structures (or use the appropriate libraries). My best guestimate for how long it would take me to code the engine in python, where I'm faster and can iterate code quicker, based on laying out the design last night, is about 900 hours.

I had the notion to use a project like this to teach me LUA. Its been on my mind even before Dr. Aeon's revelation LUA was spliced into the game engine. That would, of course, make it take a whole lot longer.

PS: writing the engine in Objective-C would also be a very interesting experiment, albeit mostly for the potential for meta architectural novelty than anything else.


[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 code in my head, so when you'd start the clock is iffy on me.
same as me, and I did throw myself in this little show of wit because I needed to get that off my head anyway, even if I fail miserably it was driving me insane, and it could even provide an example of what to do or not do.

Quote:
I also have a nearly complete data dictionary which few people would be able to start with. I think the time spent figuring out what to do, separate from the mechanics of data dumping, really ought to count. Otherwise we'd be talking about a hypothetical person that knows exactly what to do and can just type out code like they are banging out the dictionary. I don't know about anyone else, but much of the time I spend "programming" is either time thinking about algorithms and implementation techniques while nowhere near a keyboard, and fast iteration of code that I write, and rewrite, and rewrite, and rewrite.
And generally that's ten times shorter to reimplement in another language than code the first time. And you still believe the 3000 thousands of hours would be necessary to redo the combat loop only ? I would understand if it was accounting for the total amount of effort required with just the game and the keenest eye and none of your posts or the Wiki, but the game logic has been hashed though a great deal already. We were just discussing the specifics of which loop did what, we were not discussing how Resistance was implemented !

Quote:
To be honest, though, counting hours is mostly quibbling. The question is whether the depth and complexity of the problem is such that it could be done in any small number of weekend efforts. The question is more about pace than anything else. Can what you do in any number of hours on a weekend even move the needle much at all.
Oh yeah, I'll can what I do... in a zip file ! (nice typo ^^ produce a few more and you'll end up the subject of a Zero Wing video. As a tribute, of course.)

Quote:
And even an attribmod calculator, that only deals with what happens at a single moment in time for all possible sets of attribmods, requires a lot of complexity. Just getting resistance right is something I think most people are going to get wrong the first time, as trivial as that sounds on its face.
Yeah, of course, if you start from scratch. Nobody should ever do that anyway, comparing to something is a better stability than dangling in the void, at least if you have enough critical judgement to stay away from bad code.

Quote:
One other thing: my estimates were for C, where its harder to iterate code and you'd need to build up your own data structures (or use the appropriate libraries). My best guestimate for how long it would take me to code the engine in python, where I'm faster and can iterate code quicker, based on laying out the design last night, is about 900 hours.
you would be surprised what a trained and flexible mind can do with C++. It's becoming more and more a no-paradigm programming language. Also, if you ever happen to see both beyond the code what's done in the background, and in the big picture what gets done from back to front, it's not a matter of language anymore. Church's thesis essentially demonstrated all computer languages are equal. Now I wouldn't program City on a Turing Machine, I'm not such a masochist

Quote:
I had the notion to use a project like this to teach me LUA. Its been on my mind even before Dr. Aeon's revelation LUA was spliced into the game engine. That would, of course, make it take a whole lot longer.
*sob* and again another scripting language.

Quote:
PS: writing the engine in Objective-C would also be a very interesting experiment, albeit mostly for the potential for meta architectural novelty than anything else.
*cough* cough* You may like C++'s templates.



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

 

Posted

Quote:
Originally Posted by Mister_Bison View Post
And generally that's ten times shorter to reimplement in another language than code the first time. And you still believe the 3000 thousands of hours would be necessary to redo the combat loop only ?
I don't want to put words on Arcanaille's mouth but I think the goal specified was a full combat system with all it's dependencies (rooting included, that's a feature of the combat engine not the animation system), user input and enemy AI, not just a combat loop.


 

Posted

I'm sad as well. I started a fire/MC and DP/MC blasters. Oh the awesome that could have been.


@Joshua.

 

Posted

Quote:
Originally Posted by UberGuy View Post
The actual answer to the question is that the original game designers believed as a matter of game design philosophy that it was harmful for players to understand the game mechanics, because it was felt that this would lead them to focus on game mechanics themselves instead of playing the game as presented. They wanted us to enjoy the game for its qualitative features instead of its quantitative ones.

Personally, I think this was terribly misguided.
While I agree with you, I have a great deal of personal sympathy for the devs on this one. Having now tried to implement a game of my own, I'm very aware of my own limitations, and giving players direct access to (potentially quite flawed) mechanics can feel a little like letting the mike boom drop into the camera frame in a movie.

Put another way: if you look at CoH as a strategy game, then failing to reveal mechanics seems like a huge blunder, but if you look at it as an interactive story-telling experience, it starts to make more sense.


And for a while things were cold,
They were scared down in their holes
The forest that once was green
Was colored black by those killing machines

 

Posted

Quote:
Originally Posted by Arcanaville View Post
Assuming I'm an idiot will only cause me to conclude you're one. Because every *other* programmer in this thread that has worked on something larger than "Hello World!" I'm pretty sure understood what I meant, which was that every data element in the power schema represents a data field which is processed by the game engine, each in a completely different way. Especially within the context of everything else I've said in the thread.
Actually, I wasn't quite sure whether you were referring to cases in the data where values were interpreted differently depending on context, i.e. "fooBar:1" when you are fighting in Grandville means you do a backflip animation while "fooBar:1" when on the last map of the first villain respec trial means you do a double-twirl and end by planting a kiss on your current target's forehead.

I don't know if such cases exist (I no longer have much more than passing knowledge of how the game's internal mechanics work) but I've definitely seen real world cases of it. Mostly they seem to happen because people don't want to change a database schema when they add new functionality, so they take parts of the parameter-space that are currently unused and make them mean something different.


And for a while things were cold,
They were scared down in their holes
The forest that once was green
Was colored black by those killing machines

 

Posted

Quote:
Originally Posted by Arcanaville View Post
PS: writing the engine in Objective-C would also be a very interesting experiment, albeit mostly for the potential for meta architectural novelty than anything else.
I used to dislike Obj-C for its syntactical confusion between function calls and method calls, but once I got over that, I started to see quite a bit of inner beauty to the language architecture. It seems to neatly sidestep a lot of Java's heaviness in reflection, for example.

I'm not aware of any projects running Objective-C server side though. Is there a language implementation that would run on Linux? Xserve got the axe a few years ago, so I'm not sure what hardware you would run. (I once asked what Apple uses internally to run automated tests that require server side OS X, and was told that they use HP racks running custom, non-public OS builds.)


And for a while things were cold,
They were scared down in their holes
The forest that once was green
Was colored black by those killing machines

 

Posted

Quote:
Originally Posted by Mister_Bison View Post
Oh yeah, I'll can what I do... in a zip file ! (nice typo ^^ produce a few more and you'll end up the subject of a Zero Wing video. As a tribute, of course.)
Try replacing the period at the end of Arcanaville's sentence with a question mark. Or, here:

"Can X even move the needle much at all?" where X is "what you do in any number of hours on a weekend"

On the subject of C++, I love the language; it's still the only OOP implementation I know where I can "feel" how the code I write will be represented on the machine. (Java is close, but the lack of determinism in object life cycles hurts.)

But C++ has a huge Achilles' heel when it comes to large projects, and that is the lack of a standard mechanism for managing heap objects. Smart pointer? std::auto_ptr? Manual new/delete with clear ownership? Something custom? While it's obviously a solvable problem locally, when you start to integrate large systems with different ideas of "standard" you get messy interfaces, difficult bugs, and general lack of developer efficiency. Because of this, frameworks become difficult both to write and to integrate, and you end up with C++ seeming very support-poor when it comes to modern application development.

I want to learn more about ARC because it seems like something of that nature could be applied to C++ also, and if it were adopted broadly and incorporated into all the tooling, it could really go a long way toward solving this issue. But I don't know enough about ARC yet to say for sure, and of course filtering something like that through the C++ specs would take considerably longer than Apple just declaring it by fiat.

Sorry for the thread-jack, BillZ.


And for a while things were cold,
They were scared down in their holes
The forest that once was green
Was colored black by those killing machines

 

Posted

Quote:
Originally Posted by Mind Forever Burning View Post
Try replacing the period at the end of Arcanaville's sentence with a question mark. Or, here:

"Can X even move the needle much at all?" where X is "what you do in any number of hours on a weekend"
Dang, you're right. I feel stupid ^^

Quote:
On the subject of C++, I love the language; it's still the only OOP implementation I know where I can "feel" how the code I write will be represented on the machine. (Java is close, but the lack of determinism in object life cycles hurts.)

But C++ has a huge Achilles' heel when it comes to large projects, and that is the lack of a standard mechanism for managing heap objects. Smart pointer? std::auto_ptr? Manual new/delete with clear ownership? Something custom? While it's obviously a solvable problem locally, when you start to integrate large systems with different ideas of "standard" you get messy interfaces, difficult bugs, and general lack of developer efficiency. Because of this, frameworks become difficult both to write and to integrate, and you end up with C++ seeming very support-poor when it comes to modern application development.
It's *exactly* the same problem in C, and yet C is used for large projects. new() and delete() are just encapsulation of malloc and free with init clean functions. Plus you have STL containers that do help you to properly implement standard features such as Maps, Lists and Dynamic arrays.

Quote:
I want to learn more about ARC because it seems like something of that nature could be applied to C++ also, and if it were adopted broadly and incorporated into all the tooling, it could really go a long way toward solving this issue. But I don't know enough about ARC yet to say for sure, and of course filtering something like that through the C++ specs would take considerably longer than Apple just declaring it by fiat.
What's ARC by the way ?



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

 

Posted

Quote:
Originally Posted by Mind Forever Burning View Post
Put another way: if you look at CoH as a strategy game, then failing to reveal mechanics seems like a huge blunder, but if you look at it as an interactive story-telling experience, it starts to make more sense.
Oh, and I think that's exactly how the early devs viewed it, especially Statesman. The problem is that I think almost no MMO really fits that design ideal, because most (not all) of them rely on encounter resolution mechanisms that must follow strict rules for resolution, and then they eventually challenge players to optimize how they obey those rules.

The most prevalent example is combat, which many (but not all) mainstream MMOs put front and center in character progression. Combat in all video games follows rules that make up its "combat engine". There are no video games, for example, where combat works like it would in an Amber campaign. There are always things like checks on whether you hit, how much damage you deal, how many targets you can affect, etc. Once you introduce mechanisms like that, I consider it unfair to hide from the players how they work. There is some wiggle room here - you may not need to reveal everything, but any time you introduce an ability, I think the player should readily understand what that ability will do within the combat engine.*

Now, CoH is extremely focused on combat (and I love that about it), but not all games are like that. Nonetheless, other approaches to task resolution, such as puzzle solving or crafting, all still follow rules an engine can resolve, and players should understand those rules too. The more challenging the game makes a given task, the more players will want to understand the minutiae of the rules needed to complete it.

So, to try and clarify, I think the lesson is not that its wrong to hide what powers do, but that it's wrong to hide it when you build a system that asks players to use abilities in ways that compel players to know more about the abilities than you tell them. I think that's very hard to do right, especially in an MMO, where new designers rotate in over the years and build new challenges for players. It seems almost impossible to me that design rigor can be maintained such that the players are never tempted to look beyond the 4th wall and wonder how the things they do work in a detailed way, because someone who lives beyond the 4th wall will eventually create a challenge for the player that begs them to wonder just that.

* In these modern times, we're flooded with information about CoH's combat engine works, yet many players still have poor grasp of what some powers actually do because its so complicated. There's probably a lesson in there.


Blue
American Steele: 50 BS/Inv
Nightfall: 50 DDD
Sable Slayer: 50 DM/Rgn
Fortune's Shadow: 50 Dark/Psi
WinterStrike: 47 Ice/Dev
Quantum Well: 43 Inv/EM
Twilit Destiny: 43 MA/DA
Red
Shadowslip: 50 DDC
Final Rest: 50 MA/Rgn
Abyssal Frost: 50 Ice/Dark
Golden Ember: 50 SM/FA

 

Posted

Quote:
Originally Posted by Mister_Bison View Post
It's *exactly* the same problem in C, and yet C is used for large projects. new() and delete() are just encapsulation of malloc and free with init clean functions. Plus you have STL containers that do help you to properly implement standard features such as Maps, Lists and Dynamic arrays.
I disagree. C *only* has malloc/calloc/realloc/free; those are the standards. C++ has new and delete, but also many different varieties of wrappers on top of them (and of course malloc/free themselves). In many cases, when integrating frameworks, you have to disentangle the thing that was built on top of new/delete and then rewrap it for the benefit of the next layer in the stack. C++ operator overloading is a bit of a double edged sword here because it's possible and very tempting to make your own syntactic sugar that is almost, but not quite, entirely unlike the one your neighbor made.

The STL containers are neat, but asking everyone to be as smart as Stroustrup in order to make rational re-usable classes is unrealistic to say the least. One of Java's biggest successes is that it assumes the average implementor is much, much more naive than the language designers.**

Quote:
Originally Posted by Mister_Bison View Post
What's ARC by the way ?
Automatic Reference Counting. It's a language feature built on top of notational conventions in Objective-C that allow the toolset to automatically generate the appropriate retain/release semantics, so the developer doesn't have to do any explicit memory management but you still get deterministic object lifetime semantics. It advertises being both headache-free and GC-pause-free at the same time, which is a huge win for mobile development.

** Which bothers to no end those implementors who are actually smarter than the language designers.


And for a while things were cold,
They were scared down in their holes
The forest that once was green
Was colored black by those killing machines