Members - Reputation: 593
Posted 11 June 2012 - 07:57 PM
I'm sure my experiences with it aren't the same as everyone elses but we all do get it sometimes. What kind of tricks do you guys have to get yourselves out of a slump? or do you approach it in a different way, like taking a break and coming back refreshed or something.
Does anyone have any advice for me? I'm interested to see some suggestions from a general perspective of motivation and laziness as well as programmer-specific suggestions and everything in between.
I have one idea that I thought of as I was typing this post, working with other people. It's really easy to lose that boost of productivity you get when your working on a new project and it's still all fresh and exciting to you when you're working alone. No matter how cool it seems at first, you can only run it through your head so many times and have so many thoughts about how awesome it's gonna be before it gets boring. When there are actually other people involved to interact with and get feedback and whatnot from it's a lot easier to stay motivated, not to mention more fun. Just the fact that there is someone else to talk about it with does a lot to keep it new and exciting, and the increased production speed makes it easier as well because you get to see the game forming quicker, it seems like your getting rewarded more for the same amount of work put in by you which increases your motivation to do that work.
That's the end of my rant, post your ideas and vent your laziness woes below. And if there are any like-minded beginners out there who wanna work together and keep each other motivated post or email me(firstname.lastname@example.org), doesn't matter if your a programmer/writer/designer/artist idc.
Members - Reputation: 700
Posted 11 June 2012 - 08:31 PM
I think my main issue is that the codebase just grew too big for its own good, and enjoying writing engine-code and being a perfectionist, it's never "good enough" and I always feel like I need to "fix things" or clean them up. But of course, a new "solution" is only good until I add the next feature and promptly realize the old solution is not optimal anymore with the new changes, so I need to fix things AGAIN. It's a viscious cycle and hampers all other efforts.
This was fun in the beginning when things were small, as I was effectively experimenting and prototyping my code and engine structure. But NOW, with so many different components and my game logic relying on all of them, it just takes so much time to change anything major, and feels like a waste; I spend more time re-writing, copying and renaming stuff than actually coding ><
(As an interesting anecdote, I did aim for minimal codependence and abstract away my graphics / audio / physics / windowing etc. which in turn is biting me in the butt! You know, if I just hard-coded BulletPhysics I could just directly modify my logic code that interacts with it. But now, I need to edit my logic code, then the abstraction layer itself (interfaces etc.) AND only then the actual BulletPhysics implementation. Nuts!)
Postmortem: one must die - Political narrative-adventure game playing an Agent of Death who must take ONE life that could change the fate of a conflict-torn Nation!
Check out my DevBlog for news on the next title!
GDNet+ - Reputation: 613
Posted 11 June 2012 - 09:38 PM
For starters, rethink the scope of your projects and then shorten them by a lot. From the sounds of it, your path to "joy" is too long right now and everything is starting to seem like real work. Working on a few smaller endeavors, one at at time, and experiencing the feeling of completion (more often) is what you need most likely.
For example, keep it simple, make a your own version of space invaders, or asteroids with a twist; remember, keep it simple and small - doable within 2 - 4 weeks, nothing major. More importantly, and to legitimize the sense of completion, always add polish to these small projects i.e, a splash screen, menus, scoring system, and ensure that you can win or lose. By doing so, you will at least have a "finished" project (game) regardless of scope; finishing is the key.
Furthermore, once you have completed a couple of these projects, begin to slowly increase the scope of your projects until you eventually find your burnout point again (demotivation setting in) then scale back accordingly, wash, rinse, repeat. Eventually, the goal is to build up your mental endurance and stick-to-it-iveness in addition to increasing your dev skills and confidence along the way.
Admittedly, and from personal experience, motivation seems to be tied directly to skill level and knowledge (frustration factor), the more you know, the more you can do, and the faster you can get to the finish line....joy & more motivation for the next project.
Anyway, good luck because Game Development is a grind - and you can only grind small chunks with "dull" blades .
.... One day soon...you will be a Ninja! (Corny? yep, just trying to cheer you up mate)
Edited by a_insomniac, 11 June 2012 - 09:41 PM.
Coder and 3D Artist
Electrical Engineering Student
Members - Reputation: 518
Posted 11 June 2012 - 09:52 PM
Also like you said, working with others (motivated others ...) definitely helps.
Members - Reputation: 160
Posted 12 June 2012 - 10:40 PM
Make yourself feel guilty anytime you're NOT working on your project... Specially if you do something "fun" like playing a game or watching a movie.
Eventually to remove the guilt you'll start working harder!
Crossbones+ - Reputation: 9887
Posted 13 June 2012 - 01:21 AM
I also am most productive between 11pm and 3am (don't ask me why, I don't know). Maybe you should try and find when you are most productive and focus most of your work there.
I can totally relate to Koobazaur's post. I am a perfectionist too and it's playing tricks on me. Because it looks great in theory but then you try to implement it as nicely as it looks on paper and it just comes out terrible, so you refactor endlessly and eventually give up. But it's possible to get out of that cycle! I call it "cobbling" - you just stop trying to do everything by yourself, and for every little thing that's bothering you, you plug in an existing library, effectively cobbling up your program from dozens of existing code bases. Once everything sort of works, you start replacing the libraries with your own code one by one when needed. It worked for me.
The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.
- Pessimal Algorithms and Simplexity Analysis
Members - Reputation: 2244
Posted 13 June 2012 - 03:34 AM
Now, when I'm not in a rush, I can't force myself to implement a feature for the same game that would take about 10 minutes to implement. I'm motivated to get the thing done, but then I open the IDE and say ffffffuuuuu. I'm more motivated to do the dishes or to just fall into total boredom.
Members - Reputation: 3275
Posted 22 June 2012 - 12:54 PM
Anyways, let's look at the typical scenario:
You're sitting at your computer. You want to make a game and you've gotten a really good start on it. You've got thousands of lines of code. It compiles, and it's about 80% complete (some features may not have been implemented yet), but you've got another 70% of the way to go. That 30% is pretty cool, but the stability and design could always be better. Getting back into the project would be a bit of a chore since you don't know where you left off and you don't have a good place to pick up from. The work remaining to be done might be called "grueling" but its really not impossible in any technical sense. Thus, you get a sense of foreboding. Since you're not being paid by an employer to work on this project, you can slack off on it as much as you want without being held accountable for it. There's also a huge collection of video games which you like to play a lot. They're just mouse clicks away. You've got an idea for a very interesting game strategy you want to try out in one of your games. There may also be some tempting websites with a lot of updates and interesting content which you wish to look at (be it facebook, reddit, news sites, forums, etc). The amount of effort and the pleasure gained from starting up your IDE is extremely unfavorable in contrast to the seductive distractions available just a few mouse clicks away. We're human beings and quite weak willed (at least I am), so we give in easily. We'll say to ourselves "Well, I just don't feel like working on project XYZ right now. I'll just do this other thing which is more fun. I can work on the project tomorrow!". Then, you end up saying the same thing tomorrow, and the next day, and the next day, gradually staying up later and later until you're cursing the early morning song birds. It's time to go to sleep, you're exhausted, and certainly can't get any work done now. You hate yourself and would bang your head or punch yourself in the face if it didn't hurt. A day was wasted and you got nothing done on the project. You clench your fists in fury and resolve to be more strong willed tomorrow, only to repeat the cycle over and over again. This just isn't working. You can't motivate yourself to even get started. Do you throw in the towel and give up and consider the project a complete failure? Personally, I'm too damn stubborn to give up even when I really should (like in my involvement with MLM schemes). I hate failing, so its back to thinking about the project. I gotta finish this damn thing even if its the last thing I do!!! So, if you're like me, you open up the IDE, compile the project, play around with it for a bit, and find a small tweak you want to make or an interesting feature to add. Before you know it, you've got your groove music going, fingers furiously typing away at the keyboard, and code is being churned out hundreds of lines at a time. You compile the project, the feature works the first time, and its freakin' awesome! Suddenly you've got this burst of energy to keep charging forward on. You're writing code like a mad man, getting shit accomplished, and breathing new life into the stale project. You lose track of time again and before you realize it, those damn birds are chirping again and the early morning light is creeping in through the window. You suddenly feel exhausted because its time to sleep.
This is where you STOP. You open up Notepad++ and write a detailed note of what you're currently working on. Leave yourself a SMALL bug to fix with an idea on how to fix it. You could spend another 30 minutes fixing the bug correctly if you wanted to, but don't. Leave that for tomorrow you! When tomorrow you wakes up, she/he will be excited by all of the amazing progress which was made yesterday during the coding jam. Tomorrow you will wake up the computer, see the note you left yourself, and then start going about fixing that 30 minute bug. By the time the bug is fixed, you'll be back in the groove and working on writing the next 1000 lines of code (+/- a few hundred lines)!
Here's something that I've observed: Working hard is an infectious mental state. What triggers it in you? Being in the presense of other hard working people helps. Starting your day with a strenous workout helps. Drinking coffee (or your energy drink of preference) helps. Maybe a few minutes of meditation to steel your resolve to get a lot done will help. Whatever works for you, you want to get that 'work hard!' snowball rolling!
Another huge motivator (for me at least) is being able to show other people the progress of the project at periodic intervals. I hate to admit it, but I thrive on feedback. It also holds me somewhat more accountable to making progress on the project. I don't want to go up to someone and say "sorry, I've been a bum all week. I have absolutely nothing new to show you."
If you do it right, coding on your hobby project will be ten times more interesting than what any distraction can throw at you. You're breathing fucking life into new worlds which only existed in your imagination!!! You're like a painter with a canvas, working on a masterpiece and taking care to ensure that every stroke is perfection, except your brush is code and your canvas is your game. Leonardo DaVinci would be jealous that he didn't get to have a compiler to create the incredibly immersive worlds you're making. Your game could be posted in the vaulted ceilings of the Sistine Chapel if you can finish it.
It's easy to get burned out by a furious pace of work fueled by passion. Sometimes, the best thing you can do for your project is to take measured breaks. Take a weekend off. Give yourself a few hours to unwind and relax at the end of the day. Take care of yourself, mentally, physically, socially, etc. Remember to eat.
If you absolutely can't pull yourself to open up your IDE and start writing code, the next best thing is to work on your game design. What can you add? What can you take away? How should the game look? What should the player feel in game situation xyz? what interesting strategies would you use in your game? What is the story you're telling? What is the story underneath the story?
If you've iterated on that one too many times, it's time to look at the business side of the game. How are you going to publish it? Who are all of the publishers? What are their terms and conditions? How are you going to market the game? How are you going to connect with your players? Can you release screenshots, videos or betas to get feedback and drum up some interest? Are you planning to build a website to support your game when its released? What's the plan for that? Will your game let players interact with each other in some interesting way? How will that work? etc. etc.
What you don't want to do is fall into the trap of a routine of slacking off. It's very hard to break those habits in yourself, so don't let them get started. Figure out how to get that infectious working spirit going again and then choke it until it produces your game.
Also, don't ignore the humina-humina about project scope. You don't want to be the sole developer working on GTA IV because that project will never get completed by 99.9% of people. Keep your projects achievable for the team size working on them! You can work on those larger, more ambitious projects when you've got the team size which can create them, the funding to pay them, the experience to build the games, and the drive to see them through to the very end, come rain, snow or hell.
Edit: Also, you HAVE to break your habits of laziness/slacking off, no matter what. If you were a business owner, you could fire the cronically lazy employees but it's NOT possible to fire yourself (I would have done that many times). You have no option but to fix yourself.
Edited by slayemin, 22 June 2012 - 01:03 PM.
Members - Reputation: 2993
Posted 23 June 2012 - 12:06 PM
I also find that keeping the game simple is also very important. It is very easy to add too many features and end up with a huge project that never gets finished.