Apolyton Civilization Site Forums
  Clash of Civilizations
  The Programming of this Project

Post New Topic  Post A ReplyPost A Reply In A New Window

profile | register | preferences | faq | search next newest topic | next oldest topic bottom of page
Author
Topic:   The Programming of this Project Format for Better Printing
Druid2
Warlord
Dallas,TX
May 99
posted June 03, 1999 20:09   Click Here to See the Profile for Druid2Click Here to Email Druid2  send a private message to Druid2
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Greetings. The Imperium wants YOU !

If you're a Java programmer or other techno-geek, that is.

Mark has tasked me with getting the programming effort started. In order to do that, I'm going to start with the following:

- Team Assets survey. This is a fancy term for a list of people who are going to help with the programming. If you are a Java programmer, and are intersted in doing something for this project, please post below. Also please give some indication of your Java experience and how much time you can spend on this. If you're shy, you can email me directly. ALL levels of folk are going to be needed, with various skills -- testers, programmers, grafix folk, program integrator, etc. But for now, I'm only talking about Java programming.

- We'll also need project-leader type geeks who are not necessarily Java-gods. [OKOK.. Java programmers and project-leader types.]

- Wanted: someone to design a bug/problem collection active web page that will fill the bug database. If you think you're the one for this, please do NOT get started. There may be several people who want to, and I'd hate to see anybody waste valuable time. [*AND* an active web page programmer]

- IMPORTANT Clash of Civilizations will live or die based on the quality of our AI. If you have some special expertise on this aspect, please step forward. [Did I mention AI experts, too?]

- Before programming will start in earnest, there will be an overall system design flowchart [or equivalent]. Once this is detailed to the module level, we will have something to work toward. I'm starting on that now, based on what Mark has already programmed for Clash v0.05. I havent looked at it at all yet [as of 6/3], but I expect we'll wind up with something more complex.
Ideally, I'd hope that the Dukes could each do a partial design to this level - with or without "formal flowchart" doesnt matter. If you're a Clash Duke of [_whatever_] and you have no idea what I'm talking about, or feel unsure how to go about it, let me know, please. I know we have techno-folk on this project who are NOT Java programmers who will be available to help [meaning: "we will draft them" ].

- We'll follow some programming protocols. I certainly am not trying to insult or offend anyone by mentioning them up front. Nobody is going to try and be the Tsar of Code on this, and no one will come to your house and tell the neighbors what an evil person you are. But this project will be at least 'semi-open' code, and it will have to be debugged and maintained by a whole range of people. We have to start and finish the Clash project with the idea that on-going maintainability is the key programming issue. So, just scan thru the following ideas and be honest if you cant deal with these modest restrictions.

---- Comments are required. Not on every line [there *have* been project with that requirement, but none of them was a game *S*], but the main logic of every module has to be clear from the comments. I anticipate using Javadoc [or something better if my info is out of date] to compare the final code with the original design.
---- Dont write dense code. And if you have some unbelievably "neat" but undecipherable Java-trick.... dont use it.
---- Format your code.
---- Do not create new public or global level variables or constants in your module. Somewhere, we'll have a global module that will do them all.
---- We'll use the programmer-hated, but maintainer- and debugger-loved, long and meaningful variable names. PLEASE!
---- No spaghetti code. If your logic is getting that complex, we need another module or two, or you need to reorganize the logic.
---- You have to be willing to ask for help when/if you get stuck.
---- No easter eggs !!!

Again, I apologize if this looks like a list of "well.. EVERYbody does that"... The fact of the matter is that most programmers I've met over the years... (me included!) .. do NOT. Because of the nature of this programming team... volunteers, dispersed around the world, various skill levels etc... doing these things will be crucial.

---------------------------
My background:
I've been a consultant / programmer / analyst / project manager for about 20 yrs now. [Yes, that puts me in the "Old as Dirt" category, but that's another story entirely. ] I'm fluent in several languages, but I wouldnt call myself a Java programmer. I know enough to get along in Java, but nothing deep.
I've never worked on a Unix design or on a Mac, so anyone with info on pecularities of those platforms should speak up!

------------
..Druid..

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted June 03, 1999 20:24   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Sarge, where do I enlist?

I'm Not a professional programmer, but know Java reasonably well.

