• Advertisement
Sign in to follow this  

Perfectionism and Programmer's Block

This topic is 1346 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Advertisement

I know too much as well. But about optimization. I made a game and it ran rather poorly on an Android device. I now know what to do to make it run fast on an Android device. So every time I add a feature, I ask myself beforehand:

 

-How much performance will this take?

 

It doesn't make it any better that I'm trying to make one of the more demanding 2D games, one that is fast-paced with a lot of track.

 

But programming itself isn't what's weighing me down - it's design and optimization.

 

In your case, I might recommend trying to make anything. Making things will hopefully get you in the right groove.

 

I knew a guy with similar game making experience to me. We used the same tools, etc. But the one of us doing the most productive thing came down to who was "hot" at the time. "Hot" is a term I use for continually doing something and somehow, in some unexplainable way, doing something constantly can build your mind up for a time to do it even better.

Share this post


Link to post
Share on other sites

I actually just signed up to throw in a 'me too' post, as when I read your post Shane I immediately thought, "Hmm, that sounds familiar." as I have that exact issue. I wouldn't say I know all the answers, but I know enough to identify red-flags and see good approaches. So I often spend a lot of time stuck in design-land not really making meaningful progress, or, I implement some pattern or another and then change my mind and refactor it, only to revert it later. Either way, the end result is not much progress. Ironically when I was starting out I made 3 game prototypes, they are fairly diabolical from a code perspective, but hey, there they are, running, working, finished.

Share this post


Link to post
Share on other sites

 Just getting into OpenGL 3+ has become a daunting task, trying to implement a highly versatile rendering system capable of everything I can't forsee.

Analysis paralysis hits everyone eventually. If you can't forsee the need, don't worry about accounting for it. Worry about what needs to be done, or as ApochPIQ said, focus on the actual requirements of the project. If at a later date you need something done differently, make a note in your code, and return to it in a later revision.

Share this post


Link to post
Share on other sites

I think that there is merit in thinking very carefully about what you do before you do it, just to stress this point. However, it is true that you cannot foresee what you will eventually ask of your code, so the most important thing is to keep to good design principles. It becomes structurally much easier to later modify the flow of execution if everything is nicely encapsulated, and even change implementation details.

 

But best choose one or the other. Either spend an inordinate amount of time planning and thinking before writing anything, or do the basic ground work, and get started - and quickly identify what might need to be changed. That way you make the best use of your time :)

Share this post


Link to post
Share on other sites

I will offer another suggestion.  

 

http://amzn.com/0321146530

 

And older book, but it can really help you only write what you need.  If you add some unit tests to your stuff, even if you don't test drive everything (because that's about impossible for the graphics part) you will still be able to re-factor your code when you find the design mistake.  And its probably something new to learn, so that makes it fun.

 

Honestly, once you get enough tests in there, you don't even care about making mistakes.  I find myself all the time doing something I know isn't going to work down the line, but because I've tested everything, I can fix it later. 

Share this post


Link to post
Share on other sites

I can relate to this. Since I also fall into this block from time to time I can't give you the perfect cure but what helped me personally in dealing with this is getting busy with other stuff. The urge to focus on secondary stuff too much can be seen as a wrong/deceitful perception of time. In the moment of coding you probably have a lot of time on your hands and there isn't a perceived deadline which ultimately causes any project to fail but in reality there always is (life changes) and you know it. Keeping you busy with various things might remind you how badly you want at least your primary functions to work and eventually it will help you to use your (now perceived as limited) time to make any progress.

 

When in a pinch you will naturally decide to (given that you actually intended to make a whole game in the first place) make a badly looking/performing but complete game with horrible code rather than a well-concepted, feature-rich ressource-management system with fast performing gl calculations that you can only use in a demo-room.

 

If you find that the program you just completed sucks you can always make another one (which will most certainly be better).

Share this post


Link to post
Share on other sites


You'll have to experiment to find out how you can teach yourself that definition. No-one can do it for you. For me, it works to consider each new project is a piece (not a whole) that I need to get closer to the "perfect" program. Part of that approach is to believe that perfection is avoiding mistakes;

 

Talk about profound! Life lesson here! 

 

It is so true what you say about procrastination not just being laziness. In fact, before I read this post I have been wondering why it is that I can't finish a project. And I hardly even start a project, because I have this feeling it is not going to be exactly what I want it to be, and then I am going to scrap the whole thing. So indeed, I have been doing parts here and there as the ideas come. Slow process. I mean, all my little projects end up turning into AAA game ideas. So another thing I see is lack of focus

 


I would add that you have to learn to accept that perfection is a process, not a goal.

 

Awesome quote!

Share this post


Link to post
Share on other sites

Same problem on hobby projects. Lots of time wasted on figuring out the perfect way and when it becomes obvious that a perfect way doesn't exist, it really kills my motivation.

 

Unfortunately at work nobody will care if you're motivated or if you're perfectly happy with your solution. Things need to get done and they need to get done in time. It tends to help on focusing on the _actual_ requirements. Look at what you really need, not at what you'd like or what somebody might find nice to have. The more complicated you make a problem in your mind, the less likely you'll ever start working on it.

 

Maybe in your case it already helps to set yourself a fixed deadline by which stuff has to work _somehow_. Most of the time, keeping in mind that your first implementation might be ugly and will be changed later can help with better design, because you want to isolate that "ugly" part from the rest as much as possible to keep it from having too much influence on the rest of the code.

Share this post


Link to post
Share on other sites


It is so true what you say about procrastination not just being laziness. In fact, before I read this post I have been wondering why it is that I can't finish a project. And I hardly even start a project, because I have this feeling it is not going to be exactly what I want it to be, and then I am going to scrap the whole thing. So indeed, I have been doing parts here and there as the ideas come. Slow process. I mean, all my little projects end up turning into AAA game ideas. So another thing I see is lack of focus. 

 

I feel the same thing, but i have begun to understand that it's on personal projects that i get this feeling. When there is a deadline, i forget everything and i am just developing. So what you need to do, is focus on some small projects and force yourself a deadline. 

If needed, start a blog or something public to declare your goals and update your progress. Thus, you will have another reason to keep going. Hope it helps!

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement