Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: What strategies/learning techniques helped you in learning game development  (Read 6711 times)

0 Members and 1 Guest are viewing this topic.

The New Guy

  • Newbie
  • *
  • Posts: 15
    • View Profile
    • Email
I find myself struggling to "learn" game development.

I have read and studied many books/tutorials(and when I say many its been two-three years of tutorials books). The only issue I see is I haven't been doing it religiously, will take breaks, etc. I find myself not grasping concepts as well I think I should, making silly mistakes with time-based movement, animation, etc.
I am a intermediate programmer and do so for work. What did/do you do to learn game development apart from just finding a tutorial and book and going with it? Right now I am going through a SFML book and I am going to try to just make pong from scratch once finishing the book. Already I ran into a issue with time based movement and had to go back to examples.

Thanks for any and all input!

-Austin

Edit: Also just to clarify, this isn't a topic on how to develop games, but what strategies,tools, learning techniques did you use to better help your understanding.

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Posts: 6287
  • Thor Developer
    • View Profile
    • Bromeon
Make projects.

It's as simple as that; you get the most experience when applying the theoretical concepts in practice. Don't just do what books expect from you, experiment on your own. Start with simple games, and finish them. Learn from mistakes, try to do things differently when you think it makes sense. Even if you don't feel like doing so "because it works so far". Don't just choose the simplest way, question your approaches and risk new things.

In case you're referring to our book SFML Game Development, we have written it with the intent of people trying to understand the code after each chapter before moving on. This is also why each chapter's codebase is separate. I would not recommend reading the book at once before even starting to program.
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

The New Guy

  • Newbie
  • *
  • Posts: 15
    • View Profile
    • Email
I was actually running through SFML Game Essentials, which seems more of a reference to me . I think I struggle more with Game concepts and theories more than I do the actual code/logic.

 I will try giving your book a whirl! Ill add another book purchase to my library of code books :D. My e-library is becoming impressive.

Thanks for the insight.

-Austin

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Posts: 6287
  • Thor Developer
    • View Profile
    • Bromeon
Thank you :) To get an overview, you can also have a look at the code from our book here:
https://github.com/SFML/SFML-Game-Development-Book

The code directly from the Packt website is outdated.
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

The New Guy

  • Newbie
  • *
  • Posts: 15
    • View Profile
    • Email
Awesome, I appreciate it.

Would you recommend just running through simple projects(games that already exist) or just diving straight into ideas that I have?

 I guess I also struggle with at what point do I just start going for the project. I am a young developer now(young relative to my coworkers) and I haven't really ever had to do a start to finish project. Just tasks more the most part.

-Austin

Jesper Juhl

  • Hero Member
  • *****
  • Posts: 1405
    • View Profile
    • Email
My recommendation would be to just do a bunch of simple games at first - don't even worry about interface, text based cin/cout is fine.
Some simple games that you should be able to do in a day or two and that I in the past found to be great practice would be:

 Guess the number
 Tic-tac-toe
 Mastermind
 Battleship

They may seem trivial (and they are) but working through actually implementing them is great practice.

Also, I've found the "Game programming gems" & "AI game programming wisdom" series of books to be extremely helpful. Also the "Physics for game developers" and online-book "Game programming patterns" are great resources in my opinion.

Also check out http://www.redblobgames.com/ and many other online resources.

But the most important thing is; write games (code), practice your craft (even on little trivial games) - there's just no substitute for real experience.
« Last Edit: April 20, 2015, 09:06:37 pm by Jesper Juhl »

The New Guy

  • Newbie
  • *
  • Posts: 15
    • View Profile
    • Email
I did quite a bit of that in school and that helped my programming where it is now. I think I struggle more with the actual 2D piece, or things that originate in 2D development(animation,timing, event handling, etc)

I will most definitely check out those resources you mentioned.

-Austin

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Posts: 6287
  • Thor Developer
    • View Profile
    • Bromeon
If you haven't developed a complete game yet, I would start with something simple like Snake, Pong, Tetris, the usual stuff. It may be more challenging than you'd expect ;) but also much less boring.

I would even recommend to do multiple such small games, they needn't be existing Arcade titles. One of my very first games was terribly simple: planes flew in the sky, and you had to steer a missile (left/right) to take them down. Was quite fun :D and you get to know many useful things like trigonometry, vector algebra, frame time handling, user input, ... Of course, you can endlessly enhance it with particle effects, lighting, sound, shaders, whatever.