I Think I have really good ideas on AI, and I do a little AI stuff professionally. So that is my natural preference for a place to code.
However, I will do whatever nobody else wants to do to get this Done.

I will send you a crude module design on the Economy soon (my duchy at least for now) and after you laugh at its rustic simplicity and misguided notions, we can revise it .

-Mark

Druid2
Warlord
Dallas,TX
May 99
posted June 03, 1999 20:39   Click Here to See the Profile for Druid2Click Here to Email Druid2  send a private message to Druid2
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Mark.. I already had you down in every category... I'm looking for replacements for you *L*

"rustic simplicity" yeaaaahhhhhRIGHT. I *saw* your econ design.

Blade Runner
Warlord
Belgium
b.02-15-99
posted June 04, 1999 04:43   Click Here to See the Profile for Blade RunnerClick Here to Email Blade Runner  send a private message to Blade Runner
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Druid2,

I have 15 years computer programming experience, mostly Pascal (Turbo and Delphi now). I can write programs in other computer languages. I have C, Xbase, VB experience and I write Delphi components too. I just start to write my Java programs to get practice.
My passion is the embedded languages and parsers and other program automation stuff.
I volunteer to be the "Duke" of the scenario and modification. I already send my ideas to the following threads:
Program structure for an easy to modify game
Programmers: macro possibility
Unfortunately I must leave in the end of June, but I'll be back in the beginning of August.

Please send comments, critics about these ideas.

Blade Runner

manurein
Clash of Civilizations
Social Model

Paris, France
May 99
posted June 04, 1999 05:50   Click Here to See the Profile for manureinClick Here to Email manurein  send a private message to manurein
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Druid.
I'm a C/C++ programmer for 4 years, I also have little experience with assembler.
I'm not a java programmer, I've begun an app for my social model and it's my first ever Java application.
I have no real practice experience of AI, also I have some theorical background on the subject. However, I'm very intersted in AI and I am willing to code AI. This project is a very good occasion for me.
I engage myself in coding my model, but I dont already know what amount of code and time it will take, so I cant firmly engage on coding something else, although if things go fast enough on my part I will be ready for coding anything else yoou need.

Note : as soon as my girlfriend gives me full access to my computer...

[This message has been edited by manurein (edited June 04, 1999).]

JimC
Clash of Civilizations
AI Coding

Birmingham, England
May 99
posted June 04, 1999 07:06   Click Here to See the Profile for JimCClick Here to Email JimC  send a private message to JimCSend a Message to UIN: 15227822 Visit JimC's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
OK here goes....

Main programming experience - PC Assembly (~10+ years of messing around), C/C++ (~4-5 years), Java (~1-2 years).

'Other' lesser programming abilities - ZX81 machine code (my first computer!!!), Pascal, BASIC, HTML etc. etc.

I'm NOT a professional programmer; I'm a Computer Science student. I've spent the last year of my life coding pretty much solidly in Java.

My main programming interests:

- low-level Assembly / Architecture (not really much use in this project)

- AI; I'm quite strong in the areas of symbolic logic and Genetic Programming, but I'm willing to experiment with anything. AI is pretty much trial and error anyway.

- I've already coded a load of Map AI modules for the project (I'll send source code if you want). I'm currently thinking about implementing some GP into the initial AI stages, to give us a 'backbone' for what will no doubt be some very complex AI.

I'll volunteer to co-ordinate any map / movement AI routines for the moment. Since proper AI coding can't begin in earnest until the game engine has been coded, I'll gladly work in any area until that time.

Jim

manurein
Clash of Civilizations
Social Model

Paris, France
May 99
posted June 04, 1999 10:34   Click Here to See the Profile for manureinClick Here to Email manurein  send a private message to manurein
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
OK, guys.
I have a suggestion (or a request...)
As a nex comer to java and C/C++ aficionado, now that I'm trying to build my first java app, one of the first thing I'll have to do is creating tools and objects for data manipulation. I've already built a simple list, but I wonder how tp make more complicated things without pointers (fe dynamic arrays...), and moreover I guess that some tools already have been developped.
SO, if u java masters could tell us (and especially me) what kind of structures u use (like dynamic arrays, sorted lists, binary trees...) and eventually how u built them or where we can find them, I think it would be a great time-saver.

ThankS.

JimC
Clash of Civilizations
AI Coding

