Thread Tools
Old July 5, 2000, 02:45   #31
Guildmaster
Warlord
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: Jun 2000
Location: Up your butt and around the corner
Posts: 174
But... war is fun =)

------------------
Goober
Guildmaster is offline  
Old July 5, 2000, 07:34   #32
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
Short version: I would not care for a 'merger'. Both teams should read what the other has, and use what they like, tho. And colaborate on theorizing, too (all opinions are important, and a free exchange of ideas is one of the biggest goals of 'Clash', I think). But the coding thing alone will put Clash in a whole different world, in my opinion. One of Clash's strongest selling points will be as one of the first 'civ' games in Java. Since eventually, they all will be . . .

I am pretty certain Mark agrees about coding in Java, too, but we'll have to wait for him.

Long version:
(*Warning* -- techie rant follows)

1) As a paid Java professional, I would have to agree that Clash does not yet have a solid working base of code. The architecture is going to have to be largely redone, as they try to add much of the complexity in they're shooting for. It is/will continue to evolve.

2) But C++, superior to Java? Other that speed, in what way? The only plus for C++ is in one insignificant area -- hard core number crunching for something like 3d grafix (which we do *not* plan to get into, right?). And even that is closing fast, with the new JIT vm's and the Java 2d and 3d api's.

Within 5 years, C++ programmers will be forced to learn Java anyway, since 80% of all new development is now in Java. Java developers will not need to learn C++ at all (except maybe to re-write an old C++ system!).

The biggest gains in using Java (there are others) would be:

a) speed of development (It takes two to three times longer to write something in C++)
b) networking (in C++ is a nightmare, and very limited, compared to what Java can do)
c) debugging (C++ has like a million more things that can go wrong, especially with memory management).
d) distribution (in C++, you either force people to download a huge file, or *try* and go thru one of the big distributors to get into stores, a nearly impossible task; Java offers smaller downloads and/or applets and servlets, like playing chess or spades on 'the Zone').

And since technonlogy is solving that problem at near the speed of light (2ghz chips from AMD -- the 'SledgeHammer' -- come out early next year, the P4 comes out Q4 of this year, making the 1ghz chip a bargain basement machine by the time this/these games come out). So make your target the 1ghz chip -- it'll be in a $300 bargain-basement machine this time next year. Bandwidth is actually a bigger problem that clock speed . . .

