• Advertisement
Sign in to follow this  

What language does what?

This topic is 1916 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

The biggest problem with Java is everything is needlessly over-engineered. It very much has the feeling of a language that is very popular with consultants ( it is, consultants love Java. It's the language of choice for almost all the big consulting companies ) that bill by the hour. Eclipse is one such perfect example... just take a gander around the Eclipse UI and tell me it makes any sense. The everything and the kitchen sink program creates a brutal learning curve for a new developer... and you will encounter it almost instantly, as Eclipse has this horrible habit of using the JRE instead of the JDK ( welcome to another facet new developers are going to have to puzzle out... ), so you will have to configure your JDK almost instantly, which requires digging through about 6 levels of nested dialogs.

Then there is the build system... eghads the build system. I really never fathomed that there was someone alive that said "boyo... make files just seem too easy.. let's make something even more convoluted!", and thus Maven was born. Maven is powerful, maven can do everything you ever imagined and maven is an absolute utter complete pain in the ass when it breaks. And it will. Often.

So, for the love of all that is holy, if you are just starting out with Java, take my advice and stay away from Eclipse and Maven as long as you possibly can. Try getting started with NetBeans or IntelliJ, both are freely available, and both are much more approach for a) new developers b) the sane.

There are a couple good game development libraries for Java. Actually, this is an area where Java being unpopular for game development really helps you... not as much choice.

Basically you have Slick2D and Playn for 2D libraries. PlayN is great, but to perform it's cross platform magic it uses Maven. That means, when the build process breaks, you are in for a nightmare. Oh and for an idea what you are in for, here are the PlayN installation instructions. So, in other words, just starting starting out, start with Slick.

When things go 3D, your choices are similarly restrained. There are two popular 3D engines, Panda which was mentioned earlier and jMonkeyEngine. And... that's about it. If you want to work a bit lower level, there is LWJGL.

It may sound silly, but this lack of choice is a very good thing, at least for a beginner. It makes your decision making process incredibly simple. Heck, it basically boils it down to pick an IDE and a library and go. I personally recommend Slick + IntelliJ to get started, and nicely, you can use this post to figure out the configuration issues.

To join the off-topic metathread for a moment, I highly recommend Lua as a beginners language. Other than it's odd choice to be 1 based and defaulting to global, it is a very good language to learn programming and an exceptional one to grow with, as Lua is one of the most commonly embedded programming languages for games. It is not an Object Oriented language, which can certainly be a good thing. It is however powerful/expressive enough that you can add OO to your code if really needed.

Python and Lua however both suffer the same issue, community fragmentation. Both released newer version ( 3.x and 5.2 respectively ) that the community simply haven't adopted for various reasons. These has the affect of stagnating the language's development. Edited by Serapth

Share this post

Link to post
Share on other sites

[quote name='teccubus' timestamp='1350925445' post='4992816']
If I were you, I would not bother with languages like Python, Ruby, Java, C#, because programs written in them are slow as hell.

i cant' say much about Phyton, Ruby and Java.. but if your C# programs are "slow as hell" (or even slow), you are doing it wrong.
All VMs are slow, .NET is not an exception.

Share this post

Link to post
Share on other sites

It seems that this thread has actually created more questions in the reader mind, so I will clear much of the air. smile.png

Be concerned with learner friendliness of the language environment, technical support, and community experience rather than the language itself. The C# and Python are learner friendly in all the most important ways. Both also have a bright future! AAA games have been made with them, too!

Now, lets make the jungle simple with an easy outline, a kind of map of the game development region so to speak...smile.png

A game developer is accepted in the industry as being responsible for the creation of a game. Game developers usually do a lot of language coding. They can be corporations, corporate employees or free agent creators, indy alone or indy with a team, or simply a hobby game developer. (Note: A lone indy game developer might be everything, as many hobbyists are: Game Developer, Game Designer, Programmer, Artist, Publisher - all in one!)

A game designer is one who designs the game, to various amounts, and can work for a game developer, corporation, or as an independent agent. Often some language use is done, but some game designers do no coding - instead delegating it as they manage other teams. A few game developers design the game and handle all the art assets alone. Game designers can be a company or an individual.

