Game Programming and Development Tools

What should I go for? – mikesoft

Mikesoft

Member

Posts: 20
From: London, England
Registered: 05-28-2005
Hi, I have been using game maker to design games for far to long now and I really want to learn a new language. What language should I start to learn? I really want to make 3D games.
Jari

Member

Posts: 1471
From: Helsinki, Finland
Registered: 03-11-2005
C/C++ seems like a good option because you know GM's scripting language.
But VB is probably easier.

------------------
Unless the LORD builds the house, they labor in vain who build it; unless the LORD keeps the city, the watchman stays awake in vain. - Psalms 127:1


And the work of righteousness shall be peace; and the effect of righteousness quietness and assurance for ever. - Isa 32:17

Brandon

Member

Posts: 594
From: Kansas City, Mo, USA
Registered: 02-02-2004
I'd agree with Jari that C++ would be a good language to learn. But if you just want to make a 3D game, then maybe do your first few with something like Blitz3D or 3D Game Studio

What I did was started off in 3D games in Blitz3D, it really helped me to learn the concepts of 3D, animation, textures, billboards, etc.., and how they all worked together. Also, I will mention that I knew C++ a few years before I even tried to make 3D games. And I was still very confused by DirectX, and OpenGL I didn't even consider.

Actually being a designer and artist at heart, I still use Blitz3D quite a bit. BlitzMax is looking pretty sweet too. But I'd wait until the 3D module is out before looking at it seriously. Also the Torque Game Engine is a great engine to have. I don't have it. But from what I've seen and heard it is very capable.

3D Game Studio is definitely a couple steps up from Blitz3D. It may take some internal control away from you, but it also has a level builder with so many cool features. And it comes with the C-Script language which is basically Java, a class crazy C++ language. It's a good introduction to object oriented programming.

------------------
If I were a drummer I would use a cymbal.
If I were a writer I would use a pencil.
I would use my voice if I were a singer.
No matter who or what we are we must praise.

[This message has been edited by brandon (edited June 03, 2005).]

Seven7
Member

Posts: 50
From: USA
Registered: 03-16-2005

Depends on how far you want to dig into game development. If you want to
do "low-level development" (development from scratch), C++ (Object
Oriented), DirectX and OpenGL is your answer. However, if you want to do
"upper-level development" (game development for beginners) then the answer
is Blitz or Torque, etc.


Note that I mentioned learning C++ and not DirectX and OpenGL.(?) You
should to learn C++ first before using these libraries. Classes (an object
oriented concept) are heavily used as “wrap-arounds” for DirectX and OpenGL
methods (functions). Without C++ you lose the flexibility and robustness of
your design.

Visual Basic and C# should not be considered for 3D games. Visual Basic
loves OCX and ActiveX, game developers do not. C# will never live in the
lime-light of game development.


j.

GUMP

Member

Posts: 1335
From: Melbourne, FL USA
Registered: 11-09-2002
Actually, C# can be used in libraries where the overhead is neglible. I definitely wouldn't recommend it for the core framework of the engine nor the graphics library nor any function that is used thousands of times per engine tick. But it can be used for scripting and gameplay code and AI where the language allows you to quickly put together functioning code.
HanClinto

Administrator

Posts: 1828
From: Indiana
Registered: 10-11-2004
quote:
Originally posted by Seven7:
C# will never live in the
lime-light of game development.

As a fan of C#, I feel compelled to reply to this statement.

I realize you have more experience than I do, but I think C# is really good for designing OO structures. I could see C# being comparable to Java in terms of popularity for game development. I don't think many *engines* will be written in C#, but I can definately see the advantage of having a C# front-end to an engine.

