Ok... NOW I'm sad.
Quote:
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.
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. |
[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.)
Quote:
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.
Quote:
*grabs popcorn* |
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 !
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 ?
WE ARE HEROES. THIS IS WHAT WE DO.
City et moi, �a colle !
16 hours.. going by the standard of a days work being 8 hours...
I'm asking because coding the week-end is already off-work working so...
WE ARE HEROES. THIS IS WHAT WE DO.
City et moi, �a colle !
Quote:
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.
I'm asking because coding the week-end is already off-work working so...
|
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.
Nobody is paying you so there is no overtime to count for here.
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.
Quote:
oh 100% agreed. It takes more time to *work out* what to type, than to actually type it.
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.
|
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
Quote:
Nobody said anything about a "weekend worth" of coding:
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 ? |
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.)
Quote:
If you count all the time thinking about it, I'm probably close to the 3000 hour mark already.
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.
|
[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.)
Start the clock at the first time you actually start doing something?
Quote:
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.
Start the clock at the first time you actually start doing something?
|
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.)
Quote:
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.
I code in my head, so when you'd start the clock is iffy on me.
|
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. |
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. |
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. |
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. |
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. |
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. |
WE ARE HEROES. THIS IS WHAT WE DO.
City et moi, �a colle !
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.
I'm sad as well. I started a fire/MC and DP/MC blasters. Oh the awesome that could have been.
@Joshua.
Quote:
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.
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. |
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
Quote:
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.
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.
|
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
Quote:
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.
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'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
Quote:
Try replacing the period at the end of Arcanaville's sentence with a question mark. Or, here:
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.)
|
"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
Quote:
Dang, you're right. I feel stupid ^^
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" |
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. |
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. |
WE ARE HEROES. THIS IS WHAT WE DO.
City et moi, �a colle !
Quote:
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.
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.
|
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
Quote:
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.
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.
|
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.**
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
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...
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 !