And -- No pro games in Java? Anyone visited Yahoo games, or the Microsoft Zone, or the two dozen others like them? For networking multiplayer games, Java has already become the standard. More complex games are in development now, too, look for several around Christmas (I've got links, if anyone is interested in seeing some really neat stuff).

The ONLY reason you don't see them on the plate of the 'major' designers is because of the corporate distributers. A middle manager at Microsoft, or Sierra, or one of the other 4 or 5 distributers that dominate the stores by purchasing shelf space, makes all decisions on what games they will distribute. And currently those middle managers believe 2 things -- all games must have awesome, cutting-edge 3d grafix (rules and gameplay are not important to them) and C++ is the only way to program. Many, many great games die waiting for a distributor. If you don't have a 'name' in the industry, expect finding a distributor to take 2+ years.
F_Smith is offline  
Old July 5, 2000, 15:04   #33
Lord God Jinnai
King
 
Lord God Jinnai's Avatar
 
Local Time: 03:34
Local Date: October 31, 2010
Join Date: Sep 1999
Location: St. Louis
Posts: 1,012
Hi...I'm the technology and Character models leader for Clash for those that don't know me.

Anyway, I have to agree with F_Smith. I don't think clash and openciv3 should be combined. Although the fundimental goals for each may be the same, the way we've each apporached things since then is vastly differnt.

FE the tech model isn't even a tech tree in clash anymore. I once had it like that, but after discussing it with my Rich (another tech team member for clash) we abandoned it. We still have the e-mails we've written to each other on the clash forum for anyone wanting to know why. The thing is, is that this model, unlike the others, is almost completely coded (with the exception of adding in social variables and refining the formulas), we'll pretty much have a working tech model, assuming nothing goes wrong.

As for Java vs. C++ i'm not a programmer, but i do know several. Almost everyone of them perfers Java because it's easier to program with and a couple of them also use Linux. The one that doesn't perfer it really is the one who doesn't know much about it or still thinks of it in terms of when it first came out.

Basically i don't think mark's gonna move on this issue. he wants the cross-compatibility which C++ cannot offer, but Java can.

Bottom line: We shouldn'e merge. We can have discussions together and give each other our opionions and ideas, but openciv3 and clash have gone in too vastly differnt directions in too many areas.

There may be one exception for a partial merger (assuming progaming is done in java) and that would be in the multi-player area where we really don't have any coding at all. Anything done with this would just be core functions though since clash and openciv3 are completely differnt like i stated earlier.
[This message has been edited by Lord God Jinnai (edited July 05, 2000).]
Lord God Jinnai is offline  
Old July 5, 2000, 18:31   #34
Mark_Everson
 
Mark_Everson's Avatar
 
Local Time: 05:34
Local Date: October 31, 2010
Join Date: Dec 1969
Location: Canton, MI
Posts: 3,442
Hello All:

I pondered the merger issue over vacation some, since while driving there isn't a whole heck of a lot to do other than think about things... in terms of general collaboration on some game models, and possibly some sort of resource sharing between the projects, I've got no problem with that. It seems pretty much everyone here agrees that that is reasonable. In terms of a grand merger using amjayee's guidelines, I have some big issues.

I agree with many of the posters here that an all-encompassing merger is an attractive option, but I see some problems with it, both from the Clash project perspective, and also some from my personal view.

First, the project-level issues, of which there are two major ones. Losing much of the progress Clash has made so far, both in terms of coding, and in terms of the things we have locked in for the design. I will say more about these later in the post.

I also really do think that Java is the better way to go... but we could go back and forth on that one forever On a more personal level, I would find it very difficult to go back and readdress every single issue that we have Finally, after much discussion, decided. But I'm going to spend my limited time now talking about the greatest obstacle to a merger, and will then just post this.

The largest issue:
If the OC3 coders were sufficiently numerous and dedicated to be able able to duplicate much of what we have so far in Clash over a timeframe of something like three or four months, then the Clash progress made so far could IMO be sacrificed in the name of the longer-term goal. However, I think I would be extremely negligent to just assume that your team will crank out 20k+ lines of code a month. I think it is extremely unlikely that everyone who says they will work on OC3 will actually do significant work. I have nothing against all the coders here, most of whom I don't know anyway, and am not implying that on an individual basis any one of them are slackers. But sh*t happens... In my experience with Clash, we have gone through approximately 20 coders, many of them professionals. All of them said they had 20+ hours a month to work on Clash when they signed up. The sum contribution of those 20 individuals has been something like 5000 lines of code, much of it due to just one of them. The rest I've done myself, which is why the programming progress has been relatively slow. So regardless of the relative merits of C++ and Java, I think it would be extremely foolish for the Clash project to just ditch what we have until there is solid evidence of results in terms of coding.

So my personal judgment is that nothing much could possibly be done in terms of unification of the projects until we see what the OC3 programming team can actually produce. But based on experience, my expectation is that the progress won't be all that rapid... Then again, perhaps I am underestimating the awesome power of the words "Open Source" .

However, since Clash is a team effort, I'd like to hear what the rest of the team has to say... and thanks for those of you who have come by the thread to register your opinions. Of course, if a preponderance of the team is against a merger in the first place, then we wouldn't need to wait to see what the OC3 coding rate is .

Good Wishes to everyone involved in both projects!

------------------
Mark Everson
Project lead for The Clash of Civilizations
(That means I do the things nobody else wants to do ;-) )
This Radically different civ game needs your suggestions and/or criticism of our design.
Check our our Web Site & Forum right here at Apolyton...
Mark_Everson is offline  
Old July 6, 2000, 04:40   #35
amjayee
Prince
 
amjayee's Avatar
 
Local Time: 11:34
Local Date: October 31, 2010
Join Date: Oct 1999
Location: Jyväskylä, Finland
Posts: 564
The replys to my suggestions have been much what I have thought they would be. I was quite pessimistic about Clash guys accepting the terms I presented. It is quite understandable you don't want to abandon such a large amount of work laid on your project. Neither would I. And personally I'm not ready to quit from our project and join yours.

