I started studying programming not long ago.
I started with the C programming language. Then I realized that it was too difficult for me. Then I began to study C++.
Now I understand that C++ is also a complex programming language. I want to understand if I'm on the right track.
I would like to develop audio games and online games, for example MUD. I learned that most large projects are developed in C++.
My question is:
C++ is the right solution? Or can I learn a simpler programming language and get the result?
I asked in other forums, read this forum, and as I understood, for C++ I need a lot of time. I need to think about how my application works. But I would like to think about the algorithm.
Maybe I'm wrong, because I started with BGT, but I'd like to figure it out.
Programming experts, please help me!
You need a lot of time for any programming language really. I wouldn't recommend C++ for your first language, though--it's syntax is a bit too much for me.
Must MUD engines are coded in C. I've never attempted C++, though it sounds like C but with some object oriented stuff thrown in. It will probably still have the challenges of C, pointers, memory allocation etc.
@3, C++ doesn't have all those problems that C gives you. Sure, you can choose to use memory management if you want and you can choose to allocate memory yourself, and go through hell trying to remember to free() everything, or you can use things like std::smart_pointer or std::shared_pointer to automatically free memory when the pointer goes out of scope. @2, I have no idea why your computer -- Mac OS that is -- doesn't like libaudioverse; it works perfectly on LInux and Windows. acessible_output2/Tolk obviously isn't going to work on any other platform other than Windows because they're designed specifically for windows (so far as I know). C++ was the first programming language I ever learned and, while it was hard, I eventually got it after a few months of fiddling with it.
The important thing at this stage would be to become more familiar with the principles of programming logic and syntax, it doesn't necessarily matter which language you choose to do this, though some might be easier at first than others. When it comes to programming, power is equal to complexity, or put another way the more verbose and detailed you can be the more powerful, yet complex, the language is. Regardless of which you choose, be it BGT, Python, or C++, its inevitable that you'll eventually gravitate towards other languages for different use cases.
Python is a fairly popular first choice because it handles a lot of the memory management for you among other things, allowing users to focus more on the program logic. There are also a few MUD engines like [Mud-Pi] or [Evennia] available for python. The same easy to use memory handling though can make it difficult to do more complex and low level tasks however, working on limited hardware for example, requiring more optimization, etc. C++ being a very verbose, and thus powerful language allows you to work with things like low-level hardware and memory management very efficiently, but as a result can make it more difficult to manage and maintain code, and longer to write. It really depends on what you plan on doing, and BGT can also be just as good a place to start as any.
I don't think accessible_output is cross compatible with mac, but I think accessible_output2 is, though i'm not sure its still available anywhere. Pyttsx is still cross compatible on linux/mac, athough its capabilities are limited to native OS TTS functions.
@5, I've never used Pyttsx... might want to consider investing some time checking it out sometime.
A lot of people ask this.
C looks like a very hard starting point. Useful, sure, and powerful if you can grok it, as it's so close to the metal. But C++ will give you all of that and be a bit friendlyer. So I'd give up on C, unless you have a specific reason for it, at least as a starter.
That being said, I can't see any reason you'd need to be so close to the metal for a MUD, unless I'm missing something. Sure an efficient server, maybe, but still.
Python would certainly be a more friendly introduction, though as you'll presumably be using CPython as your Python runtime (it's the runtime I'd recommend), it's slightly slower than C++ and others. Though, it might not be worth worrying about performance at this point. As an old saying about optimization goes: "Premature optimization is the root of all evil".
Another option worth considering is C#, particularly with .NET Core, if you're worried about cross-platform compiling. I'm not sure if it can be used for MUDs, but I can't see any reason why it wouldn't be. C# is fairly friendly as a language, and you'll be quite used to it from C++. It's got a large support community to ask questions of, and the language is still being added to. And Visual Studio, particularly on Windows 10, is one of the most accessible development environments around there. At least at the time of writing. Not perfect, sure, but no worse than any other development environment available.
Any of those appeal to you?
8 (edited by BlindRainGames 2018-04-26 00:16:11)
As first language I recommend Python. It's powerful, flexible and quiet simple. PyGame lib will help in gamedev, or you can use Panda3D game engine.
If you want to make big games, with thousands of players, you need C++ or at least Java for server part.
Well, about C++. I started learning programming from this language. It's complicated to understand, but after that you have deep understanding of programs life cycle. And you can easily migrate to another lang with minimum time.
@BlindRainGames, Python can probably handle thousands of players, if not tens of thousands, though the power consumption will be incredible; after all, there are web servers written in Python that handle hundreds to thousands of requests every day. I don't know any off of the top of my head but I bet there is out there.
There is a top programming languages for developing audio games:
This is a simple programming language. In Python, you don't need to think about memory, how the application works. You are thinking about the application algorithm.
But, Python has a low performance. Python developed SoundRTS, Undead Assoult.
I don't think that in Python it's possible to develop games like Redspot, Swamp, etc.
If you worked with BGT, you will like this programming language. It has a very similar syntax to BGT. But you are tied to .NET.
The ideal programming language. In C++, you can develop any application of any game. But you have to think about how the application works, about memory. It takes a long time to learn C++.
ironcross32, Basically on C were developed old MUD engines, for example Circle.
Most modern MUD is developed in C++. AlterAeon was developed in C++.
truecraig, I said that I had already given up on C.
Python is a good programming language. Now I'm studying Python for work. But above Jonikster said that Python has low performance and I agree with it.
I haven't seen good sound games developed in Python.
But Python can be used as a language for game logic. I can write mechanics of the game in C++, logic in Python.
C# is really a good choice. But the connection to .NET repels me.
A friend of mine, a programmer, asked me what I want to develop. Infrastructure of the game or game. I said that I want to develop a game. He said that I should use that programming language where there are libraries that can solve my problems.
I can stop at C++. C++ has many good libraries for any task. But there are 3 things:
1. How well do I need to know C++?
2. For game development, can I bypass low-level programming?
3. I was told that if I want to use ready-made solutions, then I should use other programming languages. Is it true and why?
BlindRainGames, What about C#? Can I develop a big game in C#?
About Java, this is a good programming language, but in my opinion, not for games.
I don't need the first programming language. My first programming language was C. At C, I studied variables, conditions, loops. After that, I moved on to C++. In C++, I learned pointers, OOP.
I need a good game development solution.
jonikster, What exactly do you use for games and why?
I played one of your games, and I want to know what you used to develop.
en.dried, For my games, before, I used BGT. Now for games I use C#.
But I advise you C++.
what did you create and where can i get them?
never give up on what ever you are doing.
ashleygrobler04, These are Russian games. Perhaps en.dried knows Russian and played my games.
if you want to develop with C++:
1. sdl for input and window stuff (it has been written in c)
2. SoLoud for audio
3. bullet for physics
4. eNet, boost.asio for networking (udp socket)
5. libcurl for http request (it has been written in c)
visualstudio, Are you familiar with C++? If so, can you tell me how well I should know C++ for game development?
What about sfml?
21 (edited by Ethin 2018-04-26 14:55:21)
I'd vote for SFML. Its a very very good library for multimedia/game development. @jonikster, you keep stating that Python has bad performance. Tell me, then, exactly why millions of developers use it for multithreaded and/or high-performance apps then? Google uses it in their app engine, you know.
it depends on the game.
basicly speaking, structs, oop, functions, loops etc but it depends on the library weather it uses templates etc, and how you want to implement that
about sdl or sfml, i vote for sdl (as i've used them both) because of its features to sfml (the audio engine is really good and isn't depend on OpenAL)
also SoLoud has support for it which is great
visualstudio, If I would like to develop a game like Redspot. For start, I can Offline.
If I'm familiar with the structures and OOP. Can I start on C++? Your opinion, is the correct choice of C++?
Yes, there are many servers on Python, And erformance is quiet good in new version 3.7. But still java or C++ more performant. So, on this languages you need less resources for hardware.
Sure, yes, you can write games on C#. Our development team uses C# as main development language.
Well there are tests out there that show python's slower than other langs, side by side comparisons where two programs designed to do the same thing run, and the times are recorded.
BGT can also be just as good a place to start as any.
True, but my god, so many people just get too comfy there and never do anything else, and it shows. It's like they get into it, but not fully into it, now there are some people who really do some cool stuff with it, but a majority of the stuff I've played on BGT ranges from OK to just plain crap, unfortunately.
I'm just kind of tired of the status quo. There are some people out here who probably could make a decent game, but don't. I'm almost thinking BGT hurt the scene more than it helped. BGT provides such a low entry to programming that they read the manual, see OK its not that hard, do a few things, and think they can code. Now, they have huge gaps in their knowledge, and they find a whole bunch of includes out there, so they put it in and go with it. They maybe modify some numbers, but not the code itself. Now, one might make the point, if we're building something like a deck, do we cut down our own trees, mill our own wood, forge our own nails? No, of course not. We buy lumber, packs of nails or screws as needed. So, I really don't take issue with using classes and stuff if they're freely available, but its like if someone said ah building a house is so easy, here's a foundation and frame, you do the rest. If that person has no experience in carpentry, masonry, drywalling, and so forth, they're gonna look at you like you're a loon. You don't cut corners, you need to know all the intermediate steps between where you are now and where you want to go.
I wrote this blog post to try to dissuade people from falling into this trap. I'm not saying never use BGT, just, if you are an ambitious person, if you have the drive to make audio games, BGT is a step on the ladder, its not a comfy couch that you sink into. Use it fine, help you learn, and ya know if you can use BGT to the max like Sam Tupy, like Mason, like Liam Erven, then fine, I won't bitch, because mainly I don't have the grounds to tell you otherwise, as I know its something I couldn't do. I'm fairly limited in my abilities to code. I am concerned and annoyed as a gamer that so many games are being made with BGT, but underlying that, people put out stuff that's not fit for release. Buggy games that are almost unplayable due to the amount of bugs they have. It's like people don't take pride in their work, either that or they're so hype for people to pat them on the back that they release now. I know of one game that was someone's first project, Echo Quadrant. Now, I don't think it was written in BGT because there are like graphics and print on the screen which BGT can't do. Hell, I wouldn't care if someone released a tic tac toe game as their first game. I don't need complexity, though it is something I desire, something to dive into, etc. What I really care about is that people take the time to debug their game. Run through as many different scenarios as you can and release it when it looks good. I know there are bugs, always going to be bugs, its just software, and the way things are, but real edge case stuff, not like everything you do is so screwed up the game might not even be a game anymore.