Crowdsourcing!

@Vuldacon & @WildWeazel - I, essentially, agree with you both, meaning that some more - heuristically powerful? robust? - reorganization of threads would be ideal, while also understanding both how and why this might be too much of a challenge, given the powerful scope & depth of what you extraordinary coders have already done. (That being said, have I ever mentioned my many experiences re: Brilliant Coders and Proper Documentation? ;) )
 
I know, but don't spoil the joke!
 
This sounds like a word taken out of a management course.

Academic analysis, specifically comparative evaluations of historiographic methodologies ;)

For the record, I revile "corporate speak." Example: I've never once found an instance of the ghastly word functionality where function(s) would gave sufficed. :coffee:
 
- So (and kindly forgive the profanity) WTH are we doing

Herding cats! :run:


Pulling in from the other thread:

A ( :shifty: ) "Project Plan," not as in Major Corporate Nightmare Land, but rather as in, "What gets rolled out when, in which order - and, oh, are there any dependencies I should know about?
The "Proposal" (linked above) and "Projects page" do list what gets rolled out in what order, but that is subject to change, and is a very rough idea.

Indeed this is the Roadmap, and it is a rough road. Quintillus has been biting off one alphabetical milestone at a time to figure out what specifically to do, but the overall plan could use some TLC.

(You'll be seeing a pattern here, which I'll identify at the end.)

Ozymandias said:
However you wish to phrase it: "Standard Module Interface;" "API" (always simply having an "expandable" common "handshake" between functionally defined modules of code.)
Quintillus said:
However, the long-awaited proof-of-concept issue for @WildWeazel 's Component-Event framework is slated for Carthage. I'm hoping that shines some light on the direction from a software architectural standpoint, as my understanding is there was a vision for this.

A design document; something I've been trying to work towards in the Architecture thread with components and events, but I'm far behind where I wanted to be. Nailing down the high level design will be my top priority for Carthage, as it's a prerequisite for much of what the other devs will soon be working on.

Ozymandias said:
A common, code base, library of functions, both to accommodate any "handshaking" as well as not reinventing the wheel - and each me to different gauges & circumferences...

I'm not sure we can plan out much of this without getting heavily into up-front design, but I hope that following architecture/design/OO best practices will lead us there. I think a lot of it comes from a sense of common code ownership and being involved in code reviews and design discussions so you catch these opportunities early.
Ozymandias said:
- Really; honestly, truly, not a ( :vomit:) methodology at all, just some agreed upon standards ...

I'm not afraid of methodology, but I'm of two minds about it here. On the one had I studied CMMI at the Software Engineering Institute and could draft a slate of sufficiently agile processes to cover requirements and design and planning and tracking and QA and deployment... and on the other hand nobody would want anything to do with it on a volunteer passion project. Even just prematurely deciding "we're going to review each others' code before merging" was partly responsible for a weeks-long logjam that may have cost us a developer. So I certainly have opinions on how to do things, but I'm averse to putting them into practice without a strong consensus. Rather what to build...

Quintillus said:
So I guess what I'm saying is... I have some interest in the gameplay design aspect. I also have some interest in documentation (I improved the documentation on GitHub a bit last week). But I'm not going to do any large-scale software architecture work, and I'd rather not be pinged about it, especially frequently. My approach is more iterative, I've been on projects that were burned (and canceled) due to too much focus on upfront architecture and too little actual results. I've been among the top three developers for "actual results", and would rather keep that up. So while I recognize there is value in it, to me it feels like a waste of time to work on it personally, especially when WildWeazel has indicated an interest in it and has probably thought through it more.

My intent and goal with the component-event system, and my role as architect in general, is to lay out some patterns or even templates that you and the other "actual results" developers can iteratively flesh out without having to think too much about how to fit it all together. I'm also one of those weirdos who -

I certainly don't want you all to go crazy with refactoring; hence (again) my notion of an API.

- actually enjoys refactoring code, so I'm happy to adjust as we come across pain points and refine the interfaces.

Ozymandias said:
Quint - gents - I know that everything I knew about IT, from terminology to methodology , is out of date. Yet I seem to be the only person who can at least "straddle" the coder/non-coder world. And I am distressed that - whether by ignorance or not knowing where to look - this is the first time I've seen @WildWeazel's truly fine document ... But that's also part of my point: my brain glazes over, just skimming through pure coders' posts - I'm lost - When/where is the last place/post (and, yes, I''m happy to potentially embarrass myself here) that non-coders have been meaningfully involved, except in the "Feature Request" thread, which seems to be heuristically useless (not organized into categories of Functions, which can be:
  • Discussed
  • Prioritized
  • Organized into software "modules" (OK: please help me with terminology!!) - My very first IT job was at an engineering firm, and the motto there, across the board, was, "Form follows function."