For examples, check out things like Axiom (which is a port of OGRE to C#) and RealmForge.

Especially with the power that C# offers with things like reflection and real-time compilation of scripts that can be written in any CIL-ported language (such as C#, VB.Net, Managed C++, Delphi.Net, Python, Boo, etc), I think there is a lot of future in C# development of games.

Granted, I agree that a lot of the *engines* will still be written in C and C++ for performance. But as for a front-end, I think that things like C# and Java are a good middle ground.

Respectfully,
clint

------------------
http://www.includingjudas.com/christiangame.html

Mikesoft

Member

Posts: 20
From: London, England
Registered: 05-28-2005
Is java an easy language to learn? How does it compare to php in terms of difficultanise (is that in the dictionary?!)?
Jari

Member

Posts: 1471
From: Helsinki, Finland
Registered: 03-11-2005
quote:
Originally posted by mikesoft:
Is java an easy language to learn? How does it compare to php in terms of difficultanise (is that in the dictionary?!)?

In my opinion java is much harder to learn than php and somewhat harder than c++. Java is much more object oriented than c++ and everything is inside classes while in c++ you can have global functions like in php.

------------------
Unless the LORD builds the house, they labor in vain who build it; unless the LORD keeps the city, the watchman stays awake in vain. - Psalms 127:1


And the work of righteousness shall be peace; and the effect of righteousness quietness and assurance for ever. - Isa 32:17

HanClinto

Administrator

Posts: 1828
From: Indiana
Registered: 10-11-2004
Really? I find trying to do good object oriented programming in C++ to be much harder. I mean, there's the redundant method definitions (you need to define them in the header and then define the implementation), and there's hokey things like multiple inheritance, etc.

C# forces everything to be in classes, just like Java. While some people like the global/procedural programming of C (which C++ allows), I think it's much easier to fall into bad programming practices.

I have friends who *love* Java but can't stand C -- so from them I hear that Java is actually easier.

Java and C# are incredibly similar -- I don't think there's much difference between them as far as a language goes -- they're almost identical syntactically.

C and C++ are good to learn, don't get me wrong. But the difference between things like C/C++ and Java/C# is that the latter only allow for pure object-oriented code to be written, and the former allow for procedural.

Respectfully,
clint

------------------
http://www.includingjudas.com/christiangame.html

Seven7
Member

Posts: 50
From: USA
Registered: 03-16-2005
You need to ask yourself "What are the requirements for my game?" before
settling on a language. C# might be the language you'll want to use or it
might be Java. You can pretty much design a game in any language including
assembly, but the majority of games are written in C++. Granted, everyone
has there favorite language and they stick to that language, but C++ is a
very common language in the gaming industry because of special design
techniques that can not be used in any other language, or is very difficult
to mimic in another language. What you will find in games are issues such
as "cooperative multitasking" (not to be confused with threads) and
"Events". Both of these concepts are better suited using C++ rather than
C#, Visual Basic or even Java. Implementing either of these concepts in
another language would be difficult or impossible.

HanClinto is right about using C# as a base line engine code, it does not
have the robustness and power that C++ provides and therefore is not used
as a base code for engines. You sure can use it as a scripting language.
Most game developers use YACC (Yet Another Compiler Compiler) to do
gaming scripts.

quote:
is java an easy language to learn?

Every language has its own learning curve. C/C++ and java have
much lower learner curve compared to Assembly Language.
HTML has a lower learning curve than C/C++ or Java (Since I'm from
the old school, I have a big problem calling HTML a language!)
Game developers need direct access to 'pointers' and although
Java does not support explicit access to pointers, (it does support
implicit access contrary to popular belief). Therefore, Java is another
language that is not considered when developing 3D games. I would google
and check our some examples and play with them to see how you like the language.
quote:
How does it compare to php

google java then google php and compare the two. I think you'll find
out that they are not the same. PHP is HTML with BASIC thrown in.
(Not entirely accurate, but I think you might get the point.) PHP
sits on the server and not on the client machine. You can not
"execute" a PHP file. PHP uses an interpreter to execute PHP commands
from the server side only. PHP was designed for database information
retrieval and can not do any of the "heavy lifting" that other languages
do. C++ and Java are based on the UML (Unified Modeling Language: which is
a standard for object orientated concepts) Think of UML as a set of design
concepts for a language and implemented in C++ and Java. PHP is not an
object orientated language. PHP does not understand the concepts of
objects, classes, inheritance, polymorphism and other UML design concepts.
Again, PHP is designed to sit on a server and retrieve database information
and that's all it does and knows.

What it all boils down to is my proposed question: "What are the requirements for my game?" It also boils down to preference. Some people
like diet coke and drink it all the time where as some people hate diet
coke and drink Pepsi. To say that one language is better than the other is
jumping the gun. Each language has its rightful place in any application.
Do you want to stick with one language the rest of your life and miss out
on the opportunities that some other language has, hopefully not. Every
language has its place in the world. There are some design issues that can
not be done with one language that can be easily accomplished by another.
To rest your hopes on one language just because you have some personal
preference is at best insane to do. Ok, so what's my point?! Learn as many
languages as possible. You don't need to be an expert in all of them, just
enough to know what your doing. My suggestion is to lean Java, C#, C, C++,
and yes, learn assembly. Find out which of these languages is best suited
for you project and apply it.


j.

[This message has been edited by Seven7 (edited June 03, 2005).]

GUMP

Member

Posts: 1335
From: Melbourne, FL USA
Registered: 11-09-2002
Java would probably be an option if developing games for certain models of cell phones, PDAs, and PC Tablets. Games for cell phones is supposedly going to be a rapidly expanding market (according to a Game Developer article from a while ago) and is already popular in Japan. Web-based games with OpenGL is another option and ATI and Nvidia and PowerVR already have 3D accelerators for PDAs and cell phones.

Also, the JRE has improved to the point that the overhead isn't nearly as bad as it used to be.

But all this is probably way over head right now, Mikesoft. Just go with a mainstream language like C/C++ for now.

[This message has been edited by Gump (edited June 03, 2005).]

Mikesoft

Member

Posts: 20
From: London, England
Registered: 05-28-2005
Thanks for all the help everyone!
Mikesoft

Member

Posts: 20
From: London, England
Registered: 05-28-2005
I have started to learn C++ but I need a compiler to test my code. Does anybody know any easy to use free compilers?
Jari

Member

Posts: 1471
From: Helsinki, Finland
Registered: 03-11-2005
One would be DevCpp for windows at http://www.bloodshed.net/devcpp.html.
I recommend to download the version 5 which is still beta but worked for me and was clearer than the previous versions.

Another option that I know would be a borland compiler but I haven't ever used it really so I don't know if its easy to use or not.

------------------
Unless the LORD builds the house, they labor in vain who build it; unless the LORD keeps the city, the watchman stays awake in vain. - Psalms 127:1


And the work of righteousness shall be peace; and the effect of righteousness quietness and assurance for ever. - Isa 32:17