• entries
24
68
• views
31863

# Some thoughts and an update

696 views

Almost a month has passed since my last update. I've made some progress with the game, but first I have some thoughts I want to unleash to the world.

For some reason, after the coming of the new year I've been thinking about my skills in the one thing that I considered to do well in my life: programming. I've been programming since 13, and the admiration of elders and peers, even bosses and coworkers about my programming "achievements" had convinced me, once and for all, that I was a gifted programmer, or at least that I had the potential to be.

After 13 years, I realize that, sadly, it isn't so.

Sure, if I compare myself to the hordes out there that call themselves "programmers" then I guess I'm pretty good. I can write programs more involved than "Hello World" without literally destroying the world :). But when I compare myself to the more advanced posters in this forum and on #gamedev irc, the results are utterly disheartening. Even more so because those posters are on my age, even younger. It isn't an exxageration to say that, when I post code snippets on irc, every time the conclusion is that the code is awful and I'm trying to do things a bit(or a lot) over my head. Especially on irc, I've had some debates with several posters about technical matters that I now realize were a waste of time; I guess I wanted to convince myself that I was somehow a part of the "good programmers" on this forum, so I pretended that my opinion was as valuable and valid as their own. That was a mistake. I should have just listened, instead of arguing.

Now, even if I compare my skills, not with anyone in particular, but with what they should have been given the years I've been programming, the results are again not so great. Even though I've passed the Algorithms and Data Structures classes in my uni with good grades(years ago), I realize that my 'formal' education in them is pretty much zero. I've never read a book outside of school about them, and basically all I do is look up in the internet when I fail to find a library that implements a data structure for me. I know very little abour RB trees, graphs, and so on. Same for things like design patterns. I've dedicated at most about 2 hours on the GoF book, and I only use it when I can't remember something. I don't know many of the patterns, and the ones I know I suspect I don't know very well, because of my laziness. And let's just not speak about OO principles, which would be completely unknown to me if Washu hadn't hinted their existing a couple of years ago.

Now, in light of all this, I've reached some decisions. I will stop giving advices on the forums on serious matters; I can probably advise people how to fix their OpenGL lighting, but I don't think it would be helpful to spread my erroneous beliefs in matters such as design or data structures. And I'll try to avoid those useless technical arguments with members better than me, I'll just listen. Lastly, I've bookmarked some important books and other material for this year, mainly about CS,algorithms and data structures, and slowly, I will try to study them in my spare time so I actually become better.

End of rant. Now, about the good stuff. I've made quite a progress on God Complex since the last update. I can now load the environments in the game, render the characters, and have some gameplay(not AI yet,basically the human-controlled character can make some moves). I am trying to make the game as data-driven as possible, so the definition of characters is done in text files. For reference, here is the file that defines zeus, zeus.chr:

  name = zeusclass = Fighterskeleton = c:\zeus\zeus_all\skel.xsf#MESHESmesh = body c:\zeus\zeus_all\zeus.001.xmf#MATERIALSmaterial = c:\gods\zeus.mat#ANIMATIONSanim = stance       c:\zeus\zeus_all\stance.xafanim = run          c:\zeus\zeus_all\run.xafanim = walk         c:\zeus\zeus_all\walk.xafanim = punch_strong c:\zeus\zeus_all\punch_strong.xafanim = uppercut     c:\zeus\zeus_all\uppercut.xafanim = kick_strong  c:\zeus\zeus_all\kick_strong.xafanim = duck_enter   c:\zeus\zeus_all\Duck.xafanim = duck_idle    c:\zeus\zeus_all\Duck_idle.xafanim = jump_enter   c:\zeus\zeus_all\jump_Enter.xafanim = jump_idle    c:\zeus\zeus_all\jump_Idle.xafanim = jump_kick    c:\zeus\zeus_all\jump_and_kick.xafanim = kick_sweep   c:\zeus\zeus_all\kick_sweep.xafanim = duck_punch   c:\zeus\zeus_all\duck_punch.xafanim = punch_light  c:\zeus\zeus_all\punch_light.xafanim = kick_light   c:\zeus\zeus_all\kick_light.xafanim = hit          c:\zeus\zeus_all\hit.xaf

Here is a material file(zeus.mat):

texture    = 0 c:\zeus\zeus_all\zeus.bmptexture    = 1 c:\zeus\zeus_all\zeus_normal_map.bmptexture    = 2 c:\zeus\zeus_all\zeus_gloss.bmpglsl       = c:\gods\phong.glsl

And lasty, the phong.glsl file, which defines the vertex and pixel shaders to load, as long as setting some uniform values for the program.

vs = c:\gods\phong.vsps = c:\gods\phong.psuniform = diffuseMap 0uniform = normalMap  1uniform = glossMap   2

All this result that by doing LoadFighter("zeus.chr"), you get Zeus all done and ready for action :)