Programmers can work as an employee of a game company or on a contract basis. The C++, C#, C, Java, Python are common, but Tao, Lua, Ruby, and others find their slot by needs and preferences.

Artists may be employed or self-employed in the gaming industry. An artist may be an individual or a team. The greatest selling AAA games tend to use much art, so consider this in your possible plans, though some games were popular for only game play.

There are several very common languages for making games and many more which are sometimes used. Each has advantages and shortcomings. Language of choice has much to do with type of game, individual needs, and game development organizational structure. What is better for a novice is unique, with some languages being far superior for many beginners - though there are almost always exceptions in the field in general - keep that in mind.

Here are the more common ones: smile.png

A case can be made that C++ is the current industry leader for complex AAA popular games, though it really takes a very experienced programmer to use the advantages in the extentions of C++ which give it adaptivity for large game or game engine source coding. With this language comes a very large, flexible, and complex language environment. Look for mainly .NET Framework for Windows and Mono for cross-platform, though many game engines have an SDK to fill most of this role for framework to run your game source code in the computer system. Complex games may require Visual Studio, MonoDevelop, or native game development environment provided by a game engine environment. There are some 3D and 2D render engines available if you want to make your own game engine source code - an advanced thing to do. Game system C++ examples are Ogre 3D, Unreal (Also in C# and more), and others.

The C# is one of the most learner friendly languages which also provides huge support in the game development environment. Unity 3D, XNA, SharpDX, Mono, Axiom 3D, and others are being used by both learners and experienced programmers. The non-game industry evolution almost guarantees that C# will have a bright game development future. The C# usage in the general commercial industry is gigantic and growing every day. It is a compiled language by nature, so performance potential is there. Game development friendly features such as object oriented programming, memory management ( auto - garbage collecting ), and dynamic writing are good enough for most games and improving with every language version release. The AAA games made with C# have proven that this language is a great option if you need it.

Python is also popular, but shares C# as learner friendly language and support technologies. Blender provides a game development environment with a game engine in Python which probably has all that you will need for a long time. There are other game engines made in Python, so take a look at them - a few are outstanding. Python is an interpreted language that is also a memory managed language, freeing you to work on more game and avoid low level techicalilities for the most part.

Java is worth taking a serious look. It leads you to extreme cross-platform games, much technical support, and AAA games and simulations continue to be made with it. If game engine under your game is part of your long term goals, then you might want to get involved in one of these communities. It is fine for only a game, too. Though not as learner friendly in terms of the environment which comes with it, some have started with Java and happy that they did. It is technically challenging so that you really must need a community to help you learn game development in this language environment.

The C language has some AAA game engines and game community support. If game engine under your game is part of your long term goals, then you might want to get involved in one of these communities. A stand alone game can also be made with C. This is more of a low level technically challenging language than most, just so you know.

Ruby, Lua, Tao, and a few others have gaming communities. Popular games have come from them. smile.png

To summerize: In theory almost any language can be used to make an AAA popular game, but only a few are superior for beginner programmers because, not so much the language, but the technical environment plus the communities are the biggest advantages. However, the language, syntax, and memory management make C# and Python great choices. Many extensions and vast language development environment make C++, C, and Java possible but less than ideal for the learner programmer.

The IDEs, SDKs, frameworks, and communities allow almost any game development technology to be competitive for a long time to come, so worry not about becoming obsolete in your learning stage. Instead focus on having wise technology and community choices, all the while learning good programming habits!

Get used to research, because it is the spine of game development. Your software environment is the skeleton and your programming ethic is the muscles. Put it all into motion and you will be just fine. biggrin.png

Personally, I would recommend C# with Unity 3D, XNA, SharpDX, or Mono. Python with an existing game engine is close behind. C# favored by me because of the need to have natively compiled language for certain 3D games that I want to make. Newbies who are in much need of confidence builder should probably go with Python and Blender.

1) Research and choose a learner friendly language environment.
2) Make simple console applications such as "Hello World", simple data base, and letter display application.
3) The 2D games should be your first 5-10 games.
4) 3D games will demand a good graphics engine, so save this for a year or two in the future minimum.


Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement