Let's talk about the elephant in the room: Content Bloat

[quote=“i2amroy, post:43, topic:5841”]In that case something that might help out on this front quite a bit would be the people who are complaining about Content bloat going to the Github and making helpful, constructive comments on pull requests before they go in; because right now most pull requests end up looking like this:

[spoiler]

Here’s my awesome PR.
Contents: Stuff

This looks pretty good from my end, any other views?
This looks awesome! +1 *thumbs up*
Maybe raise the time it takes to rot there, other than that I don't see any problems,
1-3 days go by.
Ok, raised that value.
1-2 days go by.
Looks good then. Merging.
PR is merged and closed. [hr][/spoiler] If nobody bothers to comment on Github PR's then it's difficult for dev's to weigh the opinions of other people. It might be a nigh-clone of a gun already in the game, but if the only comments we get are "This looks awesome" and "small change needed here", then nobody can know that.

As I pointed out before establishment and implementation of balance rules that devs can utilize for new content will go to helping this a lot balance wise, but even so without people offering up their opinions if they don’t like something all we have are those of the dev themself and the PR maker (who obviously wants their content in the game).[/quote]

I see your point here. Thing is, a lot of us don’t hang around on Git though … especially people that can’t/don’t code. Non-coders are more apt to visit and comment in the forums about things, new people may not even know about Git at all. Forums are a medium that are easily understood and that people generally feel comfortable with.

Frankly what I’ve seen happen (especially with some “MORE ITEMS!!!”, “the same damn gun stats with more more more more more names” and/or ‘wacky’ weapon PRs/merges) is that the content creator brings them up here on the forums either in the suggestions portion, or the mods section. People flow in, and discussion happens. I’d wager quite a bit of the time the person ‘discussing’ their own idea just wants recognition for what they’re doing, and for someone to say “wow thats awesome I want ____ in game too! GREAT IDEA!” (insert: anime swords; concrete-pillars as 2handed bashing weapons; what-have-you).

Anyone saying “hey that feels kinda’ unbalanced” or “we should hold off on putting more guns in unless they’re different enough to make them unique” or even flat out “that doesn’t fit what I think DDA design docs make the world sound like, what about changing it some?”, etc, often get ignored. The creator just doesn’t care what anyone else says (usually just completely ignoring naysayers if they don’t flat say “I don’t care, I want my pet gun in game”) moves their thing to Git anyway and just has it pushed through.

Now I have seen some people bring up ideas, chat it out with community members here, and alter things and/or sometimes even hash out things and come up with a BETTER idea with community input. I’ve seen some good stuff blossom in the forums and I was excited to see it in game. Threads like “hey guys I’m going to code buildings, what ideas do you have” and whammo, we have whole new awesome buildings that benefit everyone and are fun … those go a lot different than “I’m adding this to the game because I personally want to play with my pet item, suck it” slam-through jobs.

I think some of us assumed the forums themselves (and our discussions there) were a filter and maybe that isn’t the case. So in a weird way … you folks (those merging things directly into the game) are sitting around going “no one discusses the pushes, so people must not care/this must be fine/whatever” and those of us discussing things on the forum are sitting around going “wtf I thought like 80% of us in that thread said adding the_sword_from_some_anime was stupid and assumed the dude wasn’t going to make it, why did it get pushed through? Argh!” We got a disconnect, maybe.

Edit: I guess, lastly, I’m just hoping DDA isn’t “just for people that code”. I get the vibe sometimes (it has come up in this thread, last couple pages even) where it feels like it boils down to “if you want to contribute, then code things and add them”, or that people’s opinions (which you literally asked for in your post I quoted above, i2amroy) don’t matter unless the person is coding something and putting it on Git. It can lead to a class-system feeling to the place, ya know? Devs are all powerful people working on the hard stuff. Casual-coders are plugging away submitting things (lots of it good, but some of it their own pet projects they rationalize and slap on Git). Anyone else is just some forum person who doesn’t matter to the project.

Can feel like this :stuck_out_tongue:

Lies, damned lies, and

