Page 1 of 1

Questions from someone new to videogames

Posted: Tue Nov 24, 2015 12:22 pm
by kikito
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)
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.
It depends.
  • 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.
Regarding the "waste of time": I think the time spent getting familiarized with a language, is never a wasted (unless you already know a very similar one). Each different language brings something new to the table. Each language gives you new "mental tools", which you can use in other languages.

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/
What language do you recommend me to try?
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.

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.
Why did you choose LÖVE instead of other Lua-based engines like CoronaSDK, Moai or Defold?
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.

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.
What math knowledge [is good for videogames]?
Trigonometry, Vectors, basic euclidean physics. The starting items of Coding Math are good: https://www.youtube.com/user/codingmath
Any good book that you recommend?
"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.

"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.
Any advice for working as a videogame developer?
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:

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.
With these conditions, if I were in your situation, I would:
  • 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)
Web development is a bit like the opposite of game programming: it is not attractive to young people. Yet everyone and their aunt need a website nowadays. As a result, it is relatively easy to find a job, the hours are not crazy, the pay is decent, etc.

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.

Re: Questions from someone new to videogames

Posted: Tue Nov 24, 2015 12:40 pm
by MadByte
Thanks for sharing. +1

Re: Questions from someone new to videogames

Posted: Tue Nov 24, 2015 3:14 pm
by zorg
kikito wrote: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.
Just to drive the point home, Undertale, a game liked by many, was made by a musician of a webcomic, funded through kickstarter, in Game Maker as well (either GM8 or Studio).
It's really not only about what language one chooses to code in, but also about having an idea, refining it, designing the game and using assets in a way that people aren't dissuaded by the looks and feel of the product through time, after which one can release it into the wild. :3

Re: Questions from someone new to videogames

Posted: Fri Feb 17, 2017 12:14 pm
by phobos2077
Really good answers. I also work as web developer for many years now and can confirm what the OP said about that part. I was considering going into gamedev every now and then, but many reasons keep me out of it. Especially in my country (Russia) where real gamedev is dead for many years now (big evil companies like 1C killed it). Only stupid mobile/browser freemium games are done nowadays.

Now I think I just practice making games for the process of it, starting small and consider going indie somewhere in far future. That's the reason I lean towards LOVE engine against others, it's easy and somehow low level. Building an actual high-level game engine yourself is the best way to learn how they all work in general, IMO :) (I used to work on a framework for web-development, experienced I gained helped me learn other frameworks much faster)