Birmingham, England
May 99
posted June 04, 1999 11:30   Click Here to See the Profile for JimCClick Here to Email JimC  send a private message to JimCSend a Message to UIN: 15227822 Visit JimC's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
manurein:

JDK1.2's Collections framework contains nearly all Set-based data structures and operations you could possibly want - growable arrays, lists, hashtables etc...

package - java.util.Collections

btw In case you didn't know, all Objects in Java are pass-by-reference - that's where the pointers went :-)

If you want any source code examples, just let me know your e-mail address.

Jim

btw Druid2 - how are we going to distribute our existing source code, who is going to evaluate it, and who is going to be in charge of version control? just wondering....

Druid2
Warlord
Dallas,TX
May 99
posted June 04, 1999 23:39   Click Here to See the Profile for Druid2Click Here to Email Druid2  send a private message to Druid2
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Jim..

I think the easiest thing to do is to store the various modules in our Clash website. Which will also be where the 'bugs' database and bug/change reporting page is located. Which will also be where the other stuff is located.

Which we dont have... yet...

Version control? yeeesssssss... that sounds like a good idea, but with this varied a team, I doubt that any automated system would work. So, we're back to the old-style. The webmaster of this to-be-born web page would upload the new stuff, after moving the old stuff to a sub directory, from where it could be brought back to life when/as needed.

"evaluate the code" ?? nope, not me. Not enuf time in this life. If it works, and the doc seems to match the objective for the module, it passes.

[This message has been edited by Druid2 (edited June 05, 1999).]

F_Smith
Prince
Austin, Tx 78728
May 99
posted June 07, 1999 17:34   Click Here to See the Profile for F_Smith   send a private message to F_Smith
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Count me in, of course:

I'm a corporate network programmer -- Cobol (way back), VB, C++, but prefer Java (by far!).

I'm not very experienced with Graphics, which has turned out to be our biggest current need. I'm researching Graphix now, and have some pretty sophisticated possibilities (altho I'll need help making use of them!). I think I have a good, professional-looking idea for a game interface now, beyond the use of components.

I'll be pretty busy until the 21st, after I get back from JavaOne.

Ciao.

F_Smith
Prince
Austin, Tx 78728
May 99
posted June 07, 1999 17:37   Click Here to See the Profile for F_Smith   send a private message to F_Smith
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
P.S. --

Manuerin:

I switch back and forth between Vectors and linked-lists, for dynamically sized data structures.

I prefer Vectors, but traversing / searching a list of Vectors can be pretty slow compared to traversing an Array.

I'm avoiding Java2 until it's more commonly available. Ease of distribution is one of my primary objectives.

MarkG
Apolyton CS Co-Administrator
Greece
b.02-15-99
posted June 07, 1999 17:37   Click Here to See the Profile for MarkGClick Here to Email MarkG  send a private message to MarkGSend a Message to UIN: 2865183 Visit MarkG's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
testing...
MarkG
Apolyton CS Co-Administrator
Greece
b.02-15-99
posted June 07, 1999 17:39   Click Here to See the Profile for MarkGClick Here to Email MarkG  send a private message to MarkGSend a Message to UIN: 2865183 Visit MarkG's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
and testing again...
Druid2
Warlord
Dallas,TX
May 99
posted June 08, 1999 13:14   Click Here to See the Profile for Druid2Click Here to Email Druid2  send a private message to Druid2
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
I'd like to get started on some of the details that will underlie the program. Let's pick the main data arrays to start with:

What will the data storage array look like for

1) The map. An X x Y array of squares (each representing 100km^2, I think). How much data, of what types will we need to define it? JimC or Mark? one of youse guys?

2) The Military units and TFs. As coDuke of Military, I'll go cull the Military thread and put a draft together on this.

3) Cities and/or Province. Specifically what data will we need to store for each "area"? I'll ask the Duke d'Provence

4) Research. What will we have to store for each node on the research tree? Again, I'll ask the Duke of Research.

That will get us started.

JimC
Clash of Civilizations
AI Coding

Birmingham, England
May 99
posted June 08, 1999 18:21   Click Here to See the Profile for JimCClick Here to Email JimC  send a private message to JimCSend a Message to UIN: 15227822 Visit JimC's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
This is all of the data I use in my basic MapSquare class for the Map AI:

{

// a 2-d co-ordinate for the square

protected Int2D position;

// the terrain type

protected int terraintype;

}

