College is great, but leaves too little time for coding neat 3D things. There are so many things I have been tossing around in my head but have to little time to implement them all. Over my winter break I hope to code at least 40 hours a week or so and try out all sorts of things. The only downside is that Q3A comes out in a few days and i will be torn between coding and fragging.
This semester at college was a bit boring and frustrating. Next semester is pretty much all computer and math courses so hopefully it will be a cakewalk. I'm going to take Programming in Perl, Programming in Java, Programming Languages, Computer Graphics(if i don't get an A in this something is really wrong), Discrete Mathametics and a Philosiphy course. Hopefully since I can usually do Comp Sci projects quickly (and usually well) I'll have more time to code the good stuff.
Get it. Watch it. Love it. Especially Neon Genisis Evangelion. Good stuff. I've been doing some anime-ish drawing and low and behold I'm not that bad at it if I take my time. (Don't ask for pics. I'm not that confident) Myself and a friend of mine have been throwing around the idea of writing a cartoon rendering system so we can do anime type things. It's an interesting idea, but i don't think anime would really lend itself well to being rendered but I think other cartoons could be rendered. Watch Futurama sometime and you'll see things that I'm pretty damn sure are computer rendered cartoons. If anyone knows what software is used for Futurama (if any at all) Please let me know.
What a swanky program! I've been using it since around version 0.2 or something. The latest version is very nice. Check it out at http://www.planetside.co.uk/ It renders such pretty landscapes quite well, and the skys and atmospheric effects are breathtaking. Get it and play with it. You can even make skybox's using it. Check out the panorama below of the side pictures of a skybox I did with it.
Well since I bought a new computer, my old one has just been sitting around waiting for a few new parts and a purpose. And now it has one. Linux. For lots of reasons. 1) Most of my coding projects for school are done on unix boxes. I'd rather have my own machine than deal with slow servers and limited disk space. 2) I have lots of rants about Windows 3) I want to learn the unix enviroment better. 4) It is so much cooler to have 4 working computers in your room instead of just 3. =)
Lex and Yacc
A course I took this semester forced me to learn lex and yacc. (aka flex and bison) Neat tools for parsing and such. Max-code suggested parsing quake map files with lex and I think this is a damn good idea. Maybe i'll even rewrite MapCon with it so that I can easily handle the entites and such with out having to parse myself. No promises though.
Another course I took this semester really got me into assembly. Before I had just done some inline math operations and some other inline stuff when i did software rasterizing. Writing entire programs in assembly was actually quite fun especially recursion and trees(my group that i coded with didn't share my enthusiasm) Even though it was MIPS and not INTEL assembly I think i learned a bit more on some optimizations I can make in my C++ code to generate better resulting machine code. Also for this course I had to simulate a 4096 bit Carry Look Ahead adder. Snazzy stuff. Basically simulate how the ALU adds using AND's OR's and XOR's but in a much larger scale than 32 or 64 bits. I wouldn't want to have had to built it in hardware. What a monster to do add two numbers quickly. It's another wonderful example of simple is slow, complex is fast.
Being a Teaching Assistant
I am a Teaching Assistant here at RPI for Computer Science 2. It teaches C++ Programming. The extra money that it generates is nice but trying to teach someone how to code who hasn't done it before is somewhat frustrating. It's not really bad and hanging out in a room with 50 computers has its perks. It's just frustrating sometimes trying to explain things that are obvious about coding to me but are complex to others. If anything, having to help teach others has honed my skills in templates and polymorphism. I use both but not in really complex ways. Since I have to help others do it I learned it even better. What a concept, learn by teaching.
I played with them a bit, both cubic and quadratic. Forward differencing is damn sweet. I think it's the first time I've actually used calculus to do some serious 3D coding. Anyway, going from lots of mults in an inner loop to just a couple adds is a joyous thing for all coders everywhere.
My brother was ranting at me for making just 3D geometry engines and was wondering when I was going to make a character move in them. So I started thinking about skeletal animation and reading about it and it's not that bad. Just lots of linear transformations. I've been thinking of doing just vectors to represent bones and attach vertices of a model to them. With a little more work I could implement influence of multiple bones on vertices to make the model look better at funny angles of bone bending. Keyframed animation is nice, but I think I'd have an easier time actually creating one model and a skeleton than many many keyed frames.
Wheel of Time
Congrats to Warren Marshall and Legend Entertainment. Having read every one of Robert Jordan's Wheel of Time books I can attest to the level design in WoT being very close to what the book portrays and what I imagined. Especially Shadar Logoth.
The OGL/D3D/(and hardly ever glide) War. Stop it dammit. I've seen that all 3 API's can do equally impressive things. Find one you like and use it but don't rag on others for not doing it and don't proclaim the one you use is better. And I don't want any email on this topic. If you send it, it will not be responed to.
The How do I write a... question. Lots of people ask things like how do I write an RTS or and FPS. Nothing against the people that do ask. I encourage everyone who wants to do something like that. Just start small and work your way up. No one is going to write a smash hit as thier first game. Rome wasn't built in a day, as they say. Even though most of the information you need is out there, very rarely will anyone hand you everything you need. You need to read books, tutorials, and ask intelligent questions. Above all code and experiment. You will get better with every project you code.
In Microsoft VC++ 6.0 once in a while you get this nice thing I refer to as ICE. Internal Compiler Error. Since I have been teaching I've seen several of these. There error message is something like this: Do not pass go, Do not collect $200, I won't tell you where your code went bad, instead i'll tell you to call Microsoft for support. This is so annoying to track down, but when I see them it's usually caused by missing braces or missing semicolons after class declerations, or an error in a template definition or PCH creation points or a combonation of some of all those errors. ICE. ick.
Thats about it for now. Hopefully in Mid January I will have some nice things to show off. Or not. Whatever.