Advertisement

Is it too early to do some complicated game design

Started by April 26, 2015 02:29 PM
21 comments, last by Tutorial Doctor 9 years, 8 months ago

This is just a follow up question. I havent created my own game. The only game I have created was just a pong clone. But I wrote with bad programming practice. Now i want to improve my programming skills. Often people would say that start programming, start creating a game without telling if you should follow a good practice or giving advice about the game design. My question is:

As a beginner in game development. Do i need to start to learn good programming practice like Entity component system? Or should i just move on and just create a game although this may mean a bad habit in coding??

ooookkkkkaaaayyy

My recommendation is to do both simultaneously. You need a combination of "book smarts" and real-world experience. One without the other is not going to be sufficient.

But you also need to scale up. Something like ECS applied across the board might be a little too huge architecturally and conceptually for a beginner. You need general experience with combining pieces of a semi-complex game implementation together before you can fully understand the reasoning behind ECS, and therefore how to apply a particular variant of ECS consistently to your project. But it might be useful to apply something that is kind of ECS-like to a particular part of your game, just to experiment if nothing else. Or when you notice a particular chunk of code is getting reused a lot, consider turning the consumers of that code into entities which are then given that reusable code as a component.

As for bad habits, I don't personally believe that a responsible coder needs to worry about developing these. As long as you are always reading, learning, practicing, and trying new things, you won't get stuck with bad habits. You might develop bad patterns temporarily, but they won't become stubbornly hard to get rid of. Using global variables isn't like getting addicted to nicotine. So don't be afraid of bad habits in the short term, but always be reflective of your own coding practices, and be on the lookout for ways in which you could improve.

"We should have a great fewer disputes in the world if words were taken for what they are, the signs of our ideas only, and not for things themselves." - John Locke
Advertisement

I read a lot but i lack experience. Maybe I guess i should start worrying about things like that. But tbh I really want to improve the way i code. Maybe learning composition and applying it on my code will help? I read that ECS was base on composition.

ooookkkkkaaaayyy

You shouldn't worry too much about design if Pong is your only experience yet. You don't learn programming from just reading books. I would suggest you just start coding a few more simple games and slowly increase the difficulty.

I just googled "easy game programming projects" and found this site with a bunch of nice suggestions. It also links to this site which has lot of neat games which I find even better for a beginner. Just pick one you like and go ahead.

I advise total newbies to make several application is the language of choice before starting to code for game development. Choose a game engine, make some applications in the language, then begin to use the game engine and language to code simple games.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

You shouldn't worry too much about design if Pong is your only experience yet. You don't learn programming from just reading books. I would suggest you just start coding a few more simple games and slowly increase the difficulty.

I just googled "easy game programming projects" and found this site with a bunch of nice suggestions. It also links to this site which has lot of neat games which I find even better for a beginner. Just pick one you like and go ahead.

My recommendation is to do both simultaneously. You need a combination of "book smarts" and real-world experience. One without the other is not going to be sufficient.

But you also need to scale up. Something like ECS applied across the board might be a little too huge architecturally and conceptually for a beginner. You need general experience with combining pieces of a semi-complex game implementation together before you can fully understand the reasoning behind ECS, and therefore how to apply a particular variant of ECS consistently to your project. But it might be useful to apply something that is kind of ECS-like to a particular part of your game, just to experiment if nothing else. Or when you notice a particular chunk of code is getting reused a lot, consider turning the consumers of that code into entities which are then given that reusable code as a component.

As for bad habits, I don't personally believe that a responsible coder needs to worry about developing these. As long as you are always reading, learning, practicing, and trying new things, you won't get stuck with bad habits. You might develop bad patterns temporarily, but they won't become stubbornly hard to get rid of. Using global variables isn't like getting addicted to nicotine. So don't be afraid of bad habits in the short term, but always be reflective of your own coding practices, and be on the lookout for ways in which you could improve.

Yeah i think i need more experience.. I should probably let this go and move on to the next project.

ooookkkkkaaaayyy

Advertisement

I advise total newbies to make several application is the language of choice before starting to code for game development. Choose a game engine, make some applications in the language, then begin to use the game engine and language to code simple games.

Its true that a lot of people recommend that to beginners like me. But i choose to learn the In's and Out's while making a game it will be really hard but in that way I believe will be much more rewarding even if its just a 2d game.

ooookkkkkaaaayyy

Do i need to start to learn good programming practice like Entity component system?

Where did you get the idea that this is “good programming practice”?
It’s usually overkill, especially for indies and hobbyists.

I read that ECS was base on composition.

So? Is there something about composition that makes it always better than inheritance? Or are you just trying to skip the learning process and reading a bunch of articles online in the hopes of skipping “bad” practices for yourself, and you found a bunch of people promoting composition over inheritance and blindly just accepted it as universal truth without considering context?
Hint: It’s the latter choice.
It’s exactly what you are doing right now. Instead of making mistakes, learning, and redoing, you are here asking how you can skip all the mistakes and avoid redoing things.

That’s basically the worst possible way to learn programming, and if I were to be bold enough to speak directly I would suggest it is a very bad sign as far as the future of your programming skills go.
If I have the choice between just picking on-my-own some new set of programming skills/practices vs. asking online for people to pick for me, the correct answer is always to pick for yourself, make mistakes, and learn 10× faster from them. Not only do you learn much slower if you never fail, having people pick for you means you never even learn why they chose this or that. How can you be a true programmer if you can’t make decisions for yourself?

It’s a bad sign for your future because:

#1: You simply aren’t going to develop very well as a programmer. It will take you 10× longer to get anywhere compared with just making mistakes and learning from them.

#2: It’s a very bad characteristic of a programmer. I simply can’t imagine someone who has this kind of tendency—to run away from failures and mistakes—ever becoming a real programmer, let alone actually good/successful at it.

I know why globals are evil without ever having been told. Why? Because I screwed up every one of my beginner-level projects with them, and I dealt with the mess they cause first-hand.

We all have to go through our own battles with bad coding practices. Those hardships make you street smart, not just book smart. A real programmer has to be both, so stop asking online for everyone to make your decisions for you, roll up your sleeves, and get dirty by yourself.

L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Making mistakes in real code is probably the single most valuable learning experience available to a new programmer.

Write more code! :)

It's also good to read articles, forum topics, etc. to learn from others, but unless you have the practical programming experience to properly understand and apply those lessons you won't be getting the full benefit.

- Jason Astle-Adams

This is just a follow up question. I havent created my own game. The only game I have created was just a pong clone. But I wrote with bad programming practice. Now i want to improve my programming skills. Often people would say that start programming, start creating a game without telling if you should follow a good practice or giving advice about the game design. My question is:

As a beginner in game development. Do i need to start to learn good programming practice like Entity component system? Or should i just move on and just create a game although this may mean a bad habit in coding??

Well, when you practice programming, you will improve your programming habits automatically. If you finished a game and already can tell that the code is bad, most probably you already found out what doesn't work. The next time you write a game, you'll write it differently most probably. You might not know yet what is the right way to do it, but by looking it up before you start your next project you will do it differently the next time around.... there, you just improved your coding.

Trying out new programming patterns on a bigger scale like the entity component system also shouldn't be to hard to do when you start fresh with a new game anyway. That is the beauty of small, manageable projects. Everything takes a shorter time to do, so you can fail and learn faster.

This topic is closed to new replies.

Advertisement