Questions from someone new to videogames
Posted: Tue Nov 24, 2015 12:22 pm
Hi there,
Someone has sent me a private message with questions regarding videogames, programming and work. Since I think the questions would benefit more people than just him/her, I am putting my answers here. (If the person who asked wants to identify himself, he can do so here)
I am especially interested in the "idioms" that each language develops. I speak a bit about idioms in my blog: http://kiki.to/blog/2012/07/19/coding-with-an-accent/
If you get attracted by abstractions, Haskell might be your thing. In some ways I consider it "the opposite of Lua".
If the simplicity of Lua attracts you, maybe Lisp would be more up your thing.
If you want to have an "escape route" in case you don't make it in the videogame industry (as most people don't), I would consider a language with pressence on the web. Python, Ruby, Elixir or Go.
My recommendation, however, is that you learn as many languages as you can, especially if they are different from the ones you know.
I also think that LÖVE is the one which is more aligned with Lua - minimalism and low-friction interface. Moai feels like someone translated something from Java to Lua.
"7 languages in 7 weeks": This is a good place to "start opening your mind".
If you are going the C++ route, "Effective C++" is a must.
I recommend you to read about something else too - you will need some "background" to design your games. I like sci-fi. Right now I am re-reading "Dune". My favorite sci-fi author is Isaac Asimov.
Videogame programming is incredibly attractive for lots of young programmers, such as yourself. This simple fact has two very obvious consequences:
Other advices about programming in general:
Someone has sent me a private message with questions regarding videogames, programming and work. Since I think the questions would benefit more people than just him/her, I am putting my answers here. (If the person who asked wants to identify himself, he can do so here)
It depends.What language should I learn? I have tried C++, C# & python, which is the one I liked the most. But I have heard it is not good for videogames. I don't want to waste time.
- If you just want to "maximize the possibilities of you getting hired in a game development studio by your programming skills alone" then C++ is your best candidate. By no means this guarantees that you will get hired. It will just make it a little less unlikely, in that point alone. Those languages (esp. C++) have a very steep learning curve. You will need to invest *years* on them before you can be considered "experienced".
- If you want to "maximize the possibilities of you getting hired by a studio because you have made lots of games", you need a language which allows you to build games fast. Lua is a good choice. So is python. So is Game Maker Language. I am serious. The first version of Spelunky was done in GML. So was Gunpoint.
- If you want to "leave as many doors open as possible" then you should learn as many languages as you can, especially if they are very different. For example, javascript is like a "ugly version of Lua". If you already know Lua, you probably don't need it. But you could learn some Lisp. As an example, "AI War", the first game from Arcen Games, has an AI which relies heavily on LINQ, a data-crunching language on top of the .NET platform. You never know which one will "click" for you.
I am especially interested in the "idioms" that each language develops. I speak a bit about idioms in my blog: http://kiki.to/blog/2012/07/19/coding-with-an-accent/
I am assuming you are asking here for a language to "fool around", not specifically for making games. The answer, again, is that it depents.What language do you recommend me to try?
If you get attracted by abstractions, Haskell might be your thing. In some ways I consider it "the opposite of Lua".
If the simplicity of Lua attracts you, maybe Lisp would be more up your thing.
If you want to have an "escape route" in case you don't make it in the videogame industry (as most people don't), I would consider a language with pressence on the web. Python, Ruby, Elixir or Go.
My recommendation, however, is that you learn as many languages as you can, especially if they are different from the ones you know.
Several things: The community is the first. The second one for me is that it is opensource. That means I am not "tied" to what they do, and I could make a fork if I wanted to. That alone rules out everything but Moai.Why did you choose LÖVE instead of other Lua-based engines like CoronaSDK, Moai or Defold?
I also think that LÖVE is the one which is more aligned with Lua - minimalism and low-friction interface. Moai feels like someone translated something from Java to Lua.
Trigonometry, Vectors, basic euclidean physics. The starting items of Coding Math are good: https://www.youtube.com/user/codingmathWhat math knowledge [is good for videogames]?
"Clean Code: A Handbook of Agile Software Craftsmanship": The first chapter (about naming things) is very good. The rest, you might find it useful, or not.Any good book that you recommend?
"7 languages in 7 weeks": This is a good place to "start opening your mind".
If you are going the C++ route, "Effective C++" is a must.
I recommend you to read about something else too - you will need some "background" to design your games. I like sci-fi. Right now I am re-reading "Dune". My favorite sci-fi author is Isaac Asimov.
Let me start by making this clear: I don't work as a videogame programmer. I earn my keep doing web development. To me, videogame dev is just a hobby. This, in part, is due to the state of the market. I am not an economist, but this is how I see it:Any advice for working as a videogame developer?
Videogame programming is incredibly attractive for lots of young programmers, such as yourself. This simple fact has two very obvious consequences:
- Most of the candidates get rejected, as there is a *lot* of competition.
- Most of the workers get fired quickly when the company gets in trouble (and often right at the end of a project)
- The working conditions are, in general, not great: lots of hours, not much pay.
- Very few people keep working in the industry as they grow older.
- Only try to get hired by a dev company with a learning mindset. Be prepared to leave soon.
- Becoming an indie is a good middle-term goal
- Assume that I would probably not make it, and if I did, it would probably not last forever. Have a plan B (like web dev)
Other advices about programming in general:
- Becoming a (good) programmer means Never Stop Learning New Things. This also happens in other careers, but in programming moreso; the speed at which things change is incredibly fast.
- If the code you wrote 6 months ago makes you ashamed, you are doing good.
- You will learn that programming means a constant exercise of pondering between tradeoffs. You will think you understand this. You will later realize that you didn't. It is normal.
- When someone in absolutes ("The best programming language is xxx", or "What is the best platform?") that means that they are not very experienced. Take their advice with that in mind.