>>20313
>everyone keeps saying it a pain in the ass for deving.
Most people here haven't finished a game. C++ is the most popular language for professional non- mobile/flash/browser video games.
>I wouldn't even want to learn anything else
That's a bad attitude. Try LISP if you want a beautiful language. The land of LISP is an easy introduction for someone coming from imperative languages, but people complain it teaches bad habbits.
>everything has its pros and cons and it is so hard to say "I've got it! I know exactly what I need to learn and use and so forth!"
Everything has pros and cons but that doesn't mean there's only one right choice. The fact that it's difficult to choose means the choice really doesn't matter much as any of the serious options will work.
Just make a choice, at random with a die if you like, and stick to it. You'll go farther like that than dithering over trivial details for months.
>I know exactly what I need to learn and use and so forth!"
Basic computational complexity*, basic set theory and functions, the mathematical literacy to understand algorithms stated formally (https://en.wikipedia.org/wiki/List_of_algorithms is DAMN handy, don't try to reinvent the wheel you'll do a worse job than a professional mathematician already did for you), data structures, and common algorithms.
Then a bunch of experience writing code, so that the act of software engineering becomes all design and the programming is no longer a challenge but merely a medium for expression of the design.
After you have that (or while you're developing that) pick a library like SDL, or just openGL, and start writing simple games in it. Write pong, then space invaders, then pacman, then 1943, then a small platformer or RPG.
Design the entire game before starting. That way you have a checklist. Every time you do something you get one step closer to finishing.
You NEED to avoid adding things as you go, otherwise you have an endless task ahead of you. Write those ideas down and come back to them when you're finished.
You'll also need Git to keep your code safe, it's easy to use.
https://try.github.io/
In short,
git init (once at the start of the project)
<make some changes to your code>
git add -A (add all changes)
git commit -m 'added feature X' (save those added changes forever)
<repeat>
If you ever need to look back into how your code worked before you broke it, that history will be there.
* Computational complexity is a precise way of talking about the properties of algorithms; often time and memory use. Big-O is the most useful for a beginner, it tells you how bad something is in the worst possible situation.
For example (in time) bubble sort is in O(n^2) while merge sort is in O(n log n).
n here represents the number of things being sorted, and the function tells you what the slope would look like if you plotted n (items to sort) against time to sort.
n^2 is not only a steeper curve than n log n, there's no number you can multiply the values of n log n by that makes them bigger than the values of n^2 (after a certain point)
In the attached graph one of these (bubble sort) takes a lot longer when you add more items to be sorted, and one of them takes a little longer (merge sort).