[quote=“elauminx, post:60, topic:5841”]fun statistics; only since 0.A the code grew by 10k lines…
it now stands at 175kloc…
in comparison it was ~100kloc at 0.5… (and if some of it has been moved to .json, then it’s almost 100% growth rate)[/quote]
And? The simple fact that more code is being added than removed is meaningless. The fact is we’ve put a huge amount of effort into cleaning things up, the codebase is easier to navigate and better documented than ever before.

That’s again a meaningless observation, yea it’s a big complicated project, but so what? We provide a lot of support to new and experienced developers both go come up to speed on various parts of the code, and people very quickly can dig in and start making significant contributions.

You don’t seem to understand how this works, the whole point of refactoring is making incremental improvements that over time transform the codebase into a more maintainable one that’s easier to work with. We are doing that, in fact we’ve been making huge strides in cleaning up various parts of the code. You don’t stop the rest of the work on the program when you do that though, and you certainly don’t embark on “major rewrites”, they’re a recipe for disaster.

Do you follow the development of the project? What exactly are you basing your opinions on?

[quote=“Dominae, post:61, topic:5841”]…I’d wager quite a bit of the time the person ‘discussing’ their own idea just wants recognition for what they’re doing, and for someone to say “wow thats awesome I want ____ in game too! GREAT IDEA!”…
…Anyone saying “hey that feels kinda’ unbalanced” or “we should hold off on putting more guns in unless they’re different enough to make them unique” or even flat out “that doesn’t fit what I think DDA design docs make the world sound like, what about changing it some?”, etc, often get ignored. The creator just doesn’t care what anyone else says (usually just completely ignoring naysayers if they don’t flat say “I don’t care, I want my pet gun in game”) moves their thing to Git anyway and just has it pushed through…
… those go a lot different than “I’m adding this to the game because I personally want to play with my pet item, suck it” slam-through jobs.[/quote]
That’s a lot of harsh assertions, I’m going to need you to back them up with examples, in particular, I’m not aware of any of

being in the game. Until you back your claims with quotes, your opinion carries little to no weight.

Not sure where you got that impression, the forums are… well forums, they’re a place for people to discuss the game and other stuff. The other developers and I certainly pay attention to discussions on the forum, but in order for something to it to influence us it has to convince us, simple numbers don’t do that. If one person has what I think is a really great idea, and 20 other people oppose it, but have unconvincing arguments for why it’s bad, I’ll likely implement or accept that idea if someone else implements it.

Again, if you’re going to use an example in your argument, make it an actual example instead of a made-up one, I’m unaware of any “anime swords” in the game.

This boils down to the same thing I said above, you can contribute ideas, but they have to be good ideas. Fair, unfair, I don’t know, but the simple fact is that if no one with the ability to implement the feature agrees that it’s a good idea, then it’s not going to happen.

Out in the real world, I’m a labour and street organizer with 25 years of experience, so I understand the problems with horizontal organization and trying to keep a focus. This is why I try to advocate for platformism. I don’t know if you’re familiar with the concept or not, but the idea behind platformism is that the organization creates a very narrowly-focused platform (that is, clear and concise statements of purpose and function) which is used as a template for everything it does and everyone who joins. You need to be clear and somewhat ruthless about it, explaining to people who want things which fall outside the scope of the platform that there are no hard feelings, but that you respectfully decline their offer – and explain why.

The reason a platform is so important to a horizontally-based organization is that it tends to wander without a tight focus, and so much time is spent with people pulling in different directions. Once you have a platform, you know that everyone is pointed the same way, and you can become much more open and inclusive within that core group. Fortunately, unlike the real world, electronic space is unlimited; if people aren’t prepared to accept your platform, they can freely take the code base and create a new fork, adopting their own platform in keeping with their vision.

The most common failure for all organizations is lack of a goal line. You need to have a platform if for no other reason than to be able to measure your success against something objective. If there is no platform, no one knows when goals have been reached. By definition, if there’s no way to declare a success, then you can only ever lose. People keep running until their enthusiasm drains away, and then they quit, demoralized. The only people who remain are the obsessed hard-liners who don’t care whether they win or lose, which turns the organization into an increasingly incestuous and exclusionary circle-jerk; step forward Wikipedia and take a bow.

The invoice for my consultancy fee is in the mail. :wink:

