Announcement

Collapse
No announcement yet.

CtP2 Source Code Project FAQ

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • CtP2 Source Code Project FAQ

    Important notice (2004-4-6): This thread is now obsolete, a new one has been posted here. Please post any comments/questions/etc there.



    0) What is this FAQ for? (added 2003-11-6)
    This FAQ is for general questions related to the CtP2 Source Code Project as a whole and general questions regarding the source code. If you have specific question about the code itself, what is or isn't in it, if we can implement specific features, etc, please start a new thread about it (or use an existing one).


    1) What is the CtP2 Source Code Project?

    The CtP2 Source Code Project revolves around the CtP2 source code (see below), which Activision released on 28 October 2003 (see History). The purpose of this project is for the CtP2 community on Apolyton to try and get the source code running (on different platforms), to understand and document it and to use it to make improvements to the game. Initially the focus will be on bug fixes, but as time progresses it will hopefully be possible to make more ambitious changes. Where it will end is impossible to say at this point, but one (rather ambitious) view that some people have is that a full-fledged fan-made sequel to CtP2 will come out of this.

    1a) Why document the code?
    Of course, the CtP2 source code is an extremely complex piece of work. It is expected to be extremely difficult to understand, and there will be an infinite number of ways to change it once we do. There are an estimated 1.8 million lines of coude -- too much for a single person to work through on his own. That's why this Source Code Project exists: if everyone involving in the code works together to document it (what can be found where, and how everything works), this will make it much easier for everyone to understand and modify the code.

    1b) What about changing the code?
    Once we start making changes to the code, there is a huge risk that everyone will try to make different changes and have very different views on what the improved game should be like and which changes should and shouldn't be made. As with the mods, there may eventually be many different versions of the game. This Source Code Project will also serve to develop a more or less 'official' Apolyton version of the (improved) game, which will make those changes to the game which the CtP community as a whole feels are most needed -- in the same way that the Apolyton Pack does this for the mods (in both CtP1 and CtP2). Hopefully this will also serve to more or less control the number of different versions of the game that come out, as things could get really ugly for players if there are 400 different versions of the game. By combining our views and ideas as much as possible into a single vision, we can hopefully create one version of the game that encompasses many people's opinions on what the game should be like and (more or less) satisfies their tastes.


    2) What is this forum for?

    This forum is to achieve the goals outlined above. It is to document the code, to figure out how it works and how to get it running, and to discuss changes that could be made to it and how to implement them. Mostly this forum is to support the CtP2 Source Code Project, but if you have any other issues related to the CtP2 source code that somehow don't fall under the scope of the CtP2 Source Code Project, this is probably the best place to discuss those as well.


    3) What is the CtP2 source code?

    The source code for any software product is like its recipe. If you buy for example a cake in the shop, you normally just eat it. Similarly, if you buy a game, you just play it. CtP2 (and CtP1 as well) has always been somewhat of an exception to this, as you could always modify a lot about the game (increasingly this is true for other PC games as well). One could say that CtP is a not a finished cake but just a set of ready-made 'sub-products' that you can put together and mix yourself, in whatever way you like best. The source code takes this one step further: instead of just ready-made 'prefab' subcomponents, you get the raw ingredients and the recipe, and can make the cake from scratch all by yourself. This of course also allows you to change anything about the recipe you don't like, replacing or adding ingredients as you please.

    For CtP2 this means that we can do anything with the game we want, there are no boundaries whatsoever to what we can change (contrary to the mods). If we wanted to, we could turn this game into a Real-Time Strategy game, or even a First Person Shooter (though in that case we'd have to change so much code it'd probably be better to start from scratch ) The only boundaries to what we can do with the source code are our own capabilities to understand and change the game (since most of us aren't professional game designers and there are a few caveats to the release of this source code, some things may simply prove to be too difficult to be worthwhile).


    4) Where can I get the source code? And how can I view it?

    The code can be downloaded right here from Apolyton, get it here. It's an 8 MB file. It's an executable: double-click and it will extract the files. But before it does so, it will first show you a user agreement: this is the screen where you usually just click 'I agree' and continue. However, in this case I highly recommend you read it carefully! At least parts of it are not your standard legal disclaimer but were clearly written specifically for this source code and detail what you are and aren't allowed to do with it. Anyway, after you agreed to that about 2650 files and 200 folders are extracted to the folder you specified. Most of these files can be viewed them by opening them in any text editor (e.g. Notepad or Word).

    Update (2003-11-6): A zip version of the source code is now also available for download: http://apolyton.net/csd.php?<a href=...source.zip</a> Note that if you want to link/redistribute this zip file elsewhere, you must ensure that anyone must agree to the EULA before being able to gain access to the files.


    5) How can turn this code into a working game?

    If you just want to have a look at the source code, to see what the code for a professional game looks like, the above file is all you need. If you want to help understand and document the code, you probably won't need much else either. However, if you actually want to be able to compile the file (make it into a executable game file) and modify and test it, you'll need more than that. For one thing, you'll need a compiler, a software program that can transform the code into a working game. For another, you'll need to download about 270 MB worth of DirectX SDK (= Software Development Kit) files from the Microsoft website, as detailed in the readme. The details on how to make the file running without errors are not yet entirely clear yet, but you can find the discussion about this here. If downloading 270 MB worth of files is a bit much for you, you can also find a workaround for that in that thread.


    6) Why did Activision release the source code? / How about making a no-CD patch?

    You may wonder why Activision would release the source code: surely, if anyone can compile the game and edit it as they see fit, can't they just remove the copyright protection and play the game without paying for it? The answer is that they covered this option: the data and media files are not included in the source code file, so you still need to buy a copy of the CD to be able to use the code. Also, in the EULA (user agreement) is set up in such a way that changing the game so that the original game is no longer needed to be able play is strictly forbidden (this means no no-cd patches). Basically, we may edit the game as we see fit, as long as resulting updates/new products still requires the CtP2 CD to play. Releasing the source code was a very generous act of Activision which most software companies would never even consider


    7) Do I still need to own a copy of CtP2 to be able to play it/use the source code?

    As you can read above, yes, you still need a copy of the game to be able to play it, or you'll miss the data and media files. If you're only interested in understanding how the game works, you can do without the original product, but in that case you need to realized that you can never actually test what will happen if you change certain things about the code, which is often a great help in trying to understand complex products.


    8) This all still sounds too good to be true. What's the catch?

    Yes, unfortunately there is a catch. Actually, there are two. The first one is sound: the game uses an external commercial package to control the sound in the game: the Miles Sound Library. Because this is a commercial package not owned by Activision, they had to remove it from the game. This leaves you with a bunch of 'mss.h not found' errors when you try to compile the game. The references to this file and other Miles Sound Library related stuff will need to be removed before the code will run, which will leave you with a working but soundless game.

    Update (2003-11-6): Thanks to the excellent work of jonwil, we now have sound working again. See this thread for the files required to reinstate it.

    The second caveat is that Activision had to remove all the comments from the code. These comments don't affect the way the code runs, but they greatly facilitate in understanding how it works. The reason for removing these comments is that some of them may have made references that could in some way embarrass Activision of (ex-)Activision employees, or worse: get them into legal or other problems. Because going through millions of lines of code and removing such undesirable comments by hand would have taking a huge amount of resources (and time), it was decided to simply delete all comments (though 'all' is a big word as we've already found a whole bunch of interesting comments in various places in the code, so some remnants are still left).


    9) What leftovers from CtP1 are still present in the source code? Are the space layer, Fuzzy AI or the UI still there?

    Much of that is still unclear at this point, but it was made very clear by Activision that most of the CtP1 features that were actually cut, completely removed from the game. The exception here may be the Fuzzy AI: there still seem to be a lot of references to CtP1-related AI stuff that was no longer supposed to be there in CtP2. How much exactly is left is unclear at this point.


    10) Is it now possible to make a Linux/Mac/other port of CtP2?

    Again, it's still too early to tell, but yes, in theory that should be possible. How much work it is, in other words, is it practical enough to actually do it, remains to be seen. However, things are looking good in this deparment, as the CtP2 code is based on CtP1 code, which was ported to numerous other platforms (even obscure and no longer existing ones such as BeOS). It will require rewriting significant parts of the (most I/O) code though, so don't count on seeing ports appear in the next few weeks. How long that will take will also depends on how much manpower will be available and how much demand for certain ports exists.

    Update (2003-11-6): An early start with a Linux port has been made, as you can read here.


    11) Can I use other compilers than Visual Studio 6 to compile the code?

    At this point (but it's still early), the answer seems to be no. .NET compilers give a lot more errors than Visual Studio and for now we have no way of working around those other errors yet. For completely different compilers, such as gcc, the necessary makefile is missing, for one thing. However, we hope that we'll eventually get the code working on as many compilers as possible, and if you can help us out with that we would greatly appreciate that.


    12) How can I help out with the project? (last updated 2003-11-7)

    If you want to help out with the project, we're eternally grateful as we can use all the help we can get. Most notably programmers are needed at this point, but playtesters, artists, webmasters, etc could all come in handy as well. The details of setting up a project team are still being worked out, but you can sign up here. If you're a programmer, for the time being you can just pick your favourite part of the code and start documenting/fixing it. Updated source files for teh project can be posted here. Non-programmers are just advised to read the forum and keep up-to-date. They can also help out by playtesting (see here) and translating (see here). A better organisation for the project will hopefully be set up in the future.


    License Section


    13) Is the CtP2 source code Open Source? (added 2003-11-6)

    No, it is not. The End User License Agreement (which can be found here) has a number of restrictions on it that prevent it from being called 'open source' software by the common and most widely accepted definitions of that term. Most importantly, for an open source product, the distribution of the code should be entirely free, while the the EULA of the CtP2 source code doesn't allow distribution without written permission from Activision, or any kind of commericial distribution. You can find the industry standard for an Open Source Definition on the Open Source Initiative (OSI) website.

    Note that the text of the EULA and Activision's practical interpretation of it seem to be rather different, the interpretation Activision chooses (as became clear from contact with them) seems to be far less restrictive than the official EULA. Of course, in case of doubt it is advisable to refer to the EULA for reference, as "Activision's interpretation", though useful for daily affairs, offers little to no legal basis. The rest of this FAQ will where possible explain both the official EULA and Activision's interpretation of it (or as what I perceive to be their interpretation -- to make things even more ambiguous).


    14) Am I allowed to distribute the source? (added 2003-11-6)

    The EULA forbids any kind of distribution of the original source code without prior written consent by Activision. Also, under no conditions whatsoever are you allowed to in any way distribute the source commercially.

    After communicating about this with them, Activision said their interpretation is that it's okay to distribute the source, as long as you make sure that anyone who has access to it must agree to the EULA first. For the standard exe installer this applies, as the installer itself has an EULA screen that you must agree to. If (parts of) the source is (are) distributed in any other format than with the original exe installer (e.g. in zip format), some kind of other mechanism must be in place to ensure the user agrees to the EULA before he can gain access to the code. For commercial distribution of code, one should contact Activision to obtain prior written permisison (contact info is in the EULA). All of this applies to both the original source code and any modified source code.


    15) Am I allowed to distribute modified versions of the game? (added 2003-11-6)

    Note: this question is about playable, compiled versions of the game. For uncompiled code, see the previous issue.

    According to the EULA, you are indeed allowed to distribute new versions, as long as you do not distribute them commercially, label them clearly as a non-Activision product, don't include illegal/obscene/privacy-sensitive infrormation and as long as they require the retail product to function.

    Activision says that distribution of new updates are okay, as long as they require the original game to function and all other EULA conditions apply (e.g. regarding labeling the opening screen, illegal/private content, being free of charge, etc).


    16) Am I allowed to use a CVS server to develop the game? (added 2003-11-6)

    The EULA forbids keeping copies of the source code for reasons other than backup. Using a CVS server would require you to keep a copy of the code for another reason (i.e. to coordinate the work of several people), so is therefore strictly speaking not allowed.

    Activision's interpretation is that the use of CVS servers and similar tools is allowed, as long as anyone who has access to the code has agreed to the EULA.


    17) Is it allowed to port the game to other platforms (Linux, Mac, Amiga)? (added 2003-11-6)

    The EULA isn't very specific in this regard, but seems to allow it as long as you make sure the retail product is still required to play the ported version.

    Activision's interpretation is that it is certainly allowed, as long as you make sure the retail product is still required to play the ported version.


    18) How can I legally make files available for download in this forum? (added 2003-11-6)

    For your own creations you can just post them as you would with any files. For the CtP2 source code and materials originating from it, there are basically two situations:

    1. Files that contains (portions of) the source code. Only people who've agreed to the EULA are allowed to have access to these. To make sure of that, we created a little script: if you want to make any source code files available for download, make sure the URL has the format http://apolyton.net/csd.php?{url}, where {url} is the actual URL address of the file (Example: http://apolyton.net/csd.php?<a href=...Source.exe</a> -- right-click and select properties to see the URL; left-click the link to see the effect). This will force anyone who wants to download your source code files to agree to the EULA first. (Note: disable 'automatically parse URLs' in the reply screen if you're having difficulties getting the link right.)

    2. Actual executables to run the game. You can just upload these like other files, but these do require the warning at start-up and in the documentation that they're not Activision material and author & email info, as the EULA specifies. At least for the Apolyton project you can simly use 'Apolyton' or 'Apolyton CtP2 Source Code Project' or similar as author, and for email address you can use ctp2source@apolyton.net (we created that address for this purpose). You can either use an message box to display this error, or replace upsg001.tga with a modified version (or use yet another solution). See here for two practical implementatons.
    Last edited by Locutus; April 5, 2004, 19:03.
    Administrator of WePlayCiv -- Civ5 Info Centre | Forum | Gallery

  • #2
    Great job, Locutus! That covers pretty much everything..

    Comment


    • #3
      Nice FAQ Locutus.

      I got a question: Is the team at the momeny putting any effort at all at compiling the game with other compilers then VS 6, or will you fully concentrate on other things first. (like bugfixes once it's running with VS 6)
      <Kassiopeia> you don't keep the virgins in your lair at a sodomising distance from your beasts or male prisoners. If you devirginised them yourself, though, that's another story. If they devirginised each other, then, I hope you had that webcam running.
      Play Bumps! No, wait, play Slings!

      Comment


      • #4
        Lemmy,

        Some people are currently trying to get the source compiled with Visual C++ .NET, as that's the development environment some here have running.

        My personal opinion is that, after we get the source to compile MSDEV, we should proceed with actual changes.
        Solver, WePlayCiv Co-Administrator
        Contact: solver-at-weplayciv-dot-com
        I can kill you whenever I please... but not today. - The Cigarette Smoking Man

        Comment


        • #5
          Actually I dont believe there will be 400 versions floating around.
          Initially the level will look higher, but in the end I guess only a handful will devote the required time to the project.

          Comment


          • #6
            Lemmy,
            I think the first priority will be to get it compiling. Period.

            After that, it would certainly be very helpful if we can get it to compile on .NET as well. As for gcc, I would really like to see that. Not just for me but for everyone else who doesn't have and/or can't afford a copy of a (if you're not a student extremely expensive) Microsoft development environment.

            So I'm sure we'll put some effort into realizing that, but it could prove rather trickey. In the past I've run into so many problems getting code to run on a different compiler than it was designed for that I just gave up and started over from scratch.

            Ata,
            I didn't mean literally 400 hundred versions. But it's entirely possible that everybody just starts messing around, make 2 or 3 bug fixes and releas the result. This way we could soon end up with many different versions. Once we provide enough info on the code on Apolyton, every programmer with a few hours spare time could pump out his own version of the game if he wanted to. That's what I was trying to say when I mentioned the 400 versions.

            But I have absolutely no illusions about how few coders will get past that initial messing around stage and seriously start helping out. Like all Alt Civ projects, lack of programmers will soon almost certainly be our biggest concern.
            Administrator of WePlayCiv -- Civ5 Info Centre | Forum | Gallery

            Comment


            • #7
              Yes, lack of programmers will be our biggest concern, and I think we knew that pretty well before the source was released, too.

              After all, everyone working on this will do so in their free time. Seeing how most of us are either students or employed, it obviously leaves a somewhat limited timeframe to devote to this project.
              Solver, WePlayCiv Co-Administrator
              Contact: solver-at-weplayciv-dot-com
              I can kill you whenever I please... but not today. - The Cigarette Smoking Man

              Comment


              • #8
                I'll give it a shot at porting it to NET 2003 after next week is over.
                "The issue is there are still many people out there that use religion as a crutch for bigotry and hate. Like Ben."
                Ben Kenobi: "That means I'm doing something right. "

                Comment


                • #9
                  Would it be possible to get the source files in something other than a .exe. Im going to take a quick look at what it will take to get a mac version up and runnning, but I don't have any windows machines.

                  Comment


                  • #10
                    That would be very difficult, seeing as CTP2 uses DirectX.
                    "The issue is there are still many people out there that use religion as a crutch for bigotry and hate. Like Ben."
                    Ben Kenobi: "That means I'm doing something right. "

                    Comment


                    • #11
                      I had a friend expand the files for me. From what I have looked at so far, the code isn't too windows specific. Of course all the blitting and such is DX, but as people start playing with the code I have a feeling that most of that will move to something more portable like SDL or OpenGL.

                      Comment


                      • #12
                        They don't just use DirectX for graphics.

                        I/O is also handled with DirectX.

                        A lot of the code is very specific to DirectX and therefore very specific to Windows. I have no doubts that it's possible to port it, but I doubt it'll be done any time soon (as in, within a few years) by volunteers.
                        "The issue is there are still many people out there that use religion as a crutch for bigotry and hate. Like Ben."
                        Ben Kenobi: "That means I'm doing something right. "

                        Comment


                        • #13
                          Well, CtP2 is based the same codebase as CtP1 and CtP1 was ported to numerous other platforms. Of course the DirectX stuff needs to be replaced, but I think that should be possible -- it was done before.

                          I actually asked Pyaray about this earlier and he contacted one of the guys who actually made the Linux port:

                          OK, it took them 3 months of 2 full time programmers to port CTP1 to Linux, "the hardest part was getting it to build under the GCC of the time, but I imagine that would be easier now."

                          ...

                          Although he said they gave us a lot of code back that we integrated, so it should be "easier". And he's actually gonna download it to.
                          Building VC++ code under GCC *is* easier now than it was a few years ago, and the code has now (in theory) been optimized for porting, so that should be a great help. But it still won't be easy and will take quite a while, I'm sure.
                          Administrator of WePlayCiv -- Civ5 Info Centre | Forum | Gallery

                          Comment


                          • #14
                            Lemmy,
                            I think the first priority will be to get it compiling. Period.
                            After initial playing with the code and touching it, which I think is okay, you need to be more strict! Just ordering to get it compiled can lead to several different approaches already, some of which may not be desirable in the end.

                            After an initial review phase I suggest these to be your priorities:
                            1. A CVS server
                            2. Clear defined short-term goals a.k.a. Milestones
                            3. Standards on commenting so that you can use a tool such as doxygen for nice documentation. See: http://www.stack.nl/~dimitri/doxygen...l#specialblock
                            4. Standards on programming (tabs or spaces?, how long, how many?; take a look at freeciv for an example)


                            ata

                            Comment


                            • #15
                              Open Source?

                              Maybe you guys should reconsider the word Open Source. There is actually a definition for it:

                              http://www.opensource.org/docs/definition.php

                              This project doesn't fulfill many (if any) of the amendments of Open Source ... This project is Shared Source

                              Comment

                              Working...
                              X