ID:121254
 
Be sure to check out:
Programming Tips #1 - If Statements
Programming Tips #2 - Making Progress
Programming Tips #3 - Design
Programming Tips #4 - Datums
Programming Tips #5 - Organization
Programming Tips #6 - Procs & Organizing Code
Programming Tips #7 - Comments and Whitespace
Programming Tips #8 - Loops and Ifs
Programming Tips #9 - The Map Editor
Programming Tips #10 - Variable Names


When you first start programming, the problem you're trying to solve is "how do I write code that'll do ______?". Initially you're happy just to get something working, who cares what the code looks like. But when you try to develop a complete game this indifference can become a problem. As your code gets messier and messier, the project becomes harder to work on - you're more likely to write code that has bugs and they become harder to track down and fix. Eventually it'll get to the point where you're wasting a lot of time, don't feel productive, and are more likely to stop working on the project.

As a more experienced programmer, instead of asking "how do I do ______?", you should start asking "what's the best way to do ______?". In this post we'll bring together ideas from other articles to see why developers lose motivation and can't finish projects.


This article brings together ideas from many of the previous articles. You should be familiar with these articles before reading this one:

Programming Tips #1 - If Statements
Programming Tips #4 - Datums
Programming Tips #5 - Organization
Programming Tips #6 - Procs & Organizing Code
Programming Tips #7 - Comments and Whitespace
Programming Tips #9 - The Map Editor
Programming Tips #10 - Variable Names


If you're a hobby game developer like me then you make games because it's fun. A game idea pops into your head and you want to create it. The better the idea, the more motivated you are - you can work furiously on project. But there's also a problem with this approach:

If something's not fun, you won't do it.

It's the fun parts of game development that motivate you, but some parts of game development just aren't fun. These parts could be very important to the game, but if they're not fun you won't want to do it. There are two big reasons why something might not be fun:

It's challenging — Sometimes a challenge motivates you but sometimes it's just frustrating. If you have no idea how to go about doing something you might just avoid trying it.

It's tedious — Sometimes you can get yourself to do a tedious task because you know the outcome will be worthwhile, but it's still not something you'll look forward to doing.

Many of my programming articles are about how to program games in such a way that you'll avoid difficult and tedious tasks. If you don't follow the advice in my articles, you're more likely to run into difficult or tedious tasks. For example, if you don't give variables good names, you'll eventually get fed up and have to re-name all of your variables - this might be so tedious that you don't do it, and you end up limiting how long you can tolerate working on the project.


Game development shouldn't be a race where you're trying to complete the game before the code gets too messy. From what I can tell, for many BYOND game developers that's exactly how it goes. As the code gets messier and messier the project becomes less and less fun to work on. Most BYOND game developers just hope to get the game to a playable state before the code has become completely unmanageable.

These are the reasons why people have trouble finishing BYOND games. Either developers don't realize these problems exist or they don't realize the problems are within their control. Many developers assume that they're just losing motivation at the standard rate, but really they're losing motivation because their code is a mess so the project isn't fun to work on. This doesn't have to happen - these problems are all completely within your control.

By making an effort to be a better programmer you'll avoid lots of annoying problems - this will help to keep the project fun. Instead of dealing with annoying code issues you can focus on implementing and improving your game. You'll create better games and be more likely to finish them.
Very motivating! Good Job!
Can you make a tl;dr at the bottom LOL? Extremely lazy today.

Edit: Sat down and read it and I'm glad I did. It was a good read however, I have a problem with this line:"If you don't follow the advice in my articles, you're more likely to run into difficult or tedious tasks." This line bothers me. It makes you sound egotistical like yo're basically saying "Either follow my advice or fail." Which I don't think is fair.
If my advice was "you must do things this way" then I'd agree, but my advice is more loose than that. Instead of saying "name your variables exactly how I do", I say "develop your own variable naming convention". That might sound egotistical but it's true. My articles describe activities and habits that people use to avoid problems, so if you don't do these things your *are* more likely to run into problems.

