Quote:First, why on earth people think writing a game using C++ is a good idea?!! It's horrible, verbose, disgusting, error prone and unproductive meanwhile C#, Java and derivatives are exact opposite and there are a lot of sophisticated and flexible libraries out there that makes your life so easy that you can finish the same project like 5 times faster and I'm %100 sure you would get a better result.
I've got to admit that a reason that might be why I picked up C++ is because, like you said, everyone was using it. It's pretty natural if you ask me; I just picked what I thought has a bigger community I could learn from. All what you said about the syntax is subjective, so I won't say anything about it. I am not sure about flexibility though. The mere existence of pointers in C++ makes things much more flexible than any of the languages you've named. C++ might be error-prone, but I'd hate to have things work undercover too. People criticize me for constantly trying to "reinvent the wheel", but I like knowing as much as possible about what is going on with stuff I do. I do try to stay away from that premise when time is at stake though, but here I am just doing it to learn. The A-Engine code has been refactored so many times that I could be certain the whole thing went through several rewrites in the process.
Quote:Another drawback is that it is extremely difficult to implement an AI system in C++ while you can simply use reflection in C#/Java and let other people to code AI in the same language (which is probably much better than the one you created). Don't argue saying C++ is faster because a LF2 like game does not require such high optimization, remember you're not an AAA-Studio you're A-Man. Also keep in mind that most of the Android games are Java. Some people say garbage collection (GC) is a problem, it's NOT. Not only it will save you from manual memory management (MMM), a qualified GC can perform better if you're not a C++ pro. Even if you need to tweak GC, it's a magnitude easier than MMM. After all, "The Witcher 2" is an AAA-Game that uses GC effectively. C# and Java have so great IDE's (Visual Studio, SharpDevelop, Eclipse, Netbeans) that you feel ultra comfortable while writing code and auto-complete makes you uber fast. (Should I even mention those useful profiler tools and incredibly nice standard libraries?)
I've no idea what reflection is, but I don't think AI would work very different from what SomeoneElse and Silva managed to do. The engine would simply compile the C/C++ AI function files the user writes at launch. In case you don't want to do complicated AIs, there will be a layer script you can write that does the common and skips on the details.
While I am not going to argue and say C++ is faster, I will say that what LF2 is capable of is barely a thing with the A-Engine. As the A-Engine is to support polygonal platforms, one might need to go a bit over simple 2D stuff (using 3D models for platforms, and consequently shadow mapping would be a must. The physics would have to get more elaborate also.) I am not a very good programmer like you are, and C++ being faster in nature is a big plus for me. I still often reach bottlenecks even with C++, and I don't think I can afford moving to something more high-level until I have a good grasp on how things work on a reasonable fundamental level.
As for the auto-completion, I've tried VS, DevC++, Eclipse and Code::blocks IDEs and all those have the auto-completion feature as SomeoneElse have mentioned.
Quote:Secondly, I don't understand what the hell is wrong with those who are trying to create their own data syntax/format while they can use existing ones (XML, JSON, YAML, Protobuf, BSON...). You're doing nothing but overloading your work to write a new parser library and it will probably not going to be as fast as existing libraries that parse existing data formats. Also, inventing a brand new unique data format results with need for a new data changer, while someone can simply use Notepad++ to change a XML/JSON based data and syntax highlighting, intellisense and auto-indentation will just work. No one actually needs a new data format, existing ones are sufficient. I would recommend Protobuf as it is really fast, takes low space, backward compatible and rock-solid, but it's a binary format, meaning that it's neither human readable nor editable, it needs a special data changer, but with the help of those great high level libraries, it's not a big challenge to provide that.
I would use the following combination:
C#/Mono + OpenTK (or MonoGame for a higher level API) + Protobuf-Net
Okay, you've made a point there. I am forcing people to learn a completely different language when I could've just used what is already there and commonly used. However, things have proved to be quite readable the way they are currently. I will look up into Protobuf the next time I do something mod-able, but now, it's gotten late. Thanks for the suggestion though!
Quote:I must add that bytecode compiled languages are easy to do reverse engineering (so easy that you can extract most of the source code just using a simple program such as ILSpy). Thus, it's more likely that your game is going to be moded (and obviously we're trying to create an extensible game). If you don't like the idea of source theft, you can always obfuscate your code. But if it's not enough, and you still want your code to be compiled into native CPU instruction sets, then do yourself a favor and learn "D Programming Language". With the help of Eclipse + DDT plugin (and a compiler of course), anything is possible.
I take too much from the internet to feel bad about giving away this little. Regardless, I do not wish to start learning a new language with similar purpose to what I know already. C++ as a language has been improving over time, and I am sure it will has most of what D has in the near future.