I had some trouble with normalmapping earlier this week. Especially on Zeus, there were some very weird shadows on the mesh, and there were problems with other characters, basically sometimes the bumpmaps seemed "inversed". At last, I found the problem deep inside Cal3D itself. Cal3D supplied the tangent vectors, and it was supposed to set tangent.w to 1 if the texcoords were not mirrored, and to -1 if they were. However, it just set it to 1. I fixed that, and now the lighting seems consistent.

Without further delay then, here is a screenshot:

I must say that while I've never considered you reasonable when it came to personal opinions, I never thought of you as an idiot when it came to programming. If you can get screenshots out, you've already placed yourself in the above-average category. Granted, it's good to know when you're out of your league in a technical debate so you don't waste time making yourself look like a fool, but don't sell yourself short either.

That's great that you have enough honesty and humility to take stock of yourself like that. And it's definitely handy to know when its better to keep your mouth shut. That's a mark of wisdom, right there.

I'm no gamedev guru either, but I know enough to know that being the best programmer/artist/whatever doesn't mean that you can't make something great. Often, the most impressive creations are made by the people who persevered, rather than those that had the "mad skillz".

Evil wears striped pants! I love the screenshot. Looking good. [cool]

It's not commonly pointed out, but I don't think you need to be a code guru to make games, just "good enough". A "good enough" programmer who works towards delivering an actual game within their capabilities will outperform a great programmer who instead concentrates on showing how great they are with fancy tricks. Even more so if said "great" programmer is merely someone who just thinks they're great.

Plus you've also got to factor in the whole ego issue. Some programmers really are top notch. Many more like to think they are. And there's some who downplay how good they really are. You're probably a better programmer than you think.

Case in point: I've occasionally made statements here that I wasn't comfortable with my current understanding of maths - which is true. But in my case that's because I have had a taste of really high level mathematics, got a maths degree, and was working with some really strong mathematicians (as in literally top of their field). I couldn't help feel inadequate and that I should have retained more knowledge from my university studies. However, posting that kind of comment here led to well meaning posters pointing out high school level help books and beginner books.

It's all relative. Don't let it get you down. Given you've got a great looking screenshot on a game you made yourself means you're probably quite decent at programming [smile].

It's hard to judge those sort of things. Well, hard to judge for most people... I'm dead sure that I'm a terrible programmer, so that's easy at least.

There's just so much involved in software engineering that even a 'good programmer' is bound to be terrible at a lot of it. Some of that translates to bad advice. Or like the one guy at my workplace who's the 'best' programmer, that means good advice but code that causes eyes to bleed. Introspection though is always valuable.

Don't beat yourself up.

I consider myself a good programmer. Dmytry thinks I suck. I know that there are copious areas of technical knowledge where I'm extremely spotty, but I don't worry about it. Being a programmer - not working as a programmer, but being a programmer - is a lifetime of continual learning, of recognizing deficiencies and shoring them up, of identifying new challenges and growing to overcome them.

You're on the right track.

One of the most wasteful and useless habits that is prevalent in both our community and our society is measuring and ranking people - this is better than that, he is better than her but worse than the other guy. It yields no value. So what if some guy knows more about the internal implementation of a hash map than you do; does that mean that in any given technical discussion he's always right and you're always wrong?

Like I said, you're on the right track and doing good things. You're learning to make progress on a personal project that has no release pressure, acquiring the discipline necessary to see things to completion. Despite my "sophistication," I've never done that for a hobby project, so you're arguably better than I am! See why rankings are meaningless?

Quote:
 Original post by Trapper Zoid It's not commonly pointed out, but I don't think you need to be a code guru to make games, just "good enough".

Yeah, I'm aware of that :) I just think it would be good for me to make a new start and brush off the idea that I'm already at advanced level. Also, although it has been seem a little weird to some people that I'm programming for 13 whole years and I'm still at...noobish(as they called it) level, keep in mind that until 2004 I was pretty much experimenting in solitude, without internet and very little access to books.

Anyhow, if there's anyone that has some constuctive criticism about the screenshot and the video, I'll be glad to hear it. Some very useful comments I've got so far are:

1)The normalmapping doesn't show much at characters. That is not entirely true, if you compare the normalmapping and just plain-old phong shading you'll see much of a difference, but it is true that the normalmaps depict just "big" things,like muscles and bones. I will transfer that to the artist and see what we can do, maybe add some detail with skin pores,wrinkles and such.
2)Zeus is...floating! This I know myself, it requires just a simple fix to position all the models correctly on the ground.
3)Some of the walls look flat. This is a matter of lighting more than anything, and it may be look even better when bumpmapping is implemented
4)The wall floor seems a bit low-res. I've already talked to the artist about this, and we will just tile/repeat the texture 2 or 4 times, so it gets more density.

## Create an account

Register a new account