Who on the forum for a long time probably remembers that some time ago I chose the programming language.
At that time, I chose between C++ C# and Python.
At that time, I finally chose C++.
But the range of my tasks has expanded, and now besides C++, I'm studying Java and Python.
And now my question is:
In which of the three languages is it better to solve my problems?
Here are the tasks and my thoughts:
1. Audio games:
To work, I need tools to open the window, to work with the keyboard, 3D sound.
C++ - ideally suited to this task. At skilful writing high productivity, weight of libraries, engines. But at the same time its complexity, but I was told by those who develop sound games, that knowledge of the basics and OOP for the first time will suffice.
Java is a cool language in terms of cross-platform. I can port my application to any platform. It's much simpler than C++ and the development speed is higher. I do not know how about performance, but Minecraft works successfully, and the alpha version of Minecraft was developed in 6 days.
Python - maybe I'm wrong, but for shooters, especially large, even sound, Python is not suitable.
I saw a lot of strategies, here they work perfectly, when in real time there are few events. But starting with the shooters, according to my feelings, performance is not enough. Who knows the performance of Python correct, if I'm wrong.
2. MUD games:
MUD game is an online multiplayer text game. The bottom line is that there is a client, usually a lot of customers and they already exist, some work using the protocol telnet, and we only write the server. And these clients communicate with the server.
In MUD there is a big world from locations, mobs. The essence of the textual interaction. When events, etc., the server sends the information to the client, and the client displays it.
For example, if a character has entered our location, the server sends information about this to the client, and the client displays:
Ivan came from the south.
Moreover, this text is implemented not in the client, but on the server. Ie the server sends the client the text that the client should output.
C++ - ideally suited to this task. In C + +, there is a work with sockets necessary for this task, as well as many MUD engines.
Java - I do not know how Java with sockets and MUD engines, but there are rumors that Java has developed and quite successfully MUD games.
Python is a language that has both sockets and MUD engines. But I'm not sure if there is enough performance for this task, and whether Python is also effective and reliable for this task.
My short opinion about each of these languages:
C++ is a productive language that allows you to learn not only coding, but also programming. It briefly shows how everything works inside. Memory, for example. It is effective for solving almost any task of an applied and systemic nature. Because of its tools, it is very effective for developing large projects. Here the programmer relies not on language, but on himself, but because the programmer can control the program himself, and increases reliability and productivity.
Java is a powerful tool for developing almost any application. Performance is not sure if it's high, but as we know, Minecraft has enough. Already built-in library allows you to solve many problems.
Python is a good language for automating and solving small tasks. If not right, correct me, but my IMHO, that Python is not suitable for solving large problems.
Who can say anything, I will be happy to listen.
Thank you in advance!
I don't think Python is as slow as you imagine it to be. But I've not really programmed in Python so I'm not 100% sure.
@jonikster, you are definitely wrong about Python. Python is definitely good for solving large tasks -- just not actual full 3D games in particular. Python is even used for natural language processing and machine learning (Google uses it for their machine learning and compute platforms).
As for C++:
Definitely suited to excellent game development, especially for very advanced game engines.
Allows access to the processor of the computer to allow for very advanced and optimized portions of your application.
Lots and lots of code examples and other libraries out there to ease your life a little.
Requires the use of a game engine, no questions asked. The only way your going to easily get away with not using one is if (1) you've got a very good degree in mathematics, (2) you love using libraries like OpenGL and DirectX directly, and (3) you absolutely, absolutely know what your doing.
Requires you to be very careful in what your doing when it comes to pointers, assembly language, etc.
Good for most business applications and web servers.
Allows native API usage to allow for advanced mathematics and possibilities for game development.
Easy to use and learn.
Definitely not suited for 3D game development. At all.
Requires a lot of memory -- more memory than usual, in fact. A game in C++ is probably going to take twice that memory in Java.
Does not have extremely advanced math libraries, a necessity for game development.
Other issues (see http://schemingdeveloper.com/2015/03/23 … or-games). (This also points out how C# is very good for games.)
Incredibly easy to learn and very easy to use.
Logical syntax, follows English grammar -- mostly.
Compilable to native code, but takes some time.
Native API usability, very easy to do.
Lots of libraries in your favor.
No 3D game development support any more; PyOgre and Python-ogre are dead.
Can't be built for consoles.
Can take up a lot of memory if your not careful.
In short: C++ and C# are two very good languages for game development. Python is definitely suited for RTS games (look at SoundRTS) but not suited to full-on 3D games. Java is simply not suited for game development, fair and simple.
About C #, I do not want to use this for two reasons:
1) I am against Microsoft;
2) I can not use C # on older versions of Windows.
About Java, why do you think that using Java, you can not develop games? Minecraft was developed in Java, and it's a successful project.
What about MUD games?
#5 (edited by targor 2017-11-15 19:42:49)
Why would you want to program for Windows XP or older? I mean, nobody should use it anymore and I know nobody personally ho does.
@jonikster, just because you are against microsoft does not mean you shouldn't use C#. That's like saying that I'm against Larry Wall so I won't use Perl. That's just stupid. Second, no, you can't develop for older OSes. You shouldn't need to anyway. Developing for older OSes is a waste of time.
Finally, just because Mindcraft was developed in Java doesn't make Java suitable for real 3D game development. It certainly isn't meant for that, and is not suitable for it. As for MUDs, I've found that MUDs in Java use far more memory than they should.
java is slow for execution of these games, because of this it is not suitable for 3d game development
C++ has automatic pointers so if you use them, they will manage memory automaticly for you
Honestly, provided you aren't planning on making the most beautiful Half life 4/Skyrim/insert other really demanding game here, any of these languages will perform to task. Some might require you to be a bit more clever about it than others, but nothing too unreasonable to my knowledge. I've heard Java's audio capabilities may be the weakest, but I have no evidence of such things. As for MUDs, I know Clok was developed in python and had some issues, though, I think it was down to less than optimized design rather than a language specific issue. Really depends on which of those you are more comfortable with. For example, C++ is good and all, but if you don't feel that you are skilled enough with it, it will fail you. Definitely need to ask yourself what you are designing for, as well. If being multi-platform is more important for example, than, I'd recommend either Java or python, again depending on what you are developing for.
Python can do pretty much anything you'd like it to do, it largely just depends on choosing the right libraries and optimizing accordingly. Although as Ethin mentioned its not generally used on consoles and memory management can be tricky sometimes because python handles that automatically for you unless overridden, making it impractical (but not impossible) to use in some circumstances.
As for 3D, there are other 3D engines other than just PyOgre, such as Panda3D, Blender, Godot, etc. though accessibility may or may not be an issue with those. There's also Pyglet, PyOpenGL, and Kivy however which could also be used to create your own 3D engine.
For developing for earlier operating systems you should probably stick with python 2.x, since recent versions of python 3.x have dropped support for winxp. This could also effect support libraries to a greater degree in the future, so you may need to use earlier verisons of those as well. Actually it wasn't that long ago that Zachtronics [ported one of their games to MS-DOS], they found it quite educational.
If you have already spent time learning C++ or C#, I would suggest you focus on solving these problems using that language.
To me, it sounds like you are still new to programming. That means you probably know the syntax of C++ or C#, but you are not yet proficient with solving problems using C++ or C#. If you want to write games, you need to become proficient with a computer language. That only happens if you spend a lot of time coding in that language.
here is a truth about computer languages. Most computer languages can be used to solve most problems. Where they differ is in how they solve those problems and what existing solutions (libraries) are available to help with solving those problems. You could construct a mud using just about any language. However, if you are new to programming, it is probably best to start solving that problem by using the language you already know than to start out with a new language.
Once you become proficient with one language, it becomes easier to learn others. The reason that is the case is because you can compare and contrast the new language to all the previous ones you learned.
The other thing that is useful to helping you become proficient with a language is to find people who are knowledgeable and asking them how they solve problems using that language.
On the games, now I'm more interested in MUD games, since for the sound games while I have enough BGT, but BGT is not reliable.
Hektor, best of all I know C # and Python. But C # works with new versions of Windows, I want to develop under Windows and Linux.
About Python, I really like this language. It's a simple language, many libraries, but I'm afraid for performance. I think I would use Python if I knew that I would have enough of its performance. But I'm not sure!
you can use C# on linux using mono
if i were you, i would think of what i really need then chose a language (for these that you've said, C++ is the best choice)
@jonikster, I'm going to say this and say this again: With any game, performance is going to be an issue. If you've got a good computer, performance should be the [last] thing you should care about. Finally, you don't need Mono to use C# on Linux -- just go use .NET Core.
And another thing with performance. Unless your developing a AAA title like GTA, or anything else in that nature, the automatic performance handling in python shouldn't be a problem.
On the contrary! If I want to develop a game like GTA, then Python does not suit me
Good, it sounds like you have an answer. If you have concerns with using C#, Java, and Python, you should go ahead with C++.
One additional recommendation... I know you want to write a game that works on older systems and across Windows and Linux. However, if this is the first major game you have written, I would strongly recommend just focusing on writing something that works on your system. Trying to write software that works across platforms and versions of operating systems is a technically more difficult task. And if you don't have easy access to test on all those other operating systems and versions, you will find it even more difficult to accomplish since you also will likely be developing your debugging skills during the process--even with languages that are available cross platform.
Once you get a kgame that works on your system, then look at trying to write something more complex.
@jonikster, obviously performance would be a problem! You don't write mainstream games in Python -- you write them in C#/C+.
Java is probably the least suited for 3D games.
However I'm sure that it could do pretty good for a mud server:
you need to have stable network supporting many simultaneous connections, good text processing, good access to database, and not that much calculation power; it's not very different from programming a web server and a lot of web servers are made in Java.
Note that the playroom server is in Java too; it has basicly the same exigences.