An "iterative approach" (at least I'm that current) is fine ...

And if I'm not making sense, you all are (and I mean this most sincerely) plainly doing excellent work ... Am I "old-fashioned" in thinking that a simple "overlay" of discretely defined game play functions - and with everything I've been trying to express, all along - used as a "map" for architectural design et. al. would be helpful, in combining game play goals with (hopefully painlessly) coding goals?

No objection about the disconnect, but at this stage we're still mostly focused on the foundations: getting everything on the screen, making buttons and units do something, figuring out data formats, and so on. Little to no game mechanics. Everything that we're doing in the short term is captured over on the Github project boards, and at a very high level the function is to recreate the (fundamental) behavior of Civ3 which is a known quantity. Some ways in which those functions may differ are called out in the proposal, our early discussions, Feature Requests.... and are what we need to Discuss-Prioritize-Organize as we go forward.

Ozymandias said:
Put another way (and, admittedly, I've not read WW's document) - If I can't follow what's going on, especially viz. game play within architecture ... who will?

And there is the root of the problem (not of your doing) - a lot of this has been at least thought about but it's not discoverable, and/or lacks buy-in. The only substantial document we have is a whirlwind 30-page technical treatise that I patched together by myself ca. 2019-2020, and the rest is ad-hoc Github stuff that only us devs care about. Quintillus and Puppeteer and I at least, having talked things out on our own, seem to be pretty much on the same page, but it's not much help to anyone else coming on board and especially non-developers. It is time we start putting together some more digestible docs. A Github wiki associated with the project site would seem to be the best place for this, where we can break it down into topics and collaborate. The forums are great for lengthy discussion but as we're seeing in real time, not so great for synthesizing information. As for the settled-upon new functions, those can go into a work backlog as issues/tickets/stories where everyone can see their status. Getting them to that point is less clear to me. What do you have in mind Oz?
 
I don't want to interfere much with the above, but at some point you'll have to start interacting with sound makers, sprite makers, etc. so as not to depend on Firaxis' work (if it were up to me, just use Sn00py's terrain ;)). It's kind of obvious but the obvious questions have to be asked at some point. :)
actually enjoys refactoring code
I'm singling out this particular line just because you've reminded me of this xkcd strip:
compiling.png
 
It's like a CYOA, except that I got into a loop in my first try.
 
I pretty much agree with what WildWeazel wrote. We probably do need better discoverability, I'm surprised that WildWeazel's document hadn't become visible to Ozymandias yet (but not that surprised, there have been a lot of posts for links to it to hide in). I suspect the work I've been doing on organizing milestones on the project board is also not very visible yet, but half of the reason I've been doing it is to better communicate what we're doing (the other half is to help figure out how far along we are).

But I also think WildWeazel is spot on about motivation and that this is a volunteer project. Saying, "it's a problem that we aren't doing this, you all should do this" only works on this sort of project if it's a glaringly obvious problem. Otherwise, I think a more effective approach would be, "We should consider doing this, because if we did this we would gain benefit X". And forming the consensus is key. Do we need more modularization? At this early stage, it seems much more of a theoretical concern than a practical one to me. Yes, eventually, I'm sure we will, and we should try to go down that path before we have a plate of spaghetti... but I haven't seen practical evidence that it is slowing down development, or that it is resulting in not gaining additional developers. At some point evidence to suggest that will start to appear.

Harping on it now though, just kills motivation. The only "gameplay" we have is settler units, completely random behavior for all other AI aspects, and some basic combat. To me, it feels like we're trying to plan for the Transcontinental Railroad when the B&O hasn't even run its first passenger train yet, and only just tested its first steam engine to make sure it's working. We'll make it to California eventually. But let's get our first train running first.

Ozymandias said:
But that's also part of my point: my brain glazes over, just skimming through pure coders' posts - I'm lost

This was part of the reason I had reservations about opening the forum to the world at large. I'm not at all surprised by this. I've had the same thing happen when reading some of Puppeteer's posts about CIA3 or OTDA, even as a developer (but not a CIA3 developer). If the target audience of my post is other coders, that's to be expected at times. I try to keep that in mind when making posts to my editor thread as well, to make sure they are at least somewhat approachable to a general audience. But because that's a solo project, there isn't a need for the more technical coordination posts we see here.

I've had the same thing happen when I look at threads for advanced Civ4 mods, too... "I fixed some obscure thing with details XYZ in SVN", and my eyes glaze over. It's probably helpful for the target audience, but not for me as a player of the mod.

So... I think it is a problem that there isn't a distinction between "developer threads" and "intended for mass consumption" threads; I've seen this in Civ4 mod forums too. Ideally they wouldn't be intermingled in the same place (commercial game developers' forums tend to only contain the intentionally-public-facing posts, if there are behind-the-scenes forums for developer discussions, they're private).

There probably can be more frequent "public-focused" threads. This is part of why I'd advocate for smaller and more frequent releases. We've got 9 things planned for Carthage, we should really have intermediate dev diaries, and probably an intermediate release after 4 or 5 of those top-level items are done. But we're never going to have 100% general-audience consumable threads unless we move the developer discussions somewhere else (maybe we should mark the general-audience threads with a special symbol, though).

