Announcement

Collapse
No announcement yet.

Clash...OpenCiv3...Combined?

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

  • #46
    F_Smith

    Just because people disagree with you doesn't mean they don't know what they're talking about. I have done plenty of programming in Java & yes I really like the language but it is not appropriate for what we're doing in OpenCiv3 and C++ is.

    Comment


    • #47
      Dan:

      Just out of curiosity, other than speed of grafix, what advantage does C++ offer you for game design?

      Comment


      • #48
        F_Smith:

        I believe I've already posted to advantages of C++ to us. Although I'd add that C/C++ is the language of choice for Open Source development.

        The disadvantages of Java for OpenCiv3 are;
        1. x-platform: we don't want to compromise we want to make the best game possible for Windows & DirectX & co will help us.
        2. Java's unproven for civ-style game development. Using Java would just be adding an extra big risk.
        3. No real benefit over C++. Why take the risk when you don't have to?
        4. It's easier to use but how does this help the project? Judging by Mark's comments it hasn't helped you get more programmers.

        [This message has been edited by dan ward (edited July 08, 2000).]

        Comment


        • #49
          Hi, Dan:

          I would have thought that 'Open Source' is currently defined by the Linux community, actually. Not using C++ at all, I believe . . .

          1) If you only want Windows, then okay. But that's a shame, to ignore the Mac and Linux markets. Many tens of thousands of gamers with money -- directly in your target market.

          2) Granted, if you don't already work in Java, it might be difficult to change over. But it is hardly 'unproven' . . . ever see Oracle 8i? Lotus Notes' next version is all Java, too. Java is a proven workhorse for big commercial projects.

          3) The benefits are many, and have been listed several times. Speed of development, ease of debugging, simple and powerful networking and multiplayer ability. What about web distribution, alone? Or will you try and sell it thru the the traditional 'Distibutor' meat market?

          4) Being easier makes it faster to produce with, and less stressful, and more bug-free, and leaves you more time and patience to perfect the OOD.

          Please don't get me wrong -- I support ya'll working with what you feel best suits your skills and needs. I don't really have any stake in your choices, except as an intellectual excersize.

          I hope I haven't upset you.

          Remember, I saw some people discussing using Java for a project, so I shared some of my experiences in Java development. I've been doing pure Java dev exclusively for almost 3 years at a major corporation (CSC). Small applets at first, internal project management stuff, now beans-based insurance systems. I tell them it's doubled productivity, improved coding, cut way down on 'System Problem Reports', given us features that would have been otherwise impossible, etc.

          You are free to disbelieve me. As they say, it is a free country.

          Altho -- why would I lie about it?

          Comment


          • #50
            >> I hope I haven't upset you.
            Nope. I'm just defending the C++ corner.

            Linux & Mac markets are not worth the loss of functionality & performance that switching to Java would bring. For a game I think you need to be able to manipulate the UI at a low level & I'm not convinced Java can do this.

            I'm currently using Oracle8i in my real job and I used to write development tools for Notes. I don't see much Java in either of them. Notes was written in C & C++ and I'm guessing Oracle's the same.

            Re. Benefits

            Speed of development - I can't see this being a major factor. Most of the time gained will be lost doing complex UI work.

            Simple & Powerful networking - I've written client/server apps in both language. Java is no easier & has no more features than C++

            Distribution - OpenCiv3 is Open Source. We're not trying to make money out of it. Distribution will be mainly web based. BTW how's Clash going to handle this? At the moment it's just one big download.

            Perfect OOD - I'm not convinced a perfect design is the way to go with open source projects but again you can write perfectly object oriented code in either C++ or Java.


            Comment


            • #51
              Hi, Dan:

              Cool, I'm glad this is a friendly conversation.

              1) As I've said, in working with Java I've found added functionality every time, and the only loss of 'performance' has been for hard-core number crunching like 3d grafix. If grafix is the focus of your game, I wouldn't use Java . . . yet. Altho machines 5 years from now will run current Java faster than current C++, agreed?

              2) Oracle 8i is written in Java. Notice the 'applet window' message on the new Gui tools? Lotus' last version was C++. Their next version is in Java, because of the added functionality *they* found in Java networking. And I read a great article on how their management was *blown away* at the speed of development.

              3) Um, you can't see how speed of development is a bonus? I'll just simply state I feel it is a *major* bonus if you can do work in half the time. Programmers time, to me, is the single, most precisously rare resource you have to deal with. And since Java is also faster to code excellent, robust Gui's in, you'd actually gain time there, too, not lose time.

              4) C++ has nothing like Servlets or Beans -- *the* hands-down choice for all new networking apps. Servlets are amazing. Beans, too, are a simpler and more powerful distributed app method than C++ could ever imagine having (ya'll use Corba, I believe?). Then there's Java's RMI, for true distributed power . . . And even for simple sockets, in Java I can read from and write to a file anywhere on the network/internet just like writing to a local file, in about 5 lines of code. You can *not* do that in C++. Opening a socket for streaming from anywhere to anywhere is a snap -- which is why all new Chat apps are in Java. I've heard nightmare horror stories about networking in C++.

              5) If your distribution is going to be web-based, then you will wish you used Java, trust me on this one. The class files are much smaller than their C++ equivilant '.exe' files, mainly because of the API's -- much of the code is already on your machine. Clash will likely be both a download (single-player) and an applet-based version. The applet is better for multiplayer, largely because of servlets -- just like 'The Zone'. Also, with an applet, you always get the latest version with all the latest bug fixes. For a download, if you patch something, then all people that have downloaded the game need to now download and install a patch.

              6) Not convinced a great OOD is necessary? I see. I don't even know where to begin with that one. Just that the rule is, often by re-engineering design you can gain four hours of development for every hour you spend improving the design. I could tell you amazing stories of how a simple design tweak replaced over a dozen 'quick fixes', and revealed new functionality.

              *****************************************

              If you tell me you're familiar with C++ so would prefer to stick with it, that is a decision I can respect, and I'd drop it.

              But when you say Java can't do this, or isn't better at that, things I've learned from first-hand experience, then I simply can't help myself from trying to politely disagree.

              Again, I'm not saying you need to drop everything for Java. If you don't want it, that's understandable. I know people that still prefer COBOL (now *they* are odd, yes?). If you wanted to work in straight assembler, I'd understand (well, I'd *try* to understand!).

              I'm just saying you can't seriously hold that Java isn't easier to do networking code in, or that speed of dev isn't important. Or that design isn't important.

              Comment


              • #52
                Design is important and good design can shave months, even years off a projects development. What I was trying to say was that a perfect OO design is not appropriate for an Open Source game. The reason for this is quite simply that Open Source development is a very organic process and therefore the goals & aims of the project will change significantly overtime. Consequently perfect OO design done at the start of the project will be totally inappropriate six months down the line. Check out the famous Cathedral & the Bazaar document written by ESR on the web for more info.

                >> ...you can't seriously hold that Java isn't easier to do networking code in C++...
                Java's networking classes are excellent, of that there is no doubt, but the question we need to ask is will they make the networking code for OC3 easier to write? The answer to this question is no.

                The reason Java wouldn't help is that most of the work does not involve sending data across the internet which is trivial in both Java and C++. The big issue is ensuring that specific packets reach the server as rapidly as possible and this means dumping TCP and streams.

                TCP is an order-preserving, guaranteed-delivery protocol so if one packet fails to arrive properly every packet sent after that one is held up until the packet has been successfully resent. This can lead to large delays which makes it inappropriate for network games, I'm sure it's OK for card games & other trvialities but it's of no use tp us. Consequently we need to use UDP and write our own mechanism for guaranteeing delivery. (We don't care too much about order-preservation.)

                It is the design & coding of this mechanism that will take the time. Java _may_ make the coding slightly quicker (assuming it provides a fine enough control to do what I want) but it will be a small difference. Now what swings the balance in favour of C++ is that I have the source code for two very successful client/server games on my hard disk. (Freeciv & Quake) Both of these projects are Open Source and so I have a repository of proven code that I can learn from & use. I judge this far more important than the extra few hours using Java will give me.

                Comment


                • #53
                  As I said -- if you're sticking with C++ because it's what you know and what you're steeped in, (and because you have sample code handy), I can respect that.

                  Altho streaming UDP in Java is, in fact, built in, and coding it up is a triviality. Altho I'm not sure I agree with your assumption that you need UDP . . . Quake, as a real-time FPS, certainly did, but in a turn-based game? It is not guaranteed that packets will arrive. Which might be fine in a FPS (who cares if you lose one shot out of a hundred, or one frame out of a hundred?), but I'm not sure it is appropriate for a complex strategy game. And then you'd be forced to call for a resend of the packets anyway, which seems to eliminate the benefit of UDP.

                  Am I wrong? But mainly, since it's a turn-based game anyway, why exactly do you need to use UDP? What's more important, speed or certainty?

                  And besides, talking about network code in Java I'm actually talking about servlets, rmi and beans. Java Servlets absolutely rock for web-based app performance. RMI allows the use of multiple machine processors across a network (like the SETI project thingy), that is going to absolutely change the way games are made. And beans add an entirely new dimension to 'distributed' applications.

                  I'm certain that Java will revolutionize the gaming industry, once this cutting-edge tech filters down to game companies.

                  If for one of your next projects ya'll ever decide to try a networked game in Java, I've been writing networked apps in Java for years, and have a large base of code to draw on. Not to mention, there's a lot of source code out there on the web.

                  Comment


                  • #54
                    Hi F_smith,

                    Now that they are putting a processor and a modem even to the refrigirators, java and Virtual Machines are definitely the way to go

                    By the way, I just downloaded libpng (http://www.libpng.org). It is a complete library for managing PNG files. (PNG is free format for graphics representation). It is done in C and has versions for all platforms you can imagine (except the fridge). We are not that helpless in C

                    Comment


                    • #55
                      I have enjoyed watching this conversation. As I have said before, F_Smith is correct about Java. It is the language of tomorrow. But C++ will remain important for a long time, since most of the current applications are written in it. Also it is proven and efficient, everyone knows what it can do, and how that should be done. In near future, when the machines in use become so efficient the speed is not an issue, Java will be used everywhere, I'm certain.

                      But also I agree about Dan about what he has said about C++. If you learn good habits to write it, and take advantage of already made code (which is plenty, excactly because C++ is old and widely used), coding in C++ is not necessarily much slower and more error-prone than Java. As I said earlier, it is up to the programmers - what each individual likes and emphasizes in his work.

                      Personally, I'm beginning my studies as a programmer, and I will certainly learn also Java, but C++ too. Both are important languages.

                      Comment


                      • #56
                        VetLegion brings up a great point -- if you want your game to run on a Refrigerator, it will have to be in Java!!!

                        Aimjayee, I couldn't agree more, all the way down the line.

                        Great conversation, Dan. Thanks.

                        Comment


                        • #57
                          A computer language is a tool, you use choose an appropriate tool for the job in hand. For 'proper' computer games (Civ,Quake,Baldurs Gate,etc) C++ is the appropriate tool.

                          The reason for C++'s dominance of this field is simple, it provides the best balance between high and low level features. Most of the time when we program we use high level features (e.g. Beans, data controls, buttons, etc) and this is appropriate for simple task like front-ends, Internet card games,and so on. Computer games, however, are not your average application.

                          Modern games are significantly complex beasts requiring very low level control of the computer. (Black & White already has 1 million lines of code & it's not finish) Low level control is NOT about making things run faster it's about doing things you can't do at a higher level of abstraction and that was the point I was trying to make about UDP.

                          Yes Java does UDP streaming, that part of the problem because it means I can't control the transmission at the packet level. What I need is a protocol that WILL ensure packets reach their destination but will NOT be held up on the client waiting for packets to be resent. With TCP if one packet is lost it will hold up every subsequent packet until it has been resent & received. This is a bad thing as it can lead to substantial delays (10 seconds or more) over the internet where packet loss is high and data transfer rates are low. There is no type of game where 10s of lag is acceptable.

                          BTW Quake does care about that hundredth bullet. What if it's the one that kills you opponent?

                          RMI is Java's implementation of RPC. It is nothing more than a method for calling functions on another machine. How is this going to change the way games are made? All it does is simplify the task for the user at the expense of efficience.

                          Lotus Notes is written in C and C++ and only the Oracle 8i front-ends are done in Java. Front-ends are nothing more than a user friendly wrapper around the back-end code. I'd do not consider they examples of how a language is ready for the big time.

                          Comment


                          • #58
                            ok, I started this discussion, so I hope I can finish it. I never expected the amount of response I got, like I said, I expected to get "lynched" just for posting the idea, but since I didn't and it has evolved into a "who is better than who" programmer-language fight, I'll have to say this, F_Smith has brought up things that I didn't know about Java, I only know what has been told and demonstrated to me by C++ coders and what I learned, after hearing their arguements, from the books I've purchased.

                            I now find Java to be very worth-while (except for the 3d grafix thing, which, I like, but wouldn't find absolutely needed in such a large-scale strategy game), but I still feel from what I do know about programs, and how they work in computers (*which I know more of than the languages themselves*) that C++ is better over-all (I sulute Dan Ward for his arguments on this). While I cannot argue with F_Smith's argument of Java becomming the "preferred" language, due to the increase in computing power(which is increadible) and Java's stability in recent years, because the world (at least the world I know) is so dependent on the internet (which Java is a major part of), I still can argue that C++ is better- game-wise -for now. But, again, that is a mute point, since this type of development will take years to complete, at which point Java may be the best language around since it is developing so fast.

                            But even getting away from languages, which I felt so strongly about before, I now feel that a merger as a worthless venture...

                            the pluses...more coders, more designers, and (hopefully) less time to reach an agreement.

                            the downsides...(possibly) convert some code, (possibly) scrap some code, and more talk, which someone said "we (Clash) don't need more of", and I couldn't agree more with that last statement.

                            So, basically , although I origionally propossed the idea, I am now completely opposed to it (regardless of what language is used, regardless of coders and regardless of any wasted time) for the simple reason that I belive more "talk" in Clash will ultimately kill the project, and also, recently, I have found differences in design principles that would cause one side to compromise to the other's, which IMO, is not what my idea for the merger was about in the first place.

                            Comment


                            • #59
                              Knot that I know the first thing about differences between programming languages, but is it possible to use both?

                              Say, perhaps one is better for certain situations and the other is better for other uses, why knot use a C++ base for 3d rendering or whatever it's best at and write a java shell on top of it?

                              Don't think I'm completely out of my gourd, maybe I've just had too many burritos.
                              He's spreading funk throughout the nations
                              And for you he will play
                              Electronic Super-Soul vibrations
                              He's come to save the day
                              - Lenny Kravitz

                              Comment


                              • #60
                                Hi! You probably don't know me, but I'll probably be entering the Clash project shortly...
                                I'm no programmer. Layman is the word. I have consulted some qualified ppl, and that got me really in the direction of C++ (yeah. Speed, GFX, etc.) But this thread actually got me swinging happily "to the other side"...
                                The last straw was this game I remembered buying, not a really good game, really, without multiplaying, and it's simply not popular enough for that. Reminds you of something? It IS a Tom Clancy game. Anyway, it's written all in Java, and as a gamer, I could not find any flaw. Installed easy, actually easier than usually, and got up and running in no time. The gfx are quite good, although nothing fancy. Just about what we need in Clash. If the price of Java is gfx, then it's worth it. Although beware, ye people, if the AI turn takes as much as it does in CTP. For me anyway. I'll tear something apart.

                                Well, people, that's it for now. You'll hear from me as soon as this new toy of mine, 3D Studio Max gets into gear! GFX, people. GFX! Pseudo 3D (rendered into 2D) is as good as anything. If it's done well, then for Clash it would be better than most.

                                ~Mark
                                [This message has been edited by Mark_Lipovrovskiy (edited August 05, 2000).]

                                Comment

                                Working...
                                X