My basic Map class data fields look like this:

{

// The array of mapsquares

protected MapSquare[][] mapsquares;

// The size of the map

protected Int2D size;

// Is the map cylindrical?

protected boolean cylindrical;

// data about the different terrain types

protected TerrainTypes terraintypes;

}


Once I've tidied my code up, intensity data will be included in each MapSquare, as an integer value.

Jim

Druid2
Warlord
Dallas,TX
May 99
posted June 08, 1999 21:04   Click Here to See the Profile for Druid2Click Here to Email Druid2  send a private message to Druid2
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
*Tables for the Military Data*

A couple of changes from the Mil Model:

a) I went w/ Mark's single Combat Value, but added a diff. CV vs each of the domain types. [A unit can be strong vs Air, weak vs ground, etc.]

b) Changed the name from "ZOD" to Recon Zone... sounds more military and RECON is better than ZOD.

[This message has been edited by Druid2 (edited June 08, 1999).]

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted June 08, 1999 21:56   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Druid, REVISED 6/9/99

byte = +/- 127, (8 bit, can shift it in code to get 0-255)
short = +/- 32k, 16 bit
int = +/- 2x10^9, 32bit
float +/- 3E38 32bit


Lots of the world is ocean. I think we should have a two Classes BaseMapSquare can be an ocean square with no further enhancement. MapSquare would be a place people could live that gets the full treatment.

These are not necessarily well thought out. I just took stuff from Clash V0.05 and mutilated it a bit

I'm sure I need more, but this is a start.


//////////////////
// BaseMapSquare //
/////////////////

byte terrain // one of the terrain types, e.g. MapSquare.WATER
byte siteType = 0;
// index pointing to position in Array that holds site information
// Right now there is only one site Type for each terrain type, but I'm setting
// it up more generally for future use
*That is are all Forests the same or are some more resource rich, or convert into better farmland . . .*

short xLoc, yLoc; // absolute x and y coords of the square

TF[] TFsHere; // the TFs know what civ they're from by TF.itsCiv
byte numTFsHere = 0;

boolean selected; // for use in selecting squares on the map for various functions

byte worldIndex = 0;// Which world is the square in?
// Defaults to 0, the main game world * this is for AI use *

//might need something for fish availablility here


/////////////////////
// MapSquare //
/////////////////////

