Announcement

Collapse
No announcement yet.

The Programming of this Project

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • The Programming of this Project

    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..

  • #2
    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
    Project Lead for The Clash of Civilizations
    A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
    Check it out at the Clash Web Site and Forum right here at Apolyton!

    Comment


    • #3
      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.

      Comment


      • #4
        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
        Blade

        Comment


        • #5
          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).]

          Comment


          • #6
            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

            Comment


            • #7
              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.

              Comment


              • #8
                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....

                Comment


                • #9
                  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).]

                  Comment


                  • #10
                    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.

                    Comment


                    • #11
                      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.

                      Comment


                      • #12
                        testing...

                        Comment


                        • #13
                          and testing again...

                          Comment


                          • #14
                            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.

                            Comment


                            • #15
                              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

                              Comment

                              Working...
                              X