------------

I think this could also ease a bit as a team grows. When I've been on teams with six developers or more, often one of them is mostly focused on that coder-non-coder communication divide. With our current number of developers, and especially as intermittent volunteer ones, that just isn't feasible yet. It might be in a year.

It's also worth noting that with our small team and rate of progress, there's only so much to share. We could have a monthly dev diary, but not a weekly one.

I'd welcome having a non-technical person get more involved in the testing aspect, too. I've been breaking down issues, all the developers have been opening pull requests. I have not seen a non-technical user show interest in that in-progress work, or testing it. Not that I expect that on a volunteer project. But nothing is preventing it. That role would also enable the person who takes it on to effectively communicate what the developers have been working on to the community, and ask more detailed questions about progress, without slowing down development even more.

I don't want to interfere much with the above, but at some point you'll have to start interacting with sound makers, sprite makers, etc. so as not to depend on Firaxis' work (if it were up to me, just use Sn00py's terrain ;)). It's kind of obvious but the obvious questions have to be asked at some point. :)

You are exactly right! We have a card planned for Carthage to start that work. I suspect we will wind up with more than just one unit in Carthage, but as the Civilization III manual said, the largest tower starts with the first stone.

Probably once Carthage is "out the door", I'll open a thread soliciting units. Ideally, I'd like all the work to be opt-in, as in someone says, "you can use my unit/PCX/etc. for C7." Kyriakos has already expressed interest in this, but realistically we'll need more than one person to be involved, even as prolific as Kyriakos has been over the years.
 
You are exactly right! We have a card planned for Carthage to start that work. I suspect we will wind up with more than just one unit in Carthage, but as the Civilization III manual said, the largest tower starts with the first stone.

Probably once Carthage is "out the door", I'll open a thread soliciting units. Ideally, I'd like all the work to be opt-in, as in someone says, "you can use my unit/PCX/etc. for C7." Kyriakos has already expressed interest in this, but realistically we'll need more than one person to be involved, even as prolific as Kyriakos has been over the years.
Oh, nice! I've just read it. Having user-made graphics should strengthen the claim against a possible SLAPP-type copyright lawsuit by TakeTwo.
 
Oh, nice! I've just read it. Having user-made graphics should strengthen the claim against a possible SLAPP-type copyright lawsuit by TakeTwo.

Anti-SLAPP laws have been put in place in Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Hawaii, Illinois, Indiana, Kansas, Louisiana, Maine, Maryland, Massachusetts, Minnesota, Missouri, Nebraska, Nevada, New Mexico, New York, Oklahoma, Oregon, Pennsylvania, Rhode Island, Tennessee, Texas, Utah, Vermont, Virginia, and Washington. (Ye Olde Wikipedia)
 
Give me a few days. It will be detailed.
  1. To begin, I had no idea that a "Design Document" even existed, until rereading one of @Quintillus' posts - which, I humbly suggest, should, in and of itself, be a concern. Any such major announcements/decisions should warrant their own thread.
  2. This entire "Future Development" forum is, essentially, a technical back-and-forth among devs. I think we should have two sub-fora, one for technical issues, and another for game play.
  3. I am distressed to see that the GitHub "technical" documentation includes bullet points like, "Unit Movement" and "Combat." To me, this can (at best) imply possible limitations due to the architecture utilized; at worst, game play features have been explicitly put in place.
  4. I'm likewise concerned about the evident confusion between crowdsourcing & open-sourcing. The former is a means of raising funds to develop a game (which I've already described in some detail) whereas the latter has opened up development tasks, without CFC community input.
  5. I keep "banging the drum," not so much about APIs, per se, but about a common format - at this point, I can only hope (for example) that a "Unit," a "Tile," etc., and modelled, consistently, throughout. I suggested this approach twice: once, very early on, to utilize an OO-style Class Tree, both with inheritable Attributes to, e.g., making adding any additional Unit characteristics easy.
  6. I also suggested that pretty much every game action, and interaction, can be modelled as an Event: ({Starting Condition(s)} + {Event Type} + {Event Outcome Decision Logic} = Outcome.) This means that the same structure can be used for, e.g., Combat, as well as the types of "true Events" we'd like to see. Note that this type of model is already implicit in the game in Tile Transformations, from Volcano Eruptions to Pollution.
  7. Similarly, I've mentioned that I have a set of "Rules" devised which I believe can go a long way towards causing quasi-intelligent, and vastly improves.\, AI behavior (I tossed a simple one, back-and-forth with @Flintlock, but the Conditions being discussed were on the simplistic side (how to decide where an AI Civ should build its next City.)
I think Points 1-5 might help poor @WildWeazel's concerns about, "Herding Cats: :run: " ( ;) ) Irrespective, I believe that a shared set of Structure between game play and tech dev issues MUST be devised - you know something along the lines of any sort of methodology whatsoever, which distinguishes between Functional (game play "Rules"/features) and technical development.
 