class MapSquare extends BaseMapSquare implements Cloneable {
// an individual land square of the map and its characteristics

short [5] workersOn // workers on this type of site
int [5] developedSites // level of development of sites for
// farm, resources, production, services, Special
Number of sites available are given by terrain, except for Specials
which are done on a per-square basis

byte specialSites // number of special sites in this square (usually 0)
byte specialType // if there is an econ special in the square (coal etc) it goes here

byte siteAdjustment[];// modification of sites due to normal variation or loss to depletion. Easier to put it in since we might want to let sites deplete at some point.

All roads and rivers go to center of Sq

byte[] roadCondition; // [0] is N and it goes cw ([1] = NE etc...)
// No Road = -1, 0 is for planned or destroyed roads, + numbers for better roads

byte[] riverPos; different size rivers work similarly to roads.
//Could also use for canals

Province prov; // the Province the square is associated with, if any
boolean city = false;// is this square urban?

float pop; // Population, 1 = 1000 people

float milPower = 0;// the defensive military capability of the inhabitants of the square includes people + mil units if present
Culture cultures[];//Culture covers tech and society aspects of populated squares
// there can be up to three cultures per Square
byte culturePct[];// that don't belong to a civ, culturePct keeps track of percent
// of population in each of three cultures if sum over culturePct less than 100
// the rest of the pop is a mixture of other cultures too small to keep track of


boolean frontLine = false; // *AI used if sq is part of a prov to determine
// if this square is directly exposed to potential hostilities
byte numForeignSqs = -1; // number of foreign squares adjacent
// Specifically, number of adj. land squares not controlled directly by us

[This message has been edited by Mark_Everson (edited June 09, 1999).]

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted June 09, 1999 20:51   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Province Info

byte = +/- 127, (8 bit, can shift it in code to get 0-255)
short = +/- 32k, 16 bit
int = +/- 2x10^9, 32bit
float +/- 3E38 32bit

These are not necessarily well thought out. I just took stuff from Clash V0.05 and mutilated it a bit

String provName;
Civ itsCiv;
byte numInCiv; // its number in the provs[] array
Character administrator;// if there is a character administrator for the province it goes here

MapSquare[] squares;// squares that constitute the province
short turnFounded;// turn settled or conquered by the civ
boolean selected; // short-term flag to keep track of various operations
//boolean frontLine = true;// Very Important for military AI
// used if part of the prov is directly exposed to potential hostilities

float pop; // Population of the Province 1 pop = 1000 people

// information for culture model to break out people in province by economic class, culture and religion. Don't know exactly what's needed yet.

Sector[] // Sectors of economy: Farm, Resources, Prod, Services, Special;// //Sector class handles in detail the econ stats. Prices for the items and amounts produced etc. (Yes I know I need to provide this too!)

Infra infra = null;// class to handle detailed infrastr management,

Merchant[] // merchants that call this province home

byte taxRate;// in %
float tax$; // income resulting from taxation this turn
float $avail=0;// $ placed to lure immigrants to prov.

Float moneyToAttractPeople // stash of cash to lure people here
float amtPerHead // amount each immigrant would get
(maybe need this in MapSquare also?)


Unit[] unitsSupported; // the units know what civ they're from by Unit.itsCiv
short numUnitsSupported = 0;

Reserves[] // mil units on reserve status (maybe this should be in MapSquare)

manurein
Clash of Civilizations
Social Model

Paris, France
May 99
posted June 10, 1999 05:59   Click Here to See the Profile for manureinClick Here to Email manurein  send a private message to manurein
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Social Model.

The model deals with the following objects :

- cultures, defined at civ. level.
- classes, defines at civ level.
- religions, defined at world level for mono and civ level for poly.
- agents (=culture+class+religion), defined at civ level.
- provinces, defined at civ level.


Here are the datas used by the social model for each object :

- cultures :
- traditionalism (byte)
- soc. rigidity (byte)
- authority acceptance (byte)
- education (byte)
- nationalism (byte)
- provincialism (byte)
- familal shpae (byte, one of 3 values)
- physical traits (byte)
- language (byte)
(maybe : - humanism, byte)
- A vector holding the Attitude of this culture vs. every other cultures it knows (bytes).

- classes :
- the datas from H's model
- life level (earning, in % to the civ total earnings; byte)
- a vector for Attitude of this class vs. every other class of the civ (bytes)

- religions :
1. polytheistic religions :
- human sacrific oriented (byte)
- sky oriented (byte)
- nature oriented (byte)
- divinities evilness (byte)
- a vector holding Attitude of this rel vs evry other rels it knows (poly AND mono, bytes)
2. monotheistic religions :
- tolerance (byte)
- individualism (byte)
- a vector holding Attitude of this rel vs evry other rels it knows (poly AND mono, bytes)
(- other attributes? Wait for ur ideas)

- Provinces :
- All datas from Mark'model
- local life level (earnings, a modifier to the overall civ mean life level; byte or float)
- local health (byte)
- three demographic tables holding proportion of peoples : culture/class, class/religion, religion/culture (integers)

- Agents : the agents are the groups formed at the ciov level with people sharing the same class, religion and culture.
- culture (object ref or TBD)
- class (object ref or TBD)
- religion (object ref or TBD)
- A set of actions it can take (TBD, may depend on the class; at the agent level, actions are stored as triggers, ie bytes or integers)


OK, now a word on the inputs and outputs of the model.

Inputs :
- Every event, as defined in the social model, is an input for the model.
- political forces from the H's model
- Economic datas from Mark's model.

Outputs :
- Actions taken by the agents
- modifiers for the other models :
* mil model (army strength, morale...)
* econ model (investment, corruption...)
* tech research (acceptance, particpation to particular fields of research...)
* gov model (pol powers, class relationships)
* demographic model (rate of birth, birth control, age of reproduction ...)
* social model (crime...)

Also, in a way, the social model will have ripple effects on every aspect of the game (ex : diplomacy could be indirectly influenced by the behaviour of the people...)

That's it for now; all this needs refinement (I must code the model to see how it works before being able to finalize anything).
Also, this is a model : it should be able to produce many kinds of output, so I'm listening to your whishes.


One last note, about events propagation through the provinces with respect to transport and communication tech levels.

I guess we could use a simple propagation model, which would give the intensity of an event at a given geographic point with respect to its origin.
Let be K a value reflecting the transport/comm tech (K is a value formed of both, how is TBD); let be D the distance between the origin point and the province we are intersted in.
The the intensity may be smthg like :
I = K/D.
This would give an "sense intensity" for an event in a given province, and thus modifying the intensity of the reaction to the evnent.
When K is low (early transport/comm techs), events wont propagate far beyond the borders of the origin province;
I would be maximized at 1, which means that when transport/comm techs are eveolved enough, I sould be >1 in every place of the world, meaning that it has the same intensity (1) every where.
We should there add a system to represent the fact that some governments prevent their people from having access to external infos (ex : China today).

OK, Cya. Manu.

Hrafnkell
Clash of Civilizations
Government Model

Reykjavik, Iceland
May 99
posted June 10, 1999 11:00   Click Here to See the Profile for HrafnkellClick Here to Email Hrafnkell  send a private message to Hrafnkell
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Here are some rough ideas on the info needed for research system programming. Please note that I´m not a programmer, so I don´t know how to present this in the right terms.

First of all, we need to store the data for each Tag type (10 types at the most). This data is the modification number (a percentage number most likely) for the projects with that Tag type. The modification number is derived from in-game situation (TBD). Basically, this modifier represents the peoples desire and ability to go in a specific research direction. This of course needs to be done for each state, both player and computer. In addition we need to store how many projects of each Tag type the player/computer has researched.

Then, info on each project needs to be stored. That is, the basic cost, the Tag type modifier and individual modifers for a project. My idea is that those projects the public most wants (needs) to aquire giving their status have their cost reduced, instead of assigning some ‘extra’ RPs to a lot of projects. As for the Tag-type modifier above, these modifiers are derived from the in-game situation
Also needed is what Tag type(s) the project has (if it has more than one the modification number is the average of the Tag type numbers); the prereqs the project needs (these are Hard prereqs, should never be more than 1 or 2 per project) and the ‘Tag number’, which is compared to the number of the specific Tag projects researched and modifiying the cost accordingly.
Then, the current research status of those projects being researched must be stored. Note that this needs only to be done for those projects the player (computer) itself is researching (i.e. putting RPs into).
Projects that the public wants will simply have it´s cost reduced. For this I envision we´ll make a list of things (50 at most) that projects can be linked with. The listings cover various in-game situations which can apply to the project, either affect its cost or prohibit it being researched. Each project has two ‘slots’, which each can have one link to the list.
Finally, the effects of each project must be stored. I think it´s best to limit the effects to two per project. Again we might make a list of possible effects and make links to that list.

The RPs players generate/accumulate must also be stored. As the exact method for generating RPs is undecided I can´t say much about this, as for the ‘storing’ of RPs, all RPs are of course assigned to certain projects and thus stored there.

That’s pretty much it. Hope you can make anything out of this. Feel free to report any errors omissions, ther are bound to be some :-).