So I think it's better preserve both projects, and perhaps do some cooperation, as suggested. What I think about c++ vs. java issue, I think they are both good and praised languages, and they both have their good and bad sides. Arguing about which one is better, leads to nowhere, since I have noticed, that every programmer has opinions about all programming issues, and is not ready to say that someone else's opinion is better that his. Personally I think there are not good and bad languages, there are only good and bad programmers, and purposes for what the languages are used.
amjayee is offline  
Old July 6, 2000, 11:39   #36
RonHiler
Warlord
 
Local Time: 01:34
Local Date: October 31, 2010
Join Date: May 2000
Location: California, USA
Posts: 191
quote:

Originally posted by F_Smith on 07-05-2000 07:34 AM
Within 5 years, C++ programmers will be forced to learn Java anyway, since 80% of all new development is now in Java. Java developers will not need to learn C++ at all (except maybe to re-write an old C++ system!).



I hope I don't fuel any Java vs. C++ debates here, and I know this is OT, but I thought this wild statement deserves some reply.

IMO, two things would have to happen before Java actually replaces C++. One, it would have to become significantly faster than C++ (fast enough to overcome current programmers lazyness to learn a new language), which, quite honestly, I don't ever see happening (Java is interpreted at runtime into assemby (right?), while C++ is precompiled into assembly, which all by itself assures Java will never be as fast as C++). Two, it would have to learn about pointers. I've heard beginning programmers ***** and moan about pointers, because they are difficult to deal with. I did it myself. But once you master them, pointers are probably the most powerful feature of the C language, and in the top five of C++. And, AIUI, Java doesn't have them at all, which is a very serious handicap (oc, I'm not a Java programmer, so perhaps I am wrong about it not having pointers? That was my understanding, though).

Second point. I don't know what programmers you are hanging around with Mr. Smith, but 80% of all new development is in Java? I find that highly unlikely. I'm a professional programmer myself, I know a lot of my peers, and much of what is going on in the game industry, and I know of exactly one large project being done in Java (Clash). No one I know uses Java for anything other than to write applets. If by "80% of all new development is in Java" you mean "80% of all new development not being done in C/C++/Basic is in Java", then you might be right (you may have to add Pascal to that list as well, which is still being used by at least two development houses that I know of, both in Europe). Otherwise, I doubt it very much.

Okay, to get back on topic, I'm glad the two projects are not combining. I think that would have been a big mistake. For Clash, having a significant code base already, it would have been highly demoralizing to start back at square one again, and I suspect they'd have lost a lot of people if that happened. It's good that you have agreed to share concepts back and forth, though. I would think that'd be a big help to both projects, especially OC3 (since Clash is a bit ahead of OC3).

Not only that, I'm glad Clash will stay in Java. I'm curious to see if a large scale game can be done in that language. If nothing else, Clash is a great experiment

Good luck to everyone in both projects.

Ron
RonHiler is offline  
Old July 6, 2000, 14:21   #37
dan ward
Chieftain
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: Jun 2000
Posts: 31

If it's a good game no one will care what language it's written in.

Two points of F_Smith's points that need correcting (the rest were out but these were criminal).

>> 2) But C++, superior to Java? Other that speed, in what way?
. Development tools
. Libraries
. Massive community and knowledge base
. UI development.
. OS integration (sadly Windows is the platform of choice for gamers)
. Proven technology. We know you can write games in it, no one can say the same about Java.

>> b) networking (in C++ is a nightmare, and very limited, compared to what Java can do)
Nonsense.


dan ward is offline  
Old July 6, 2000, 14:36   #38
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
Hi, guys:

I hope I didn't step on any toes. I really didn't mean to. I think ya'll have a bunch of intelligent people with great thoughts to contribute.

I would suggest ya'll look into Java more, tho, because there seems to be some serious misunderstandings about it's current state. And it's frustrating when people who don't know about Java write it off. A little research into it just might blow your doors off.

1) C++ isn't faster than Cobol, yet it thrived . . . speed isn't the end-all be-all of coding. The language just has to be fast enough to do what you want it to on machines the clients can afford. And other than grafix and hard-core number crunching, Java is plenty fast enough now to do *anything* you need. Here's a good side-by-side test http://www.aceshardware.com/Spades/r...rticle_id=153.