Last edited:
  1. To begin, I had no idea that a "Design Document" even existed, until rereading one of @Quintillus' posts - which, I humbly suggest, should, in and of itself, be a concern. Any such major announcements/decisions should warrant their own thread.
I agree. At this point, I don't fully remember how that was shared initially, but it probably was before the forum was set up. But going forward, one of the questions will be, "what constitutes a major decision?" We will likely make errors in the future as well, so calling out, "hey, that was important!" will help reinforce what is a major decision.

  1. This entire "Future Development" forum is, essentially, a technical back-and-forth among devs. I think we should have two sub-fora, one for technical issues, and another for game play.

Definitely agree. WildWeazel recently discovered that GitHub discussions can allow public participation, so I'm wondering (not convinced) if it makes sense to have dev discussions primarily take place there, and this forum be largely for non-dev communication. But two sub-fora at CFC also makes a lot of sense to me. In the immediate term, I hope the [dev] tag helps a bit, but I'm not sure it will go far enough, especially if [dev] threads significantly outnumber non-[dev] threads.

  1. I am distressed to see that the GitHub "technical" documentation includes bullet points like, "Unit Movement" and "Combat." To me, this can (at best) imply possible limitations due to the architecture utilized; at worst, game play features have been explicitly put in place.

If you mean the lists at https://github.com/C7-Game/Prototype/projects, it's a combination of formatting limitations (plain-text), and that all past Carthage are still high-level ideas based on WW's initial design document.

As I've been fleshing out the details (including based on feedback from the "What do we want in Carthage?" thread, although there was only a moderate amount of feedback there), I've been putting them into "Milestones" at https://github.com/C7-Game/Prototype/milestones . Viewing the issues for each milestone should give a much better picture of what they include. I will see if I can link those on the project page while not making it unreadable.

That said, to some extent game play features are being put in place. Not set in stone, but set in code that can later be modified. The combat that is in Babylon couldn't exist without that game play feature being added. There is a recognition that these aren't final, to that effect, about 20% of document issues have the "refactor" tag, and a significant part of the 30% with the "enhancement" tag improve on existing features as well, including some which make them more flexible.

  1. I'm likewise concerned about the evident confusion between crowdsourcing & open-sourcing. The former is a means of raising funds to develop a game (which I've already described in some detail) whereas the latter has opened up development tasks, without CFC community input.

The "raising funds" is interesting; in the first post you mentioned, "We plainly cannot offer monetary compensation", so I had been viewing this thread with an eye more towards Wikipedia-style crowdsourcing, where other motivators are the primary factors. Over the longer term, I am not wholly opposed to the possibility of having some sort of optional financial contribution, similar to what Godot has; that could cover longer-term project expenses (e.g. a mod hosting server), and allow more consistent contributions. But at this point, I'd like to be farther along the road to "game that people are playing" first.

It is evident that one of the challenges is how to make the collaboration more... collaborative? IMO, it's a good thing that development has been opened up, as the project could have stalled indefinitely otherwise. But there definitely is a question of how to involve non-coding contributions when there is so much left to do to have a playable game, let alone compatibilty with existing scenarios. We have 56 things left to do for Carthage (and likely a few more that we'll discover en route), and did about a dozen per month for Babylon. If anything the problem is too many ideas and features, so perhaps the most valuable contributions would not be the popular, "could we add this?" but, "what existing Civ3 features do you think would let us get to a minimal viable game?"

Another item that could help is figuring out the answer to, "what sort of community input is wanted, other than the ability to suggest new features?"

Perhaps relevant, we got about a 25% boost in users on Discord after Babylon (to 36 total), and have 13 comments on the Babylon release versus 3 on Aztec. We've also had one new developer contributor since the Babylon release, and another who has become much more active. I'm interpreting this as a sign that at least to some extent, our approach is working - with room for improvement, of course.

  1. I keep "banging the drum," not so much about APIs, per se, but about a common format - at this point, I can only hope (for example) that a "Unit," a "Tile," etc., and modelled, consistently, throughout. I suggested this approach twice: once, very early on, to utilize an OO-style Class Tree, both with inheritable Attributes to, e.g., making adding any additional Unit characteristics easy.
  2. I also suggested that pretty much every game action, and interaction, can be modelled as an Event: ({Starting Condition(s)} + {Event Type} + {Event Outcome Decision Logic} = Outcome.) This means that the same structure can be used for, e.g., Combat, as well as the types of "true Events" we'd like to see. Note that this type of model is already implicit in the game in Tile Transformations, from Volcano Eruptions to Pollution.
  3. Similarly, I've mentioned that I have a set of "Rules" devised which I believe can go a long way towards causing quasi-intelligent, and vastly improves.\, AI behavior (I tossed a simple one, back-and-forth with @Flintlock, but the Conditions being discussed were on the simplistic side (how to decide where an AI Civ should build its next City.)