mca
Chieftain
Odense, Denmark
b.02-15-99
posted June 11, 1999 15:48   Click Here to See the Profile for mcaClick Here to Email mca  send a private message to mca
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Re: Version Control, Bug Database

Have a look at www.mozilla.org/tools.html and see if the tools they use could be useful for coordinating the programming of Clash.

Druid:

I recommend CVS for version control at least. It is much more flexible than having a webmaster manually upload new stuff each time a change is made. I think that if you keep in mind that an automated system is no replacement for management, it could really help a team as diversified as this.

Martin

Apolyton Civilization Site Forums
> > > Clash of Civilizations Forum

next newest topic | next oldest topictop of page

All times are EDT

Administrative Options: Close Topic | Archive/Move | Delete Topic | Top
Post New Topic  Post A ReplyPost A Reply In A New Window
Hop to:

Contact Us
Apolyton Civilization Site

Powered by: Ultimate Bulletin Board, Version 5.44a
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.

Front Page | Civilization III | Dinosaurs | Civilization II | Call to Power | Call to Power II | Alpha Centauri | Alternative Civs | Misc | Links | About ACS | GameStats
GameLeague | Scenario League | HAC | Civilization Scenario Collection | Spanish CivII Site | Clash of Civs | CtP Maps | Art of War | WesW's Ctp1/2 Site