For one thing, Java *is* compiled into bytecode and then executed. It's just that it's optimized at run-time, instead of compile-time. This means it's slightly slower at somethings, faster at others -- especially on machines other than WinTel (hehe). The newest JIT Java Virtual Machines (HotSpot, for one) actually have surpassed optimized C++ code for some things done mostly in memory.

2) The lack of hard pointers actually is a *major* strength of Java. I'm not sure why/how you'd say it's a weakness . . . no memory leaks, ever? Remove the cause of something like 60% of all programming bugs? It's brilliant! Unless your *only* coding focus is speed of execution . . .

3) I work in the Financial Services industry. There are no C++ projects being started anywhere that I know of, it's all Java front end and middleware, with either Oracle 8i (written in Java) or Cobol data-tier stuff (mainframe). You just can't get the networking power, or speed of development, you need, any other way. (That last is a big kicker, too -- it takes less than half the time to develop the same product in Java compared to C++, and you don't need to then hire programmers to port it to Apple, Linux, etc: far cheaper for companies to develop in).

3) The major game distributors are only focused on 3d grafix, I'm afraid, not on making fun games. So they have almost exclusively ignored Java companies. Altho you do have all of them using Java for their networking and Multiplayer environments like 'The Zone'. But remember, Quake had to come out shareware. Same with Civilization. Game distributors do not ride the cutting edge of computing (unless you count grafix as 'cutting edge'). They survive only by carefully controlling the store shelves. Didn't something over 1,400 games show at E3? How many will you see at the stores? A tenth of that, maybe?

But there are many, many game projects being done in Java. Just search on Yahoo for Java games, for goodness' sake. There are thousands upon thousands of small games already written in Java, and the bigger ones just take a while to develop. Java's only been viable for about 2 years -- many game projects have been in development longer than that! If you were to make a 'card' game (Spades, hearts, whatever) you would certainly use Java, yes? Or a Chess game? Or backgammon? The same will soon be true of the bigger games, even (eventually) 3d games.

Finally, ya'll should just try it. You might be shocked how easy it is to code in java if you're experienced at C++. You might be shocked to see how much you can do in such a short period of coding. And that simplicity is likely Java's biggest single gift -- great C++ guys are more often than not techies skilled at tweaking and optimizing code for a specific machine than OOA/OOD architects skilled at building powerful, flexible code that can run in a variety of environments.

Tweaking an OOD for performance reasons is considered bad design, after all . . . you should take the massive amount of time and money you save by not having to debug the optimizations and just buy a bigger machine!!! Don't mess up your code!

And besides, you should try some java, if only because running down something you've never tried is *very* bad form. Especially when it might be the next step your industry is taking . . .

And I doubt C++ will ever go away -- we still use Cobol for specific purposes (computing the interest on MetLife's million+ policies every night!!!). We still come across clients using Windows 3.1, don't you know.

It's just that almost anything you can do in C++, you can do faster, cheaper and easer (and often better) in Java.

So how could it lose?
F_Smith is offline  
Old July 6, 2000, 16:21   #39
RonHiler
Warlord
 
Local Time: 01:34
Local Date: October 31, 2010
Join Date: May 2000
Location: California, USA
Posts: 191
quote:

Originally posted by F_Smith on 07-06-2000 02:36 PM
Hi, guys:

I hope I didn't step on any toes. I really didn't mean to.


Of course not. I too, am not meaning to insult anyone. I participate in debates like this either to learn something new or teach something new, no other reason. Do not get me wrong, I think Java is a fine language, better than most, I only question your supposition that it can replace C++

quote:


1) C++ isn't faster than Cobol, yet it thrived . . .


I'm not so sure that's true, but okay, supposing it is, the reason C++ thrived is because it's OO based, while Cobol is not (which is something Java also has going for it, which, IMO, is the big reason it has also thrived).

quote:

For one thing, Java *is* compiled into bytecode and then executed. It's just that it's optimized at run-time, instead of compile-time.


I don't understand this statement. What do you mean by optimized at run-time?

ISTM that either an executable is in assembly, or it isn't. C++ executables are in assembly, so the computer spends 0 clock cycles interpreting code at run-time, it simply can execute instructions. If you have to interpret code at run-time, you have to be slower than native instructions, because you have an extra step involved. There's simply no getting around it! Are you saying that Java executable files are in assembly? I thought that was not true, and couldn't be true due to its cross-platform compatability. Am I wrong? (It's been known to happen ).