I think Points 1-5 might help poor @WildWeazel's concerns about, "Herding Cats: :run: " ( ;) ) Irrespective, I believe that a shared set of Structure between game play and tech dev issues MUST be devised - you know something along the lines of any sort of methodology whatsoever, which distinguishes between Functional (game play "Rules"/features) and technical development.

I believe we are generally working towards unit/tile/etc. modeling. Some of these are carryovers from the Aztec prototype days. But I'll reference UnitPrototype.cs as one example to reference. It is not done; canFoundCity and canBuildRoad shouldn't just be booleans. I believe you mean that they should essentially be a key-value map, so that it is easy to add additional values? "canFlyIntoSpace" could be added in a mod, if the mod were also willing to implement the mechanics of that attribute? On the plus side, the IProducible interface works towards that OO-style class tree; so far UnitPrototype is the only IProducible, but eventually that will include buildings and perhaps other items as well.

I'll defer to WildWeazel on the events, as I know that is one of his personal goals for Carthage.

Do you have a link for the rule example you mentioned? I think I saw it, but can't remember which thread it was in. I think this is an area of opportunity for collaboration and two-way communication.
 
I agree. At this point, I don't fully remember how that was shared initially, but it probably was before the forum was set up. But going forward, one of the questions will be, "what constitutes a major decision?" We will likely make errors in the future as well, so calling out, "hey, that was important!" will help reinforce what is a major decision [...]

Combining / "rephrasing" some of your exemplary questions, my suggestions would be:

First, I have no issues with an "open source" approach on GitHub, if you're all finding it helpful ... HOWEVER, I do think that keeping something approximating a "mirror" of GitHub here in a separate sub-forum (and, ideally, vice-versa) is critical for - let's call it - "transparency." I thank you for the acknowledgement about the Design Document. My emphasis about GitHub being a mirror of CFC, and not the other way around, is crucial, with the exception that what, to the "layperson," would be Tech Esoterica, involving anyone who is not a member of CFC, is fine - and most people, who will ideally be contributing major input, will have no idea what a "[tag]" even is.

If you mean the lists at https://github.com/C7-Game/Prototype/projects, it's a combination of formatting limitations (plain-text), and that all past Carthage are still high-level ideas based on WW's initial design document.

(See my comments, above.)

As I've been fleshing out the details (including based on feedback from the "What do we want in Carthage?" thread, although there was only a moderate amount of feedback there), I've been putting them into "Milestones" at https://github.com/C7-Game/Prototype/milestones . Viewing the issues for each milestone should give a much better picture of what they include. I will see if I can link those on the project page while not making it unreadable.

That said, to some extent game play features are being put in place. Not set in stone, but set in code that can later be modified. The combat that is in Babylon couldn't exist without that game play feature being added. There is a recognition that these aren't final, to that effect, about 20% of document issues have the "refactor" tag, and a significant part of the 30% with the "enhancement" tag improve on existing features as well, including some which make them more flexible.

Here lies my main point: not a methodology, but a methodical, "linear" process:
  1. Keep up the "General" Features Request Thread.
  2. From that, have a "1 - 5" vote for the importance of each of each Request.
  3. Make it clear that the first however many beyond "1" -
    • Either Can or Cannot be feasibly coded - OR can best be added at some planned, future implementation (see my next point, "4")
  4. Organize the "winners" into whatever "functional grouping" (your choice in definition) and/or expected Release (which can, if needed, simply be "Future."
    • I do keep "pounding the drum" (evidently, and also, frankly, irksomely) into silence; these include:
      • A strict and "obvious" delineation between game play and technical matters: the example I mentioned about what, to an "outsider" (me??? :undecide: ) can be "reasonably" construed as confusing: "Unit Combat;" etc.
        • Even this can - reasonably or not - be misconstrued, not only as specific, and not agreed upon, set of game play mechanisms; or -
        • A technological framework which might, or might not, impose any sort of constraint, re: any desired implementation of that function ...
        • This why one of my many "drums" has been some form of common, and readily understandable, "pseudo-code / object model" for each "Game Element" ("Unit;" "Terrain Tile.") One of my earliest posts illustrates the possibility of using a common format for both Units and Tiles.
        • As coders, why would you possibly want the coded "representation" of a Unit to be different in two different units of code, especially if "open-sourcing" is being utilized?
        • Ditto another of my "drums:" a common interface - API or I-don't-care-what - allowing any aspect(s) of those commonly constructed elements like Units etc. to be readily passed from, say, a "Function" describing Unit "Attributes" (Movement; Combat) to/from other Functions which might, separately, describe/define how a Unit Moves, or is involved in Combat?
        • ... Which brings us back to "pseudo-code," which might allow any significant, non-technical contributor to actually understand whatever is going on.
  5. Organize these into Releases, whether "Specific," or, "TBD."
    • Make certain that, before each Release is coded, that it is plainly understood - with a new Thread - will and/or will not be included within each Release.
    • Similarly, have a new thread for each Release, or any other, "significant matter."
Lastly - as you're already doing - make certain that each Release is, to some significant degree, actually "Playable," either as a "Demonstrator" or (ultimately) partially "playable" part of a "true" game - AND have, within each each "New Release" Thread, plenty of room (maybe even, for the sake of everyone's sanity, in a Common Format) Comments, etc.

