Google-apps
Hoofdmenu

Post a Comment On: C0DE517E

"The pitfalls of experience"

11 Comments -

1 – 11 of 11
Comment deleted

This comment has been removed by the author.

February 6, 2010 at 1:13 AM

Blogger Unknown said...

Great entry! Experience could be evil at times. Sometimes I think it was easier for me when I was starting programming and simply hadn't the knowledge that something is impossible... now as you said I sometimes reject solutions just because there is too many suggestions it won't work.

February 8, 2010 at 12:45 AM

Blogger DEADC0DE said...

Riddlemaster: and 99 times out of 100 you'll be right and more productive. But that one that we're missing, can be revolutionary.

February 8, 2010 at 9:12 AM

Anonymous Anonymous said...

I've been thinking about this a lot lately...

I feel that programming is about experimentation, about making mistakes and discovering new things. That it should be both fun and a learning experience.

However, I've discovered that in corporate environments many people are very conservative about programming techniques, languages, etc, and don't like to try new things.

That isn't to say they aren't good engineers, sometimes they are very good. However, I just feel like it misses the point of programming...

February 11, 2010 at 11:38 PM

Blogger Txkun said...

Nice post, very true.

I feel that a good programmer should treasure his or others experience but not be too attached to them.

Like when you have some old code that's just standing there. You have to be critical. But I understand too big companies, they are taking risks to complete project and having a too "creative" programmer can be dangerous and not useful.

That's why I enjoy the preproduction phase of a game. You can actually create something new. You have a few weeks or months to flesh out what will be your core design. The rest of the work... just grunt work, talking with people and waiting assets.

But after preproduction I think you can't wait for the genial idea. There are milestones and routine work.

February 12, 2010 at 4:15 AM

Blogger DEADC0DE said...

Txkun: true. The big key to experimentation is iteration time though. If you manage to achieve via tools, good code, good processes, a very fast iteration time, you can keep the creative thinking going on till the end of the project, and you can truly be agile etc... So it really depends.

February 14, 2010 at 12:53 AM

Anonymous rogerdv said...

I wouldnt rush to say that users are eager to find problems. When I play a game, the less I want to hit is a bug. But with a bigger user base comes greater chance to find weird things you could not foreseen.

February 18, 2010 at 3:29 PM

Blogger DEADC0DE said...

rogerdv: irony?

February 18, 2010 at 5:37 PM

Anonymous Rob Basler said...

Hi, sorry if this is off-topic but I can't find an email for you.

A couple of your posts say you don't need scene graphs. I've searched a little for alternatives to scene graphs but there doesn't seem to be much information on that.

I am writing a scene graph but I'm interested in what would be better, I'd appreciate if you could expand on why you don't need a scene graph and what the alternatives are?

Thanks.

February 22, 2010 at 9:50 PM

Blogger DEADC0DE said...

Rob: I've commented on that matter even on those original posts.

I guess you should ask yourself why are you using those scenegraphs in the first place.

For hierarchical transformations? That's stupid, very few animations require that, most objects are not animated anyway, so it's a waste of memory, cache, performaces to assume that they are.

And anyways animations are a matter for the game to manage, not the 3d engine (that should only care about skinning and so on).

So, what else? Maybe you want to use a scenegraph for culling. Could be, but are you sure the same graph-based culling applies to all your objects? I don't think that's wise either.

In general, I don't see why a 3d engine should care about the "object" abstraction at all. I think it should care about managing the graphics device, providing rendering services and utilities, managing multithreading, providing math and geometrical functions, providing reflection and serialization and memory management and so on.

The actual draw commands should be issued by some "renderable entities", managers of some given objects in the scene (i.e. "terrain" could be one of those, "players" another... the "players" one will probably care about animations, while the "terrain" will care more about culling, maybe you'll need something to take care of other concepts, like "lights" or "shadows" etc... each with ad-hoc, fast code...)

The scenegraph stuff comes handy in engines that pretend to be able to render anything you throw at them without specialized code. That sucks and those engines are not that general anyway (i.e. unrealengine or gamebryo etc... they're all making the same kind of games...). Anyway, even if for some weird reason you would need such "generality" I still would suggest that you'd be better served by creating a bunch of configurable rendering entities and have a sistem to specify that a given 3d source is to be loaded and rendered by a specific instance of one of those...

I guess I should ask you. Why do you need a scenegraph? Then after you tell me a reason to use it, I can prove it wrong :D

February 23, 2010 at 8:17 AM

Anonymous Rob Basler said...

Thanks for explaining. Oddly enough, in making my renderer platform agnostic it turned out somewhat like the renderer you describe. It is data driven and currently fed by a scenegraph but it is not as ruthlessly efficient as my cycle-counter associates would like.

I'll have to think more about whether I want a scenegraph at all now. I had been kind of hoping its utility would become more apparent once I started to exercise the renderer with larger volumes of content.

February 25, 2010 at 10:11 PM

You can use some HTML tags, such as <b>, <i>, <a>

Comment moderation has been enabled. All comments must be approved by the blog author.

You will be asked to sign in after submitting your comment.
Please prove you're not a robot