quote:

2) The lack of hard pointers actually is a *major* strength of Java.


I guess we'll just have to disagree on this one, because I consider that utterly false. I claim that if you feel lack of pointers a strength, then you do not understand thier uses. That is not surprising, you're a Java programmer after all, no reason you should understand them. Hell, half the C programmers I know don't understand how to use them properly.

Sure, I'll agree with you that a lot of bugs come from the use of pointers, but that is because programmers abuse them, or don't know how to use them, or forget to delete them after use. Properly used, pointers are perfectly safe, and very powerful tools.

quote:


I'm not sure why/how you'd say it's a weakness . . . no memory leaks, ever?


Uh, no. It is quite possible to create a memory leak without using pointers. Overwrite an array, for one.

As to a weakness, okay, I'll throw out a quick example of a place I'd use a pointer. How about a doubly linked list? I'll just use a C style structure to keep it simple, but you could translate it to a C++ class with no major modifications.

struct ListEntry
{
int some_data;
ListEntry *next;
ListEntry *previous;
} start, *node;

There you go. I can now use that to create an infinite number of nodes at will, all linked together, which I can traverse backward and forward with ease. Do that in Java without the use of pointers. I'm sure it can be done in some manner, but I'm willing to bet it's a heck of a lot more difficult, simply because you don't have the option of pointers.

quote:


3) I work in the Financial Services industry.

Ah, perhaps I see a basic difference in our thinking. I'm a game programmer. In games, speed is the be-all-end-all of programming, you are always looking for faster ways to do things so that you can use the clock cycles in other places. The faster your code goes, the more cool things you can do. In business, computers are plenty fast enough to do pretty much whatever is needed of them, so optimized programming is perhaps not so important an issue (although if you take that too far, you end up with programs like Microsoft put out )

quote:


You just can't get the networking power, or speed of development, you need, any other way. (That last is a big kicker, too -- it takes less than half the time to develop the same product in Java compared to C++, and you don't need to then hire programmers to port it to Apple, Linux, etc: far cheaper for companies to develop in).



Portability is Java's claim to fame, and I'll give you that one for sure. If I were to develop a program that had to run on multiple platforms, I would certainly give Java a good hard look.

As for development times, I don't know exactly where you are coming up with that statement about how it's twice as fast. As I understand it, and from the bit of Java that I know/have seen, Java is essentially based on C++. That being the case, I suspect development times would be comparable.

We use Borland Builder for our projects. I don't know if you've seen this compiler or not, but it is a truely visual compiler (as opposed to MSVC, where the V is utter nonsense, heh). I can have a single screen UI put together and pretty functional in about 15 minutes (as opposed to the days that would take with the Microsoft compiler making WinAPI calls), and *that* being the case, my development times are likely to be shorter than yours (unless Java has a the same sort of RAD development tools, which perhaps it does, I don't know).

quote:


3) The major game distributors are only focused on 3d grafix, I'm afraid, not on making fun games.

No argument there. Don't even get me started on my issues with distributers

quote:


But there are many, many game projects being done in Java. Just search on Yahoo for Java games, for goodness' sake. There are thousands upon thousands of small games already written in Java,

Glorified applets. Hearts hardly counts as an interesting game. I have no argument that Java can do small games well. I'm still skeptical that it can do large games at all (but I'm certainly willing to modify that opinion when I see one, which is one reason I watch Clash so interestedly).

quote:


and the bigger ones just take a while to develop. Java's only been viable for about 2 years -- many game projects have been in development longer than that!

Yeah, okay, fair enough. If major games start appearing in Java (or really even just one) I will become a believer that it can be done. The problem is that I have yet to see one. Many many independant and professonal games begin coding every year. Statistics show that over 98% are never finished, so I will not be likely to base the success of a language on what is being developed, only on what is already developed.

quote:


Finally, ya'll should just try it.


If I ever find the time, I will. Right now, we're a bit busy

Ron
[This message has been edited by RonHiler (edited July 06, 2000).]
RonHiler is offline  
Old July 6, 2000, 19:43   #40
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
Hi again:

Great discussion, I'm enjoying it immensely.

1) Actually, C++ isn't completely OO, while Java is OO from the ground up.

