Advertisement

Dealing with frustration

Started by August 08, 2017 10:41 PM
5 comments, last by Styves 7 years, 6 months ago

This is obviously not a topic regarding hard skills. But much more about how you keep going in graphics programming despite the huge frustrations involved. Or even about any tips on avoiding slumps and/or frustrating content in your workflow.

I would consider myself still really on the beginner side. I did some hobby-game-programming, text based and SFML-2D-Applications for about four years now, and I am trying to get into OpenGL programming for about 2 months now. I spent alot of time on octree-like datastructures for some kind of ARPG-Game, as well as in understanding quaternions and other math basics. So I got a fly-cam in a world, that dynamically renders blue triangles in the areas close to my camera position. Wuhey!

Yeah well, during the past 5 days, my progression basically stopped. I am writing my own model-format, with converter via assimp and importer in my game. At the same time, I tried to figure out how bone animation works. And even though I understood the basic concepts, everytime I sit down to get stuff done, I suddenly lose my motivation. It feels like there are thousands of different things I have to deal with, I feel like I am lost in some kind of vast ocean of "TODO"s, and whenever I think about where I want this program to go, the ToDo-List seems to expand even further.

I start becoming nervous and angsty, feeling like I´m just not made for this kind of stuff, yet, it is still really fascinating, and I am way to determined to give up right now. Yet I still have those hours and days, in which I just sit in front of my IDE and anxiously stare on my screen, unable to type a single line of code.

Is it only me? Or is this a common problem among graphic programmers, or even programmers in general? Is my project too big for a single person on beginner level? Do I have to keep everything I need to render a fluid 3d environment in mind? Or is it alright, to take some not-really-understood-but-working algorithms and rely on them? Do you set yourself goals for single days? What keeps you motivated? What do you do, once you are in one of those slumps? Taking a break? Forcing yourself to go on?

Id be glad if some of you could share your experiences.

I would say: "No project is too big, and no project is small enough". 

The key point is motivation, and it is different for every single developer. Some take few days off, or go for holiday. Some take few days off explicitly to stay with family. Some just switch to another project. ... Some even build rockets and other crazy stuff in real life.

How to keep yourself motivated? Well for start switch over to making something visual and short term (last item I did was playing with variance shadow maps ... seeing this in motion on your own D3D12 engine encourages you to work on!):

image.png.254d934c3416b0f3694a0510fcbf94f8.png

My current blog on programming, linux and stuff - http://gameprogrammerdiary.blogspot.com

Advertisement
10 hours ago, RousingNotion said:

Yeah well, during the past 5 days, my progression basically stopped. I am writing my own model-format, with converter via assimp and importer in my game. At the same time, I tried to figure out how bone animation works. And even though I understood the basic concepts, everytime I sit down to get stuff done, I suddenly lose my motivation. It feels like there are thousands of different things I have to deal with, I feel like I am lost in some kind of vast ocean of "TODO"s, and whenever I think about where I want this program to go, the ToDo-List seems to expand even further.

I can agree. I guess that, when you're alone, you should fix affordable goals. You should also change these goals quite frequently, once you discover that a goal you was thinking to be done quite easily will require other things to be done first.

I was making my own format too some years ago. And now it is completely deprecated due to advances in other areas. This is really annoying, for sure. And the most difficult part is to find/create/use 'assets' or any other resources that we can use easily, that will have a lifetime long enough before their deprecations and that will allow to develop our other stuffs (lighting, shadowing, parallax-mapping, lods...) with not too much harms. This is absolutely true for the model formats, this is also true for LODs, normal-mapping (including tangent-space and normal-map generation - these are so easy for studios (probably even little ones) but so hard for own developers to have), for soft-bodies, image formats and probably many other things that I'm not thinking at, at this moment.

 

"hackers and painters" by Paul Graham :) What you talk about is a bit like the white page syndrome isn't it. We all go through that, and yes TODO lists only grow, rarely shrink. Especially when you are alone.

To successfully get a personal project to reach a state you can be proud of, you need to keep scale down, leverage libraries, take shortcuts, try to avoid generic & robust "production-like" support of the stuff you do, go straight to your use case only. There will be time way later, to think about "but what about those IGP uses, or what about linux..." in the meantime if you have choices between "generic" and "specific", only consider cost.

Sometimes though, you can get both, for example: is it better to use boost filesystem for a neat platform independent code, or Win32 API to go straight to business ? Turns out boost FS is the cheaper option, and it's more generic only as the cherry on top of the cake. But that's not the case of most choices you are going to face.

If something bores you, find a library, if some specific problem is core to your passion, do it yourself.

@RousingNotion:

What you experience is perfectly normal. Programming - and especially game/graphics programming - simply *IS* an enormously wide and complicated field. Except for perhaps a few "genius" people with extremely high intelligence, learning all the stuff that is involved here just takes huge amounts of time, concentration and patience. I've been programming since about 20 years, have a M.Sc. degree in computer science, and I'm still a beginner in 3D graphics and learn new things almost every day.

If you want to learn all the details, just go ahead and stop worrying about slow progress and whether you might be "not good enough". You are. If you want to get results faster, consider lowering your ambition to understand *everything* in detail and pick a 3D engine that does the wearisome low-level stuff for you (but even then, it will *still* be difficult). Most importantly, do what you enjoy. If you feel like you need a break, take a break. Rome wasn't built in a day, too, after all.

 

On 8/9/2017 at 0:41 AM, RousingNotion said:

I am writing my own model-format, with converter via assimp and importer in my game. At the same time, I tried to figure out how bone animation works.

I'm assuming by "writing my own model-format", you mean an actual file format. Correct me if I'm wrong on that, because if so then this whole post is pointless. :P

For this I highly suggest that you don't start with writing formats. Especially if, as you said, you consider yourself a beginner. Model formats are not a simple thing to write up. You typically write a format after you know what requirements and data will be supported by it, and not the other way around. I.e. you should already know how bone animations work in your system before you write the format, which is what you're now realizing and struggling with.

If you do things in this way, you'll rip open Pandoras box and realize that there's way too much inside of it that you weren't aware of before, and you'll have to tackle all of it before you can finish your initial goal of writing the format.

Since your goal was the format, you're now staring at a tower of obstacles, no doubt these will trample your motivation. You need to focus smaller, on smaller goals with smaller complexity. A model format involves a lot of different data (textures/skeletons/geometry/etc) and is something you can only design up-front if you have in-depth knowledge and experience.

One approach you can take to get to a format, as a beginner, is to start with getting the assimp model to be loaded directly and try to get it running in your engine. Do it in whatever way works, dirty or not, it doesn't really matter. Just focus on learning and having fun getting things up onto the screen. Focus on each element separately, and eventually you'll have a complete setup. Once you've got that setup you can look back on it and examine how it works which will give you good idea of what your own format can/might look like. At this point you can write the converter and replace the assimp code with your new format.

TLDR; A "model format" is too big and broad/abstract a scope for your initial goal, you should break that down into small reachable goals, like "I'm going to write a format that has nothing but geometry", and then take small steps on it, "I'm adding textures", "I'm adding bone data", "I'm adding animation data", etc, and focus on each of those steps as a separate goal. Don't even think about "I want to write a model format", just think of the small goals and eventually your model format will come together and you'll feel a little more accomplished and a bit less overwhelmed. :)

This topic is closed to new replies.

Advertisement