I am fairly new in the programming world, I have a 1-year experience and I learned by watching online courses, and I made few iOS apps.
Now I am moving into game development and I already familiarized myself with Unity3D and started doing my own simple project.
Playing games like Monument Valley for example made me wonder: what if I want to implement the same movement technique in my own game, or lets say I have an automated turret that shoots at the nearest enemy, or a even a game like sudoku or tic tac toe?
I have no idea how to efficiently implement that. So is it absolutely necessary to learn the fundamentals of algorithms or is there some easier way to achieve what I want without the complexity of CS?
4
1. No.
You can do a LOT in game development with only the most shallow knowledge and understanding of Computer Science. You don’t need CS knowledge to do graphic design, nor do you need it for most 3D design. You don’t need CS to tell a story, which is essentially what most quest games do. You don’t need CS to think about game-play and usability, and design the ways a user interacts with a game, and so on…
Also, today you have so many tools available (such as the Unity, etc) that allow you to create really cool things without going too deep into what happens in the background.
Also, most of the problems you face in day-to-day software development, even when they have some CS elements, are very trivial, and almost always have been solved before in a well known and documented way. You can always come here and ask 🙂
2. Yes.
The way we, humans, understand and describe the world around us is with mathematics. The way computers work is solely founded on mathematics (and some fancy sand i.e. Silicon). When I say “the world around us, i don’t only mean physics, and the “physical” world. Chess, checkers, soduku, most card games, and many more are just fancy math problems. To understand, manipulate, and be able to create, things like a Chess AI, a visual 2D3D engine, or anything beyond a MOD to a First Person Shooter, you must have a deep and profound understanding of the mathematical elements behind them.
3. Maybe?
So basically my answer is – Your mileage may vary. It depends on what do you want to do, where, and how much understanding do you want of what you are doing. Even if you want to do things that really require the Math, today you can learn most of the things you need yourself on the internet.
But, as someone who worked for about 7 years in the industry with only 6 months of professional training, I can say that the easier way is going to collage and learning it there…
2
The short answer is yes.
It depends on the complexity and innovation of the game being designed. Some games, say, Gravity Master, looks simple enough but actually requires a rigid body physics solver.
All games involve programming; software with increasing functionality requires more programming, which I hope is obvious to you.
The majority of games require geometry because most kinds of gameplay involves movements and distance effects in a 1D, 2D or 3D space.
Some kinds of gameplay require less knowledge areas:
- Card games don’t involve geometry, but may involve combinatorics and artificial intelligence (more specifically “game tree” and “heuristics”, used for searching for a viable strategy by the computer player.)
- Games where movement is constrained to a grid and only one step allowed at a time (without pathfinding) are also simpler.
- Games which only involve a series of storyboards (of which the evolution of the story is based on answering multiple-choice questions by the user) is also simplier.
But games in general can involve many knowledge areas. Game developers must work really, really hard. It is not unheard of that they might work twice as long hours compared to other software programmers outside the game industry. They must be avid self-learners because they may not have all of the necessary knowledge when they graduate from school. Each game requires new knowledge (or else, it will not be innovative enough to impress the gamers.)
Games in general are also divided into many components. Sometimes, these components can be packaged into “game engines”, so that other programmers can build on top of that without having reached the same level of knowledge as to implement the same.
1