These are very good ideas to allow for more variety without more bloat:

Find a way to separate descriptions out from the item itself. If we can have items maintain different descriptions, then we could have 20 different t-shirt designs in the game without needing 20 t-shirt JSON file entries. Work in some rough whitelist/blacklist mods into the game. This would allow toggling things en-masse, and ideally would only involve the addition of a single extra line when adding something new to the game. Establish some baseline numbers for various weapons and document them in the game's documentation. Then go through and balance all the respective weapons to match those baselines as best as possible. (A big enough task to discourage working on it, and one that only get's worse as time goes by.)

Quoting for truth:

[quote=“i2amroy, post:43, topic:5841”]In that case something that might help out on this front quite a bit would be the people who are complaining about Content bloat going to the Github and making helpful, constructive comments on pull requests before they go in; because right now most pull requests end up looking like this:

[spoiler]

Here’s my awesome PR.
Contents: Stuff

This looks pretty good from my end, any other views?
This looks awesome! +1 *thumbs up*
Maybe raise the time it takes to rot there, other than that I don't see any problems,
1-3 days go by.
Ok, raised that value.
1-2 days go by.
Looks good then. Merging.
PR is merged and closed. [hr][/spoiler] If nobody bothers to comment on Github PR's then it's difficult for dev's to weigh the opinions of other people. It might be a nigh-clone of a gun already in the game, but if the only comments we get are "This looks awesome" and "small change needed here", then nobody can know that.

As I pointed out before establishment and implementation of balance rules that devs can utilize for new content will go to helping this a lot balance wise, but even so without people offering up their opinions if they don’t like something all we have are those of the dev themself and the PR maker (who obviously wants their content in the game).[/quote]

I kinda didn’t want to chime in again because it seems as though we’ve all really hit a nerve with Kevin and that was sincerely not what I (or I’m sure anyone else) wanted to happen. People are taking this personally, and - although as Kevin says, I can’t tell people what to be offended about - I really wish they wouldn’t and would instead take it as constructive criticism of people who want change. Regardless of the harsh terms people have sometimes used, it’s difficult to measure intent on the net, and certainly no one was attacking individual devs/contributors/people (other than LC obvs.).

To actually fix content bloat, which nearly all of us agree exists to some degree, we’ve had some good ideas:
-Generically named items with varied descriptions. This seems like a great idea, as it would mean that all the branded foods and so on would get put in the same category. It’d have a downside in terms of needing to keep the stats the same, but that’s not a big problem and I’m sure would be welcomed.

-Stronger content guidelines and a ‘does this advance the game’ attitude. Most people seem opposed to the ‘anything that doesn’t break the game’ attitude we have at the moment more than anything else and that could easily change with a stricter development criteria.

-If github is where all the serious action/decisions is, then that needs to be known so people can chime in there. I don’t think it’s a great place for that due to it being somewhat complicated/not as easy as a forum, but if it is the case then people need to know to change where they place their attention.

If these are too much work for the devs (as I have heard that dealing with PR requests takes time and so on) I’m sure a small task force of ‘content PR request dealers’ could be put together without too much difficulty. Really, I just don’t think the ‘we don’t have time to fully think about balance and consequences with each pull so just look if it works and submit it’ is a great point to be at.

Here’s the way that I’ve always seen it. If you have a wide open, idea-gathering, type of post (such as this one, or “How do we add more long-term content into the game”), then the best place is the forums, since they are simply better at multiple-person discussion then github is. If, on the other hand, you already have a specific problem/solution that you would like to be implemented, then github is the place for it. Usually it’s better if a problem already exists before going to github, but there is some small leeway there. Also there is a slight technical/nontechnical gap as well, since github tends to discuss things a bit more technically heavy while the forums tend to discuss things that are more concept and less technically based.

So if you are talking broad suggestions about “what we should do moving forwards”, then this forum board is the place for it. If someone is offering up a solution to a problem or a way to move forward (such as “implement X”) then github is the best place to make direct comments about that thing. Both are important, and many ideas spend time being kicked around the forums before passing over to github (most ideas, actually), but the winnowing of PR ideas that are requested to be implemented is something that is solely github based, and doesn’t really touch on the forums at all.