Having finished a few smaller games gives you the necessary experience to start delving into bigger projects, like a 2D aircraft game or a platformer. You should really not underestimate platformers though, it took me quite long to develop Zloxx. There are so many genres, it really depends on what you like and consider feasible. Generally, when going for a bigger game, I'd pick a game of which the basic structure is built relatively fast, otherwise you end up being frustrated because you won't make real progress for a long time. Game development is much more rewarding when you get visible results, which is why I'd really start small. And never forget to keep your C++ skills (STL, pointers, templates...) up-to-date, they will determine your efficiency ;)
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

The New Guy

  • Newbie
  • *
  • Posts: 15
    • View Profile
    • Email
" You should really not underestimate platformers though"

This has bit me in the ass more times than I can count. When I first started I made a XNA game that had little Freeza sprites fly across the screen and you (Picollo) had to dodge them. I think that's where I will start, maybe not pong or Super mario level, but just trivial arcade games

-Austin

Jesper Juhl

  • Hero Member
  • *****
  • Posts: 1405
    • View Profile
    • Email
Do pong first.
You have to deal with player input. Collision detection. Collision response. Rendering. Animation (frame rate independence). Scoring. Testing for win condition. Etc etc.
Pong can be more challenging than it seems and if you can't successfully implement "pong" anything more advanced (like a platformer) will just end in tears and disapointment.

Arkanoid is also a great starter project IMHO.
« Last Edit: April 20, 2015, 09:32:36 pm by Jesper Juhl »

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Posts: 6287
  • Thor Developer
    • View Profile
    • Bromeon
Interesting article that expands on what Jesper Juhl said: But Can You Make Pong?
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

The New Guy

  • Newbie
  • *
  • Posts: 15
    • View Profile
    • Email
I very much enjoyed that article, and its 100% correct. If I can't make pong what good am I?
 

Thanks all for the info. Going to dive back in and see where I can get. Going to read through the book that was mentioned.

-Austin

SeriousITGuy

  • Full Member
  • ***
  • Posts: 123
  • Still learning...
    • View Profile
Reading this reminds me off myself 3 years ago, so I think I can give some advice back for what I learned and how I did it the last 3 years ;)

After I knew I want to use C++ and SFML (tackled SDL a bit also) I looked for articles on how "to start learning" game development. I found this article on how to start. It clearly tells you, you start by just doing it, with easy starting projects and advance from there.

So I started learning some SFML via the examples provided by SFML itself. After that I started Pong as my first project. I got it working after 20 to 25 hours of coding I think. No menus, no sound, no music, just the pure game. From there I wanted to fine tune the game, add menus, sounds and so on. I found this tutorial which explains how to build Pong with SFML and all these cool features. Careful, no C++11 used, the code quality can be updated to be a lot better, but it gives you an idea on how and why to do things.
From there on I rewrote my first Pong version six times now, and I'm still not completely satisfied with the result ;) Which leads to the second learning aspect: After you finish something, revisite the code and refactor it, get rid off owning raw pointers, decouple the game objects and so on...

Early 2014 I bought the book SFML Game Development and started working on it. The concepts in there proved very valuable to me, especially the state stack and the context patterns used. From there I read the already mentioned online book Game Programming Patterns which is an awesome read, after you grasped the code of SFML Game Development. After that I bought a (german only) book dedicated on learning C++11 to get all those new cool C++ features which were tackled in the SFML Book.

After that everything in the code base made so much more sense to me and with having the proper knowledge and tools on how to program, I started making a Breakout clone. Not finished yet but hopefully in a few weeks. Which leads me to my last point: finish what you started. Take a small scope project and finish it, make it work. This gives you the satisfaction that you achieved it, which in turn motivates you to go on with the next project, which should add some new feature you never programmed before.

So short answer: Take it easy, start small, advance in little steps. Revisite what you did and make it better. Strife to be a better programmer.

Hope that helps you, as it helped me a lot. ;)
Cheers and all success!

Edit: Oh and I completely forgot one of the most important things, something I had to learn the hard way: Get your math right. 2D vector math is your bread and butter, even for such a "simple" game like Pong. Some focus points: unit vector, length of a vector, carthesian and polar coordinates, radians and degrees ;)
« Last Edit: April 23, 2015, 11:13:54 am by SeriousITGuy »