The "raising funds" is interesting; in the first post you mentioned, "We plainly cannot offer monetary compensation", so I had been viewing this thread with an eye more towards Wikipedia-style crowdsourcing, where other motivators are the primary factors. Over the longer term, I am not wholly opposed to the possibility of having some sort of optional financial contribution, similar to what Godot has; that could cover longer-term project expenses (e.g. a mod hosting server), and allow more consistent contributions. But at this point, I'd like to be farther along the road to "game that people are playing" first.

My own thoughts around crowdsourcing are geared to what I've mentioned many a time, in different places: forming a legal, not-for-profit ("501(c)(3)") corporation, with actual money raised from said crowdsourcing. If sufficiently funded, then "proper" compensation can be offered, to whatever degree feasible. The advantages of this go far beyond this "simple" matter of compensation, and are to many to list& explain here; this is why I mentioned "Motivating Factors" in the manner I did.


It is evident that one of the challenges is how to make the collaboration more... collaborative? IMO, it's a good thing that development has been opened up, as the project could have stalled indefinitely otherwise. But there definitely is a question of how to involve non-coding contributions when there is so much left to do to have a playable game

Agreed; & see above.


[...] let alone compatibility with existing scenarios.

- Now, this is where I get seriously worried: the "thundering silence" accompanying each and every reminder that I make, concerning what I understood to be our "compact" with our CFC Community: to make a new game which is 100% "plug compatible" with ALL existing game components ... So: ARE WE, OR AREN'T WE?

Do you have a link for the rule example you mentioned? I think I saw it, but can't remember which thread it was in. I think this is an area of opportunity for collaboration and two-way communication.

"Dutch 0.3:" Unit orders; Unit combat; Unit media.

- TY, Quintillus! :cooool:

:D
 
I like the idea of having voting on the items for each release. One of the major challenges will be how exactly to organize that - there are not just the feature requests (most of which are for new features beyond what Civ3 offers), but the features required to reach parity with Civ3 functions. As well as the factor that there are in some cases practical prerequisites - for example, we could have a fantastic idea for a Space Race extension, but not be anywhere near ready to implement it. I think what will be required to make this a practical exercise is for someone to curate the possibilities first, taking into account where C7 is at the time, to present a list of those options to the community. CFC voting, allowing multiple votes, could be a decent way to allow quantifiable feedback.

Another challenge will be figuring out what the appropriate granularity of features is. Combat being a good example of something that can be broken done very granularly, but if the top 5 items voted for were all granular combat mechanics, it could be a very small release indeed. On the other hand, "all ancient age combat" would have been a very large chunk. There will be some art to this; some requests may be easy items that can be done quickly, whereas others would require major changes.

Alas, someone will have to be willing to take up the organization of this. I already have too many hats in the project.

-----

For the "mirroring", I think one question is what is the appropriate level of detail? The "Babylon" progress thread was one that kind of did provide a mirror of what was going on progress wise, but my inkling is that was too detailed. I could repurpose the first post in "What do we want in Carthage?" to list the current plan, or start a separate thread for that (and in Dutch, we should try to foster more community involvement up front than Carthage gathered).

----

On gameplay vs technical, and pseudo-code... perhaps part of the reason this has flown over a lot of heads (mine included) is that the assumption so far has been the game play elements match a subset of what Civ3 has? I'm not sure what the practical benefit of describing what a unit in C7 is, when it's a subset of what a unit is in Civ3. Eventually that may change. But I'm still struggling to see what the benefit in the short term (let's say Q2 2022) would be, when we have perhaps 5% of what Civ3 has in gameplay, and still have plenty of, "match Civ3" to go.

One possible example, once creating mods for C7 is something that someone might want to do, having documentation on which features, e.g. unit attributes, are ready in C7 would be useful. Right now, it's too early for mods to be made for C7, so writing that up would just slow us down.

But I'm afraid this might be an area where you'll have to provide the first iteration of it rather than try to explain it, since given the silence, I'm probably not the only one who's not entirely sure what we're missing that's so important right now. To me the "obvious" part is that the game play is "match Civ3" and the technical part is implementing that in Godot... but I don't think that's what you are referring to as obvious.

----

In case it is hidden, one of the themes I'm trying to hint at is, "feel free to start implementing your suggestions." Generally speaking I like non-coding tasks more than the average coder (and I've probably spent as much time on non-coding tasks as coding ones over the past month), but there are far too many tasks of both the coding and non-coding varieties for me to do all of either category, so the non-coding tasks are much more likely to happen if a non-coder takes them up.

