What language does what?

Started by
26 comments, last by 3Ddreamer 11 years, 5 months ago


Python is just fine for games. You have access to many libraries such as ... Panda3d, and ...

Panda 3D is not a Python library. It's a game engine written in C, which utilizes scripts written with it's own version of Python 2.6 HERE is the manual.[/quote]
I believe it's mostly C++ actually, and I was perfectly aware of that when I posted it. It's intended to be used by Python or C++ programmers however, and made my list because you can develop a game using by writing only Python code and no C or C++. The fact that the underlying engine isn't also Python isn't particularly relevant to a would-be Python programmer who is considering using the engine, except perhaps for the comfort that there is some lower-level optimization already done for them.


Examples of games using Python include EVE Online, Toontown Online, and Pirates of the Caribbean Online. It can also be used as a scripting language, as was the case in Civilization IV.[/quote]
All of those games use an engine written in C, that utilize scripts written in Python. None of them are Python based .[/quote]
I didn't say they were written exclusively in Python, I said they used Python, and further up in the topic said it was "used extensively" in them. EVE Online also uses a variation of the language known as Stackless Python. It's one of the great strengths of Python that it's relatively easy to extend the language with lower-level code if performance is becoming a problem, and personally I think the fact that these great games have done so is a point in favour of the language rather than some black mark against it.


Given the OPs decision to use Java we're getting off topic though...



Java is just fine for games. As mentioned, the major drawback is probably that there are less people doing so, and a bit less in the way of documentation and tutorials available, but I don't think this is a show-stopping problem that should turn you off from the language -- particularly if you want to work with or get help from your friend who already knows the language.

- Jason Astle-Adams

Advertisement
Hey there, Monkayy, I had the same problem as you when I started looking for a programming language to learn a few months ago. I started with C++ and that seemed to get me along just fine. I spent like thirty dollars on a beginners guide for dummies to c++ and it displayed all of the basics with variables, functions, and some OOP (Object Oriented Programming) that got me started with my current major. I'm studying for a Bachelors (Possibly Masters or Doctorate), depending on my career path in the future, and have taken up classes in basic C. Learning C++ was a great choice since they're the same language, just more advanced features in c++, and am doing fine as is. I would definitely suggest learning something that's most comfortable for you with the syntax. I'd add more but I gotta go to work! I'll add more when I get back home if this post still has a pulse.

- Jarret
Java is a great language to begin learning the core concepts of OOP, given that the JVM handles a lot of the low-level processes that tend to cause headaches. I would suggest that if you're going to get into game development that you learn C++ simply because it gives you a higher level of access to the memory that your program is using which will give you more flexibility when it comes to fine-tuning performance.

The Unreal Engine, for example, is written in C++, gives you the ability to write and utilize your own C headers (with the licensed version, not UDK) and its native UnrealScript language uses many of the conventions common to Java.
If I were you, I would not bother with languages like Python, Ruby, Java, C#, because programs written in them are slow as hell.
Instead, I would recommend C, C++, Ada or - which I think is the best option - D.

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.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni

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.

[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.
[/quote]
All VMs are slow, .NET is not an exception.
Hi,

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.

Clinton

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

This topic is closed to new replies.

Advertisement