“FU2”-p

I’m not going to debate you (waste of time). I wasn’t even trying to be argumentative. I’ve been “looking” intensely (reading forum and tracking github) at C:DDA for over a month now, and just by accident compared wc src/* | less run I had Ctrl-z’ed some time ago to discover that 10k growth. And I simply don’t think it’s “justified” compared to the features added.

I’m giving you opinionated half of the truth from the point of view of some random person who could be interested in coding for C:DDA. You may be maintaining and slowly refactoring it (and doing good job of it) but don’t pretend you are doing anything more, turning on unholy wrath, when someone dares to suggest a recipe for something radical.

LOC might be oversimplified way of looking at it, but it is a sign of a disease still plaguing the code base as a whole (externalizing .json might be a way to attract modder community, but doesn’t cure the logic bombs still persisting in the C++ code driving the content). Random example: I’ve looked at the quiver/auto-pickup PR… and… storage capacity of this item being driven by “_N” string affix in one of its flags? LIKE… siryouslly…
SO, I can wager a guess that most of those 10kloc was motivated by the need to ad hoc logic modifications in disparate (though similar) aspects of the game.

Of course, this particular (small, but then there is the issue of stacking and layering stuff, which in practice hinges on the same logic) case, was caused by still lacking a unified CONTAINER abstraction…
I’ve played original Cata and played C:DDA last summer and stacking/container issue figures as number 2 on my meager personal 3 bugs/7 features list from then…

anywayz,
/eai goes off ranting incoherently into the corner.

[quote=“elauminx, post:67, topic:5841”]LOC might be oversimplified way of looking at it, but it is a sign of a disease still plaguing the code base as a whole (externalizing .json might be a way to attract modder community, but doesn’t cure the logic bombs still persisting in the C++ code driving the content). Random example: I’ve looked at the quiver/auto-pickup PR… and… storage capacity of this item being driven by “_N” string affix in one of its flags? LIKE… siryouslly…
SO, I can wager a guess that most of those 10kloc was motivated by the need to ad hoc logic modifications in disparate (though similar) aspects of the game.[/quote]
Or it could be, you know, the:

[ul][li]Addition of most JSON content instead of hardcoding everything[/li]
[li]The rework of the entire map storage system to gradually load/save maps[/li]
[li]The addition of the entire tile set handling code[/li]
[li]The addition of the ability to play sounds/music[/li]
[li]The addition of pretty much the whole debug system[/li]
[li]The addition of all the Creature class framework, which is the basis of the NPC rework[/li]
[li]Moving to a standardized, more spaced out and readable coding style (this accounts for several kloc by itself)[/li]
[li]Actually adding comments to the code so that contributors understand how things work (and we’re still at one of the lowest %'s of C++ projects comment-wise, this also accounts for several kloc)[/li]
[li]Splitting tons of things from map generation out into their own functions like they are supposed to be (instead of a single 15,000 line switch statement)[/li]
[li]The addition of the entirety of the world factory[/li]
[li]The addition of the entire modding system[/li]
[li]The addition of basic mouse support[/li]
[li]Every scrap of forward/backwards save compatibility[/li]
[li]The addition of the “recipes in books” system[/li]
[li]Complete rework of the bashing and breaking systems[/li]
[li]A total rework of the martial arts system to the current one[/li]
[li]Addition of all other language frameworks and their accompanying translation files[/li]
[li]Ability to adjust city size and zombie/item spawn rates[/li]
[li]The entire weight rework to a sensible system[/li]
[li]Vehicle collisions that no longer send vehicles ping-ponging off at Mach 7[/li]
[li]All vehicle wreck spawning[/li]
[li]Dozens of crash fixes[/li]
[li]Setting up mac to compile easily and properly[/li]
[li]Switching from SDL over to SDL2[/li]
[li]Complete rework of the key mapping system, with only 1 step more to go before there are no more hardcoded keys at all[/li]
[li]Making sleep, waiting, and long-term crafting actually perform at a decent speed (instead of taking minutes per “tick”)[/li]
[li]The entire advanced inventory screen[/li]
[li]The addition of the ability of mutations to affect wet penalties/bonuses[/li]
[li]The addition of sensible wet morale effects[/li]
[li]Two different reworks of the encumbrance system[/li]
[li]A complete rework of the gun mod system to allow only sensible mods[/li]
[li]Huge monster performance improvements, now the game can actually handle the number of zombies used in 40x spawn, instead of crashing when it tires to[/li][/ul]

Yes, a lot of content has been added, but you are completely ignoring the massive number of behind-the-scenes additions and changes that have gone on. Even if I didn’t like the current content I’d still take the current version over version .5, if only because the current version has the frameworks in place needed for me to change the content to the way I want it, instead of requiring me to compile my own version just because I wanted to adjust the to hit bonus of a single weapon.

As for the quiver PR, there’s a reason it hasn’t been merged yet and is still up for review.

[quote=“i2amroy, post:68, topic:5841”][quote=“elauminx, post:67, topic:5841”]LOC might be oversimplified way of looking at it, but it is a sign of a disease still plaguing the code base as a whole (externalizing .json might be a way to attract modder community, but doesn’t cure the logic bombs still persisting in the C++ code driving the content). Random example: I’ve looked at the quiver/auto-pickup PR… and… storage capacity of this item being driven by “_N” string affix in one of its flags? LIKE… siryouslly…
SO, I can wager a guess that most of those 10kloc was motivated by the need to ad hoc logic modifications in disparate (though similar) aspects of the game.[/quote]
Or it could be, you know, the:

SNIP[/quote]

Very nice BUT stop for a moment and: Read my lips… 10kloc since 0.A…

deliberate on without me,
eai

Which included our addition of sound capability to the game, most of the key press rework, several .h files that gained their entire set of documentation from having nothing before, and a handful of files that have been completely restyled to the expanded style. Line count is not a factor you want to cite for the amount of “content” added.

“my pet feature or peeve hasn’t been added / fixed” is a pointless measure of project progress if you’re talking about development process. It’s valid from the point of view of a player of course, but that’s not the context we’re in.
I suspect a rather large amount of that is a big pile of backwards compatability code for saves, we have to have two copies of save-loading code, one for the old version and one for the after version.
I think there have also been several large declarative features added recently, that have a lot of code but not much complexity.
Complexity is what kills, not lines of code.

You are both talking passed me. One is pasting in a list of features (as if explaining himself in front of the Kickstarter crowd) and you are trying to belittle and explain things away… I could create larger list of "my pet feature or peeve hasn’t been added / fixed"s, when I’m merely pointing example problem which immediately jumps at me whenever I even start approaching C:DDA code base from any direction.

Personally, I’d like to do a proper Android port… but with current “brownian-like” drift it will end up being an absolute fork from “your” C:DDA. And the same logic applies to other major (“audience desired”) features.

please feel free to deny,
eai

Whatever the case, the SDL doesn’t support tiles anymore. They display from 2-3 frames ago whenever your character moves. Beyond that, I encounter far more (serious, game breaking) bugs in the recent versions than I ever did around .6 or .7.

Is program stability a valid metric of the project? If not, what is a valid metric of Cataclysm’s progress, Kevin?

Whatever the case, the SDL doesn’t support tiles anymore. They display from 2-3 frames ago whenever your character moves. Beyond that, I encounter far more (serious, game breaking) bugs in the recent versions than I ever did around .6 or .7.

Is program stability a valid metric of the project? If not, what is a valid metric of Cataclysm’s progress, Kevin?[/quote]

Is this in the stable or experimental?

I think the main thing that contrasts this game with other games is that a huge amount of work has been and is being done to change Whales’ code base to a more moddable, maintainable, and (most importantly) extendable system, which is not readily apparent to the average user’s gaming experience.

To the critics in this thread, maybe you should wait until all of this preparatory work is complete before you act like there’s a serious problem with development.

[quote=“Coyote, post:73, topic:5841”]Beyond that, I encounter far more (serious, game breaking) bugs in the recent versions than I ever did around .6 or .7.

Is program stability a valid metric of the project? If not, what is a valid metric of Cataclysm’s progress, Kevin?[/quote]
Care to shed any light on the details?
I stopped playing regularly between 0.7 and 0.A and I’m now playing a self-compiled version of the experimental, and I’ve run into almost no serious bugs or glitches at all, except for recently when I attached an underbarrel shotgun and a rail-mounted crossbow to the same gun, which caused some odd things, but I haven’t managed to crash the game yet and I make extensive and crazy use of the debug menu, which is a pretty good sign for stability.

[quote=“Coyote, post:73, topic:5841”]Whatever the case, the SDL doesn’t support tiles anymore. They display from 2-3 frames ago whenever your character moves. Beyond that, I encounter far more (serious, game breaking) bugs in the recent versions than I ever did around .6 or .7.

Is program stability a valid metric of the project? If not, what is a valid metric of Cataclysm’s progress, Kevin?[/quote]
And now an issue has been created, which should hopefully result in a fix soon. Almost none of our devs use tile sets, so unless people report bugs like this we never know about them. Thank you for reporting it.

And though the program still has bugs, it’s still way more stable then the old versions. The difference lies in the fact that when we do have bugs in the experimental they tend to be program breakers and are very noticeable for the extremely short time they exist (usually a couple of days at max), where as the older versions just drowned you in smaller bugs, many of which you probably didn’t even notice. (Like the fact that for several versions dodging didn’t do anything at all, or nones spawning all over the game, or random map tiles that just didn’t exist anymore once you left them, just leaving a big black area in their place). Trust me, the fact that the bugs that we do have are more easily noticeable is a good thing, since it means we can actually fix them quickly once they are reported, instead of being forced to hunt for months to track them down.

I do want to point out that the “lies, damned lies, and statistics” quote was not intended to imply that you are making an argument in bad faith, and I apologise if I gave that impression. I simply disagree with your conclusions.

Your assertion was that not much in the way of features was added relative to the amount of code, i2amroy’s replay was a direct rebuttal of that point, how is that talking past you? Whether you care about those features or not is a separate issue, but the fact is there is a lot of functionality being added by that 10KLOC.
I’m not explaining anything away, as I said, the bug remaining is a valid complaint from a player point of view, but that’s not the complaint you’re making. You’re making an argument that it indicates poor code quality or development or poor development discipline, and in that context it’s a meaningless metric. You’d need to dig in much deeper to make that kind of claim, and I’m confident that if you did so, the trend you would see is toward higher code quality.

As for “brownian-like drift” being the problem, I find it difficult to imagine a development methodology for a project as active as dda that would support easy forking. It’s a simple matter of code velocity, the faster the code changes, the harder it is to fork.
Even if that weren’t the case, I have no interest in making it easier to fork the code, why would I? This is a copyleft project, the general strategy is that you make it easier to cooperate than to compete so that the project can thrive. The reason is precisely this kind of scenario, it’s easier for someone to contribute Android build support than to fork the project, potentially splitting developer attention. It’s working as intended.

More code would only be a problem if:
a) nothing had been added
b) the code/game was perfect to start with.

Neither of these things are true, so I think it’s kinda hard to justify quite how much code should go in per feature. Yeah - I’m sure there have been some bad coding practices/superfluous code, but show me some OS/open contribution software that doesn’t!

Regardless, a lot of the problem comes down to the age old problem of loads of things being done behind the scenes, where the only thing that most players see are content additions and ‘bloat’. An active/running dev blog would help, even if it was just a ‘Fixed some problems with car windows’ or ‘merged some interesting changes to do with x’ - I know you can broadly see this on github, but just a general weekly update might help shine light on all the great work that’s being done, rather than people just imagining the addition of furry-alien laser-miniguns.

That’s not that bad of an idea actually. Then we could just do a basic summary of what development has happened in the past week or so (and maybe update the changelog at the same time). Would be at least worth looking into.

That’s not that bad of an idea actually. Then we could just do a basic summary of what development has happened in the past week or so (and maybe update the changelog at the same time). Would be at least worth looking into.[/quote]

Yeah it wouldn’t need to be anything in depth or descriptive, it could just be a list of basic changes. More news on future developments (no matter how small, short term or whatever) would also help, just so that players can see that these things are still being looked towards (I know there have been a lot of ground work changes for things like NPCs for instance) even if the progress is slow.