- Now, this is where I get seriously worried: the "thundering silence" accompanying each and every reminder that I make, concerning what I understood to be our "compact" with our CFC Community: to make a new game which is 100% "plug compatible" with ALL existing game components ... So: ARE WE, OR AREN'T WE?

We are; the thinking behind what I wrote in a somewhat poorly worded manner is that I would not be surprised if C7 is somewhat playable before that 100% is reached for all mechanics. Someone might find they enjoy playing C7 before we have air combat mechanics, for example. We will still get there eventually, assuming the project doesn't stall out.

(I'm also a bit confused by the link to Dutch for my question about the rule example. I thought there was a CFC-based discussion you were referring to? Maybe I misunderstood)
 
I like the idea of having voting on the items for each release. One of the major challenges will be how exactly to organize that - there are not just the feature requests (most of which are for new features beyond what Civ3 offers), but the features required to reach parity with Civ3 functions. As well as the factor that there are in some cases practical prerequisites - for example, we could have a fantastic idea for a Space Race extension, but not be anywhere near ready to implement it. I think what will be required to make this a practical exercise is for someone to curate the possibilities first, taking into account where C7 is at the time, to present a list of those options to the community. CFC voting, allowing multiple votes, could be a decent way to allow quantifiable feedback.

Another challenge will be figuring out what the appropriate granularity of features is. Combat being a good example of something that can be broken done very granularly, but if the top 5 items voted for were all granular combat mechanics, it could be a very small release indeed. On the other hand, "all ancient age combat" would have been a very large chunk. There will be some art to this; some requests may be easy items that can be done quickly, whereas others would require major changes.

I think that there would need to be 3 levels here:
  1. A technical decision about granularity.
  2. Grouping requests into Game Play Categories -
  3. Matched with identically named Implementation Categories, including:
    • Reasons for inclusion/exclusion, and/or -
    • "Deferment to (Possible) Future Releases.

Alas, someone will have to be willing to take up the organization of this. I already have too many hats in the project.

... :hammer: ... Oh, @Takhisis :D ... ... ... ( :joke: )

For the "mirroring", I think one question is what is the appropriate level of detail? The "Babylon" progress thread was one that kind of did provide a mirror of what was going on progress wise, but my inkling is that was too detailed. I could repurpose the first post in "What do we want in Carthage?" to list the current plan, or start a separate thread for that (and in Dutch, we should try to foster more community involvement up front than Carthage gathered).

Are my "3 Levels," above, helpful here?

On gameplay vs technical, and pseudo-code... perhaps part of the reason this has flown over a lot of heads (mine included) is that the assumption so far has been the game play elements match a subset of what Civ3 has? I'm not sure what the practical benefit of describing what a unit in C7 is, when it's a subset of what a unit is in Civ3. Eventually that may change. But I'm still struggling to see what the benefit in the short term (let's say Q2 2022) would be, when we have perhaps 5% of what Civ3 has in gameplay, and still have plenty of, "match Civ3" to go.
  1. I (both humbly and genuinely) suggest that you have a look at one of my earliest posts here on the virtues of applying an "Object Modelling" Approach to game elements (and if my terminology is hopelessly out of date, please do tell me - Although, I have, consistently and correctly, seen the term applied to blockchains.) (NB: the Spoiler shows a class diagram directly illustrating what I believe these many virtues are.)
  2. This "OO" ("Object Oriented," equally and directly applicable to both coding and db structures) defines common "Class Structures" which:
    • Allow a consistency of implementation of game elements, most crucially making it easier to add something entirely new (like "Hybrid Air/Land Units" for helicopters; and
    • Affords a "Rosetta Stone" between techies & non-techies: the approach is (with a minor bit of encouragement) both readily understood by One & All, and furthermore -
    • Affords direct "translations" from design to implementation.
... Also, somewhere along the way, I'd mentioned that pretty much every game interaction could, similarly, all be modeled in the same fashion:

({Initial State} + {Event Condition(s) Probabilities} = {Resulting State})

This template works for Unit Movement, Unit Combat, Terrain Transformations, "Colonial Secession" ...

To me the "obvious" part is that the game play is "match Civ3" and the technical part is implementing that in Godot... but I don't think that's what you are referring to as obvious.

:confused: For me, the "obvious" part has been to implement a new game which:
  1. Provides a new "framework" within which all existing game play elements (Units; Terrain; Mods) can be used, directly (what I - again, perhaps misbegottenly - keep referring to as, "plug compatibility.")
  2. Allows these elements too be more readily modded, e.g., the "Hybrid Units" I mentioned, above.
  3. Allows a far superior AI implementation to the existing one.
  4. Offers a better UI experience ...
... ???

In case it is hidden, one of the themes I'm trying to hint at is, "feel free to start implementing your suggestions."

(Kindly take this with a grain of salt) - Do you mean, "Let any coder plug away at an entirely unagreed upon feature/function, in a way which might be 100% inconsistent with what everyone else is thinking/doing?"

Generally speaking I like non-coding tasks more than the average coder (and I've probably spent as much time on non-coding tasks as coding ones over the past month), but there are far too many tasks of both the coding and non-coding varieties for me to do all of either category, so the non-coding tasks are much more likely to happen if a non-coder takes them up.

Which is one of (many) reasons why I so often specifically laud your efforts: as is manifest in your great editor, you see both "sides" of the game play/tech implementation effort with an unparalleled clarity (and I genuinely mean no offense whatsoever to Those Who Dwell Mainly Upon One Side Of This Great Chasm :D )

We are; the thinking behind what I wrote in a somewhat poorly worded manner is that I would not be surprised if C7 is somewhat playable before that 100% is reached for all mechanics. Someone might find they enjoy playing C7 before we have air combat mechanics, for example. We will still get there eventually, assuming the project doesn't stall out.

:goodjob: ... But, I don't recall seeing that specifically stated anywhere - Perhaps it might belong in a Design Document and/or some yet to be started "C7 Manifesto" thread?

(I'm also a bit confused by the link to Dutch for my question about the rule example. I thought there was a CFC-based discussion you were referring to? Maybe I misunderstood)

... Which speaks directly to my point :think:
 
Last edited:
(I'll try to actually keep my reply short tonight, and reply to the rest later; notably, I will be able to read your Comprehensive Ideas much better tomorrow at a coffee shop than while tired tonight. I suppose part of the reason I am tired is that I stayed up too late forming a large-form reply last night!)

:confused: For me, the "obvious" part has been to implement a new game which:
  1. Provides a new "framework" within which all existing game play elements (Units; Terrain; Mods) can be used, directly (what I - again, perhaps misbegottenly - keep referring to as, "plug compatibility.")
  2. Allows these elements too be more readily modded, e.g., the "Hybrid Units" I mentioned, above.
  3. Allows a far superior AI implementation to the existing one.
  4. Offers a better UI experience ...
... ???

This is consistent with my understanding about the goals of the new game. I believe it is also consistent with what @WildWeazel wrote in Dev Diary 1:

Our vision is to make Civ3 as it could have been, rebuilt for today's modders and players: removing arbitary limits, fixing broken features, expanding mod capabilities, and supporting modern graphics and platforms. A game that can go beyond C3C but retain all of its content.

We should keep this visible, rather than just at the end of Page 2 of this thread, or in a Dev Diary thread that will fall off the front page before long. WW recently updated the "Welcome" thread in this sub-forum to be more comprehensive, and a variant of what you and he wrote would fit in well there.

(Kindly take this with a grain of salt) - Do you mean, "Let any coder plug away at an entirely unagreed upon feature/function, in a way which might be 100% inconsistent with what everyone else is thinking/doing?"

I actually meant that either you, or Takhisis, or someone else with the motivation to do so, could start working on some of the non-technical collaborative proposals; for example more definitively figuring out what our priorities for the next couple milestones should be.

But to your point, it is both important and challenging to keep things working consistently, and in the same general direction. Aztec and early Babylon were somewhat Wild West days, but the frontier is slowly being tamed. Still, one of the challenges is having enough people willing to review what's going on in order to make sure things are consistent. On the code side, this seems to be improving with the new contributors for Carthage being willing to help out in reviews, as well as technical work to start applying some standards. But I see a lot of opportunity for someone semi-technical to help close the gap between what the coders are doing and the non-coding part of the community.

As an example of that, for the (relatively) obscure Haiku operating system, there's someone who summarizes the progress each month here, in a relatively understandable fashion. USB WiFi support, that's something end users understand. GIMP and Inkscape, fairly well-known programs, that's like the equivalent of adding support for roads and railroads in C7 (which is still in the future). This person could also suggest topics for more in-depth articles; a few I foresee being viable for sharing in the not-too-distant future is an overview of how the AI components are working, and generally what the AI considers in its decisions, and how the C7 save format works and can be modified.

One thing I've been somewhat pleased by is that the effort I put into curating tasks for C7 seems to have resulted in coders choosing to do things that are at least somewhat organized ahead of times. From this Carthage milestone page, we currently have 48 tasks that current or prospective coders can choose to start working on - and so far, that's been what's happening. The cats have at least somewhat been herded; there is enough to do that is organized that people are choosing do items from that list rather than random ideas that just pop into their head. But those tasks are based on the understanding WildWeazel and I have. Anyone from the community can comment on them, and a few comments have been left, but so far only by coders. Duplicating everything here as well sounds like a synchronization headache. Maybe we do need to make it more visible that this can be done by the community though? A future article on, "here's how you can help out from a non-technical or semi-technical non-coding standpoint at GitHub" could be useful.

(I'm also kind of amazed that it's working, and drawing in new contributors. Probably the greatest reason I haven't contributed much to open-source projects that I didn't start is it being difficult to figure out where to start/what to do. Followed by it being too difficult to set up the software required to contribute. There's work to be done on extending that, especially on the non-technical side)
 
Back
Top Bottom