2) Java also executes in assembler, just like C++. The difference is that the Java classes are what is called 'byte code', and that a java virtual machine compiles the code into binary at run time and then executes that code, instead of at compile time. This allows the 'vm' to optimize the code for that specific machine -- and allows the code to run on any platform that a vm is available for. The new 'HotSpot' Vm also re-compiles and increases optimization based upon clock-cycle feedback -- please do follow that link above, for more on this. I am not a VM expert, I'm afraid.

3) By 'memory leaks', I mean forgetting to release pointers, by the by.

Java maintains references even more simply, I'm afraid. Java is 'pass by reference', so to make a doubly linked list you just write

Code:
public class DLinkedList
{
     Object first;
     Object previous;
     Object next;

     Object value;  // or int, byte, etc.
}
That's it. No pointers, just a reference to those objects.

4) Speed isn't the end-all, be-all of game making. That's just the myopia of the current corporate structure that has that business under it's thumb (distributors). And I personally think that Java (because of web distribution) will soon change all that, like Cable did to Network TV.

See, I have this funny idea that games are *suppose* to be cross-platform. The distributors have just decided otherwise.

And no, for a variety of reasons Java dev is much, much faster than C++ dev. The profusion of APIs is one reason. The excellent, powerful dev environments is another. Borland JBuilder, Symantec's Visual Cafe, IBM's Visual Age, and several others are excellent, every bit as good and powerful as their C++ counterparts. I, personally, prefer Visual Cafe. Altho I would never use the visual gui builder of any IDE for anything other than prototyping (the code they turn out is highly refined crap), but yes, in about 5 to 15 mins you can throw together a gui.

Finally:

Just ask yourself -- is there anything Java can *not* do that C++ can? This is what C++ would need to survive.

Speed alone will not be enough.

Especially at the rate machines are increasing in power . . . technology will solve that problem on it's own within 5 years. Imagine the bargain-basement machine in 5 years. Will it have any problem running a fully 3d Java game?

Heck, no.

Ciao.
F_Smith is offline  
Old July 7, 2000, 11:07   #41
amjayee
Prince
 
amjayee's Avatar
 
Local Time: 11:34
Local Date: October 31, 2010
Join Date: Oct 1999
Location: Jyväskylä, Finland
Posts: 564
I can agree with Ron and Dan, stop blaming c++. If you teach yourself the proper ways of using it, it will not cause any more problems than any other language. It is more difficult to learn than others, I know from my own experience. And as Ron said, pointers cause no problems if you use them right - something I have yet to learn myself.

As I said in my former message, it is of no use to start arguing with programmers, that's why I didn't do it myself. Java and C++ are both good languages, and they are both likely to survive. It's just what you think suits you best, and the project you have at hand. Personally, I like C++ because it is perhaps the most low-level of the high-level languages, and you can also easily use assembler code with it. I like to have lots of control on the program performance.

So let's stop arguing. F_Smith is right, Java can do all those things he said. But don't blame C++, it's as good as Java. As I said, there are no bad languages, only bad programmers. And every programmer has his opinions, that no one can break. Everyone has his right to choose what language he prefers.
amjayee is offline  
Old July 7, 2000, 20:22   #42
RonHiler
Warlord
 
Local Time: 01:34
Local Date: October 31, 2010
Join Date: May 2000
Location: California, USA
Posts: 191
Hey guys,

Amjayee: I don't think we were arguing, more discussing But certainly we can take it private if it is bugging other people. Certainly it is OT, and I don't mean to bug other people, heh.

F_Smith: If you have no objections, I still have a couple of questions and comments, if you'd like to discuss it through e-mail. I didn't know Java passed by reference, so already I've learned something new, and it brings up some interesting points Also, I'm still interested in this business of halving development time, which, in truth, I'm still a bit skeptical of. Of course, if you've grown tired of the whole conversation, we can stop. Up to you.

TTY'allL

Ron
RonHiler is offline  
Old July 7, 2000, 22:17   #43
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
Ron:

I could ramble on forever, most likely.

Correction:

My eMail at *work* is Jfalasch@csc.com. (I feels like I live there, sometimes). My name is Joe Falaschi, by the by.

Home eMail is JFalaschi@austin.rr.com.

Sorry.