Also, if you don't do these things you're not bound to fail, you're just more likely to fail. That's why this is such a problem. BYOND developers are able to have bad programming habits but still be mildly successful. If these developers always failed they'd clearly realize they must change their habits. Because they occasionally feel successful they stick with their bad habits and attribute their failure to something else.

Can you make a tl;dr at the bottom LOL? Extremely lazy today.

This was one of the shorter articles! =)
Forum_account wrote:
If my advice was "you must do things this way" then I'd agree, but my advice is more loose than that. Instead of saying "name your variables exactly how I do", I say "develop your own variable naming convention". That might sound egotistical but it's true. My articles describe activities and habits that people use to avoid problems, so if you don't do these things your *are* more likely to run into problems.

Also, if you don't do these things you're not bound to fail, you're just more likely to fail. That's why this is such a problem. BYOND developers are able to have bad programming habits but still be mildly successful. If these developers always failed they'd clearly realize they must change their habits. Because they occasionally feel successful they stick with their bad habits and attribute their failure to something else.

Can you make a tl;dr at the bottom LOL? Extremely lazy today.

This was one of the shorter articles! =)

I won't disagree because for the most part it's true and for the fact I only read probably 2 of your articles because reading anything that is long and not a book bothers the hell out of me. Which is why I requested a video. And yes, I only read this one because it was short lol.
I'd love to re-code Hazordhu considering all the mistakes I've made while doing it the first time. Of course, it's been a way too tedious a task for me or F0lak to take on. To me, every time I try starting a design for the core engine, I remember all the things I've done wrong the first time and try to do things differently. Unfortunately, by doing things differently, I often end up doing what I did wrong before: experiment with new techniques (where I have no idea what I'm doing), over-complicate things, or just take too long trying to figure out the "most efficient way to do things."
From my short experience with game development, I believe you are dead on when it comes to developers losing motivation due to being unorganized.

I will use myself as an example: not too long ago my code would be a mixture of module and non-module programs (mostly the latter) and you would have to roam through numerous .dm files just to understand what is going on. Unfortunately, I would quickly lose motivation within a week or two and then move onto the next project. I would literally program as quickly as I could just to get a release out, as I realized what the unavoidable conclusion would be.

Once I started making my projects module and started following some of your advice (such as keeping the code organized), I saw an increase in motivation. I have been working on the same project for little over a month now and I no longer have those urges to release pointless bits of information or small demonstrations just to get that small boost in motivation. Your articles are helpful, keep up the great work!
My motivation(or rather lack there of) comes from the fact I was programming like 4 games at a time then my computer exploded and I said screw it. Make an article about how to get motivated after that and ill buy you a cookie.
Enzuigiri wrote:
It makes you sound egotistical like yo're basically saying "Either follow my advice or fail." Which I don't think is fair.

Did that hurt your feelings? Would you prefer he used baby talk?
All of these articles have been useful to me! Keep them coming. I can't tell ya how much I've learned from these or how much I have been motivated by them! Thanks FA.
Kaiochao wrote:
.....

You forgot to say how neither one of us ever dedicates time to doing it. :)

Good read, f_a. More pl0x.
Oh, there's another problem that discourages an idea for me which really probably shouldn't be as much of a problem as I make it, and that's originality. If it's been done before by something really well-known, I don't want to look like I'm copying ideas from it.
Sorry for the lack of responses from me, I was busy with Thanksgiving.

It's good to hear that people can relate to this article. I've seen it happen so I know it's an accurate observation, but it's good to hear people admit to experiencing this problem - it really is the first step in fixing the problem.

F0lak wrote:
Good read, f_a. More pl0x.

But this was the capstone article that signifies the end of the set of articles =)

I'm sure I'll post some more articles but the next thing I'd like to work on is a set of videos about BYOND game development.

Kaiochao wrote:
Oh, there's another problem that discourages an idea for me which really probably shouldn't be as much of a problem as I make it, and that's originality. If it's been done before by something really well-known, I don't want to look like I'm copying ideas from it.

I understand where you're coming from, but I say "screw it!". I try not to focus on being original, I just make sure I put my own twist on things. If you can take ideas from other games and put them together in a way that's fun and interesting (in different ways than the original game), there's no harm in copying ideas.