[This message has been edited by F_Smith (edited July 08, 2000).]
F_Smith is offline  
Old July 8, 2000, 00:11   #44
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
amjayee:

I wasn't intending to argue, more to discuss. I'm sorry if I came across wrong. I will agree, there is no 'bad' language (as I said, we still use Cobol!). I am not running down C/C++, and I'm sorry if it appeared that way.

There are no bad languages.

If you are sticking with C++ because that's what you know, I can fully understand that. Altho I do think ya'll should at least try an evening with Java -- it's so much like C++ (without many of it's pitfalls) that you might quickly decide you like it. The transition from C++ to java is almost painless.

In many ways, Java is just C+++, after all.

I'll drop this now, and I'm sorry if I stepped on any toes. I could just go on about programming forever (just ask my wife!).
F_Smith is offline  
Old July 8, 2000, 00:18   #45
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
One last thought:

There are no bad languages. But there are languages that are fast to develop in, and there are languages that are slow to develop in (assembler!). You could code the entire game in assembler, too, it would just be a waste of much time.

Since java takes 1/2 or less the time to develop the same app as C++, if you are going to take 2 years to develop this game, you could possibly save yourself as much as a year.

Can you afford to dismiss Java without even even looking into it?

In some ways, Java is to C++ what C is to Assembler. Especially from the project level of thinking about things.

Ciao, my friends.

I look forward to playing your game. If ya'll don't mind, I will still read ya'lls threads, lurking, as the phrase goes.

See ya on the flip side.
F_Smith is offline  
Old July 8, 2000, 06:19   #46
dan ward
Chieftain
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: Jun 2000
Posts: 31
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.

dan ward is offline  
Old July 8, 2000, 11:44   #47
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
Dan:

Just out of curiosity, other than speed of grafix, what advantage does C++ offer you for game design?
F_Smith is offline  
Old July 8, 2000, 17:52   #48
dan ward
Chieftain
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: Jun 2000
Posts: 31
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).]
dan ward is offline  
Old July 8, 2000, 22:50   #49
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
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?
F_Smith is offline  
Old July 9, 2000, 07:10   #50
dan ward
Chieftain
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: Jun 2000
Posts: 31
>> 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.


dan ward is offline  
Old July 9, 2000, 15:14   #51
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
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.
F_Smith is offline  
Old July 11, 2000, 14:32   #52
dan ward
Chieftain
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: Jun 2000
Posts: 31
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.

dan ward is offline  
Old July 11, 2000, 15:23   #53
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
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.
F_Smith is offline  
Old July 11, 2000, 19:08   #54
VetLegion
Civilization II MultiplayerDiploGames
Emperor
 
VetLegion's Avatar
 
Local Time: 11:34
Local Date: October 31, 2010
Join Date: Sep 1999
Posts: 4,037
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
VetLegion is offline  
Old July 12, 2000, 07:49   #55
amjayee
Prince
 
amjayee's Avatar
 
Local Time: 11:34
Local Date: October 31, 2010
Join Date: Oct 1999
Location: Jyväskylä, Finland
Posts: 564
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.
amjayee is offline  
Old July 12, 2000, 09:24   #56
F_Smith
Prince
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: May 1999
Location: Austin, Tx 78728
Posts: 539
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.
F_Smith is offline  
Old July 12, 2000, 15:54   #57
dan ward
Chieftain
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: Jun 2000
Posts: 31
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.
dan ward is offline  
Old July 13, 2000, 01:32   #58
alms66
Prince
 
Local Time: 04:34
Local Date: October 31, 2010
Join Date: Oct 1999
Location: Louisiana
Posts: 808
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.
alms66 is offline  
Old July 14, 2000, 01:33   #59
Guildmaster
Warlord
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: Jun 2000
Location: Up your butt and around the corner
Posts: 174
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.
Guildmaster is offline  
Old August 4, 2000, 21:12   #60
Mark_Lipovrovskiy
Chieftain
 
Local Time: 09:34
Local Date: October 31, 2010
Join Date: Aug 2000
Location: Israel
Posts: 62
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).]
Mark_Lipovrovskiy is offline  
 

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On

Forum Jump


All times are GMT -4. The time now is 05:34.


Design by Vjacheslav Trushkin, color scheme by ColorizeIt!.
Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Apolyton Civilization Site | Copyright © The Apolyton Team